samedi 22 mai 2010

Compositing avec Blender pour X-Plane (Node Editor)

Composite node avec Blender pour X-Plane

Rarement utilisé par les développeurs X-Plane, le module de compositing de Blender peut se révéler assez pratique pour nos projets de création d'avions mais aussi de scènes. Je vous propose aujourd'hui un exemple très simple pour vous faire découvrir les possibilités qui s'offrent à nous. Considérons une scène dont les textures sont de 1024 pixels de coté. Vous souhaitez optimiser cette scène et donc utiliser des textures de 2048 pixels pour limiter les appels de textures par la carte graphique.
Une première approche serait de créer un nouveau fichier dans votre programme 2D et d'y installer 4 calques (4 textures de 1024 pixels de coté). Je vous propose de faire la même chose... avec Blender !

En fin de billet, le fichier compNode4Text2X2.blend est disponible en téléchargement libre pour une utilisation immédiate. Néanmoins, vous trouverez ci dessous quelques explications concernant le creation de votre premier compositing.

  • Création d'un nouveau dossier
  • Glissez dans ce dossier les 4 textures à fusionner.
  • Créez un nouveau fichier Blender
  • Préparez votre interface de travail : une seule fenêtre "Node Editor" est nécessaire.
  • Dans la fenêtre "Node Editor", il vous faudra valider l'option "Composite Nodes". 3 nouveaux boutons apparaissent :
  • "Use Nodes" : A Valider ; nous indiquons à Blender que nous allons travailler avec des nodes
  • "Free Unused" vous permet de supprimer tous les nœuds non utilisés dans le compositing
  • Et "Backdrop" qui nous permet de visualiser notre travail en arrière plan.

Par défaut, deux nœuds sont présent. Un nœud d'entrée "Render Layer" et un noeud "composite". Mais dans cet exercice, nous n'utiliserons pas de passes de rendu par Blender mais uniquement nos 4 textures à fusionner. Donc nous ajoutons 4 nœuds d'entrée (1 par texture). Pour chacun de ces noeuds, nous chargons une des textures, Chaque nœud d'entrée est lié à un noeud "Translate" qui repositionne la texture, Des nœuds "AlphaOver" (équivalent à la création d'un nouveau calque dans votre éditeur 2D) nous permettent de combiner les entrées. Le tout est injecté dans un noeud "Composite" (calcul du résultat) et d'un noeud "Viewer" pour visualiser notre travail en cours. On retrouve nos raccourcis clavier habituels dans la fenêtre "Node Editor" à savoir :

  • Barre d'espace pour ajouter un noeud,
  • G pour déplacer un nœud sélectionné,
  • Shift D pour dupliquer une sélection...

Bref, avec une maitrise minimale de ce module de compositing de Blender, il est possible de se créer de nombreux outils pour nos créations et de les sauvegarder en tant que fichier Blender pour les utiliser dans un autre projet. L'exemple proposé ne vous semble pas convainquant ? C'est normal ! Fusionner quatre textures n'est pas bien compliqué avec un éditeur 2D. Mais si, comme moi, vous souhaitez gérer une texture regroupant quelques dizaines d'instruments, cela commence à devenir très intéressant. Une modification graphique sur un instrument à faire ? Il vous suffit de recharger la texture dans le noeud de l'instrument corrigé et de lancer le rendu (F12). C'est fini !

Le fichier .blend est disponible ici : compNode4Text2X2

mercredi 19 mai 2010

Comment créer un avion pour X-Plane ?

Il est temps de mettre un peu d'ordre dans ce blog... et donc de proposer aux visiteurs une page plan où seront présentées, dans l'ordre chronologique, les différentes étapes de la réalisation d'un avion pour la simulation aérienne X-Plane. L'illustration proposée ci dessus est donc ma première approche.

J'ai distingué 10 étapes principales, chaque étape devant être terminée et validée avant de passer à la suivante.

1 - Documentation

Difficile de commencer autrement ! Mais sans un certain nombre d'informations, ce n'est même pas la peine de commencer un projet.
Pour le modèle 3D extérieur : des plans des vues de profil, face, dessus, dessous, des sections du fuselage et des ailes accompagnées des principales cotes d'encombrement (envergure, longueur, hauteur... ).
Pour le cockpit 3D : photos, illustrations et le manuel de vol... quand c'est possible !
Pour les textures : des photos, profils couleurs, des vidéos quand c'est possible ! Un examen minutieux des vidéos permet de mieux déterminer les propriétés des surfaces. Sont-elles lisses, mates ou brillantes ? Est-ce de la toile, du bois, du métal ?
Pour les différentes versions : un historique de l'évolution de l'avion. Il est important de bien comprendre et différencier les différentes versions de votre avion. Je dois dire que pour le Boeing B-17, j'ai fait l'impasse et me suis lancé, bille en tête, sur la variante b-17G. C'est dommage, car il ne sera pas possible de décliner facilement les nombreuses versions du modèle. Une erreur de débutant !
Pour le modèle de vol : Le manuel de vol et une foule de datas... pas forcément faciles à trouver et à comprendre ! :)

Une situation idéale ?.... le libre accès à un avion réel existant !
Si vous êtes en plus pilote de l'aéronef que vous souhaitez modéliser, c'est un plus indéniable... mais qui ne doit pas être si courant ! :)
A défaut un pilote, un mécanicien connaissant l'avion pour préciser ou corriger le travail en cours, c'est déjà beaucoup !

Modéliser un Airbus ou un vénérable Voisin ne présentent pas les mêmes challenges en termes de recherches d'informations.

2 - Références

Pour modéliser correctement notre avion, il faut disposer des références dans l'espace de travail de Blender. Ces références nous serviront de guides durant toute la phase de la modélisation. Le plus souvent on utilise la fonction "Background image" pour intégrer un plan de l'avion. Pour ma part, j'utilise une autre méthode bien plus pratique à l'usage mais qui demande une sérieuse préparation.
Il s'agit de créer un fichier bitmap de format carré de 2048 pixels ou 4096 pixels de coté (résolutions à choisir en fonction des capacités de votre ordinateur).
Sur ce Bitmap seront disposés toutes les informations nécessaires (profil, face, dessus, sections fuselage,...). A la même échelle ! Sinon, ça marche pas ! :)
Puis calcul de la résolution en utilisant par exemple l'envergure de l'appareil.
Enfin, une grille de résolution 1m X 1m est appliquée. Grâce à elle, il n'y aura plus de calculs ou de conversions à réaliser dans Blender.

3 - ACF minimaliste

Création ou utilisation d'un acf existant pour les tests visuels dans la simulation aérienne X-Plane. Très important ! :)
On peut soit le créer dans PlaneMaker soit utiliser un acf existant d'un autre avion à l'encombrement comparable.
Cet acf minimaliste répond à une seule exigence : valider l'aspect visuel de votre création dans la simulation aérienne X-Plane.

4 - Modélisation et dépliage UV

Pour un monomoteur monoplan :

  • Réalisation de trois fichiers blender : l'extérieur, l'intérieur et les instruments,
  • Test dans la simulation X-Plane en fin de modélisation : vérification de la bonne apparence des volumes, orientation des normales, lissage, transparence
  • Dépliage UV des 3 fichiers
  • Test dans la simulation X-Plane en fin de dépliage UV : utilisation d'une texture temporaire "UV grid", contrôle de la résolution de la texture, limitations de déformations
  • Exportation des gabarits de dépliage

5 - Textures

Pour un monomoteur monoplan :
  • Création de 3 textures de diffusion pour l'extérieur, l'intérieur et les instruments,
  • Test dans la simulation X-Plane : vérification de la bonne apparence des couleurs, lisibilité des marques d'identification...
  • Création de 3 textures de diffusion nuit pour l'extérieur, l'intérieur et les instruments,
  • Test dans la simulation X-Plane : vérification de la bonne apparence des couleurs, lisibilité des marques d'identification...
  • Création de textures normal pour l'extérieur
  • Test dans la simulation X-Plane : vérification de la bonne apparence des reliefs superficiels
  • Création d'une specular map
  • Test dans la simulation X-Plane : vérification de la bonne apparence des surfaces (mat/brillant)

6 - Séparation des objets

Avant la phase d'animation, il faut séparer toute les surfaces mobiles et repositionner leurs centres. On en profitera pour créer deux fichiers blend : un statique et un dynamique.
A la fin de cette étape, nous disposerons des 6 fichiers suivants :
  1. plane_ext_sta.blend
  2. plane_ext_dyn.blend
  3. plane_int_sta.blend
  4. plane_int_dyn.blend
  5. plane_inst_sta.blend
  6. plane_inst_dyn.blend

7 - Animation

Rien à dire pour le moment... Work in progress !

8 - Modèle de vol

Idem !

9 - Distribution

Idem !

10 - Updates et support

Malgré tous vos efforts, il subsistera vraisemblablement des bugs, des erreurs ou des maladresses. Des utilisateurs de votre création ne manqueront pas de vous demander d'intervenir sur l'aspect graphique, une animation ou sur le modèle de vol. Un paintkit peut être envisagé pour permettre à l'utilisateur de réaliser sa "livrée" personnelle.
Il faudra aussi tenter de suivre le développement de X-Plane. Je dis bien tenter ! :)

Voilà, c'est comme cela que j'envisage le flux de production.
Mais vous pouvez avoir un autre avis sur ce sujet. Dans ce cas, merci de m'en faire part !

mercredi 12 mai 2010

Baking normal map avec Blender

Dans un article précédent, je vous ai indiqué qu'il existe deux méthodes pour réaliser les normal map.

  • Extraire les informations géométriques d'un modèle 3D détaillé. On utilisera la fonction "Bake normal map from selected object",
  • Dessiner une texture en niveau de gris et générer la normal map avec un plugin dans votre application 2D.

C'est la première méthode que j'utiliserai ici pour la roue du Boeing B-17. La modélisation d'une roue même très détaillée ne présente aucune difficulté particulière. Vous trouverez d'ailleurs aisément sur la toile de nombreux tutoriaux sur ce sujet.
Ensuite, il vous faudra modéliser une autre version de votre roue, cette fois ci en basse résolution. C'est celle que nous utiliserons dans notre modèle final. Donc... prenez garde de ne pas mettre trop de faces... pensez a l'utilisateur qui ne possède pas forcément un ordinateur puissant !

Création de la normal map

  • Modélisation du modèle 3D haute résolution,
  • Modélisation du modèle 3D basse résolution,
  • Dépliage UV du modèle 3D basse résolution,
  • Affectez une nouvelle image au dépliage UV du modèle basse résolution
  • Positionnez les deux objets au même endroit (et pas comme sur la capture d'écran proposée),
  • Sélectionnez le modèle haute résolution ET le modèle basse résolution... dans cet ordre !
  • Dans le menu "Scene" (F10), onglet "Bake", activez l'option "Normal" et l'option "Selected to active",
  • et lancez le rendu de la normal map en cliquant sur "Bake".
C'est fini !

En fait non, vous avez passez un peu de temps à modéliser cette roue en haute résolution alors capitalisons un peu notre travail en créant un baking de l'occlusion ambiante.

Occlusion ambiante... ca ne vous dit rien ?
Alors consultez cet autre article .

Boeing B-17 - X-Plane - Test specular map WIP

Depuis la version 9.40 de X-Plane; il est possible d'utiliser une specular map qui sera bien utile pour créer une texture métal naturel sur le Boeing B-17 Flying Fortress. Cette specular map est une image en niveau de gris. Le noir ne donne aucun reflet, le blanc correspond aux reflets à son intensité maximale. Cette texture prendre place sur le canal alpha de la texture normal.

N'ayant toujours pas créé de normal map, je me suis contenté de fabriquer une normal map neutre (R128, G128 et B255) avec la specular map sur la canal Alpha. Reste à indiquer la présence de ces cartes au moteur de rendu de X-Plane. Pour cela, il suffit d'éditer le fichier OBJ et de rajouter la ligne en gras dans le début du code.

I
800
OBJ

TEXTURE        B17_external.png
TEXTURE_LIT    B17_external_LIT.png
TEXTURE_NORMAL    B17_external_NML.png
POINT_COUNTS    11197 0 0 36450

VT       0.1970    1.8088   -2.2405     0.185  0.983 -0.010    0.4698  0.9858
VT       0.1861    1.8068   -2.2956     0.163  0.984 -0.065    0.4693  0.9878
..         ....... ....... .......

N'oubliez pas que cette ligne disparaitra à chaque modification et exportation du modèle 3D avec le script Blender2Xplane...
ce qui se révèle à l'usage franchement agacant !

Il y a pourtant une solution toute simple proposée par danklaue sur le site x-plane.org : c'est de modifier le script Blender2Xplane !
Assurez-vous cependant d'avoir fait une copie de sauvegarde de votre script avant intervention.
J'ai testé et ça marche ! :)

Les explications se trouvent ici :

http://forums.x-plane.org/index.php?showtopic=40267&st=110

samedi 1 mai 2010

Boeing B-17 - X-Plane - Test metal WIP

Boeing B-17 - X-Plane - WIP metal test 01

Test de rendu métal

- page 78 de 84 -