Bonjour à tous.

A la demande de Timoore, je vais vous faire partager la réalisation d'un avion pour FlightGear.

Avant toutes choses, je tiens à préciser que ce qui suit est une manière de faire, mais en aucun cas LA manière de faire. J'estime que la 3D actuelle, même si elle devient de plus en plus performante ne l'est pas encore assez pour pouvoir respecter strictement un plan. Cela pourra se faire le jour ou nous aurons de moteur 3D temps réel en ray-tracing qui n'utiliserons plus les facettes pour définir les formes mais plutôt des formules mathématiques à l'instar de P.O.V par exemple.


Pour tout dire, je ne sais même pas me servir de la plupart des fonctions avancées de Blender. Je dois passer à coté de plein de choses géniales. Mais j'avoue, lorsque, il y a moins d'un an, le 16 Décembre 2006, j'ai commencé le H4 Hercules, je ne connaissait Blender que de nom. Je ne l'avait jamais utilisé. Tout cela pour vous dire, que malgré une interface qui peut rebuter au départ, il est, en fait, assez simple à prendre en main. Et il est assez facile de réaliser quelque chose avec.

Remarque : Toutes les images sont disponible en taille réelle, il suffit de cliquer dessus ;)


Pour commencer, le choix de l'appareil. En l'occurrence, après une petite discussion avec l'intéressé, notre choix c'est porté vers le
Breguet Br-761 "Deux ponts". Un des rares "deux ponts" à avoir volé. Et Français ce qui n'est pas pour me déplaire.
Nous verrons ensuite comment le transformer facilement en Br-763 "Provence".

Bien, entrons donc dans le vif du sujet. Tout d'abord, trouver un plan 3 vues le plus grand possible pour avoir un maximum de définition dans le modeleur.
Voici ce que j'ai trouvé sur le site de Richard Ferrière (une mine d'or pour les plans d'avions) :

 


Ensuite il faut découper les trois vues et les cropper (entendez par là le fait de réduire au maximum la taille de l'image autour de l'avion pour ne laisser aucun vide sur les cotés). Personnellement j'utilise The Gimp, mais vous faites comme bon vous semble.


Voici donc le résultat. Je vous ai ajouté un cadre autour pour bien comprendre.


Une vue de face :



Une vue de coté :

Et une vue de dessus :

Maintenant que nous avons les vues, nous allons chercher les dimensions de la bête. Un petit tour sur le net et comme toujours nous trouvons notre bonheur ici :

Envergure :

41.66

m

Longueur :

28.70

m

Hauteur :

9.53

m

Surface portante :

178.70

Passagers :

130

 

 

 

 

Masse à vide :

22050

kg

Masse totale :

38000

kg

Trois valeurs seulement nous intéresse pour le moment. L'envergure, la longueur et la hauteur.


Bien, que faire de ces trois images. Tout d'abord, dans le dossier Aircraft du dossier data de FlightGear il nous faut créer un dossier pour accueillir ce nouvel avion. Nous allons donc créer Br-761 puis dans ce nouveau dossier un autre dossier Models. Voilà nous verrons les autres plus tard.

Nous avons donc :

.......FlightGear/data/Aircraft/Br-761/Models

Nous allons de suite y placer nos trois images précédemment réalisées.

Maintenant nous lançons Blender (ou tout autre modeleur à votre convenance). Je part du principe que Blender est connu je ne vais pas ici faire un cours sur l'utilisation d'un modeleur.

Certains utilisent des fonctions d'images de fond. Personnellement je préfère utiliser des plans que j'adapte en fonction de mes besoins. Nous allons créer 3 plans chacun sur un plan du repère orthonormé. 

Le plan qui se trouve le long de l'axe X sera la longueur, le long de l'axe Y l'envergure et bien sur le long de l'axe Z nous aurons la hauteur. Et nous y plaçons les images par placage. Bien sur nous dimensionnons les plans en fonctions des dimensions trouvées plus haut.

Et comme vous pouvez le constater en bas de l'image, les 3 plans sont placés dans le calque numéro 10. Maintenant passons dans le calque 1 tout en laissant le calque 10 à l'écran et passons en vue de face (touche Shift 3 du pavé numérique).


Ce qui nous donne ceci : Fichier Blender disponible cliquez ici

Commençons par créer un cylindre (32 cotés semble un bon compromis entre finesse de modélisation et simplification du modèle 3D) au centre de l'univers de Blender. Ayant pris soin de centrer les plans nous avons un cylindre au centre des 3 plans.

Toujours en vue de face, nous retouchons le cylindre pour venir épouser la forme extérieure la plus grande du fuselage. Nous pouvons jouer sur la largeur, la hauteur et le changement de position de quelques points.


A ce moment il est important de tout faire symétriquement. Plus tard nous éliminerons un coté. Passer en vue de coté (shift 1) pour modifier la taille (sur X) du cylindre et le placer la où le fuselage est le plus grand.

Bien, nous allons dé-selectionner tout les points et ne sélectionner que les points de gauche dans la vue de coté :

Avec mes fonction d'extrusion (touche 'E') et de changement de taille (touche "S") nous allons suivre le profil vers l'avant, puis vers l'arrière.

Bien sur tout cela nous donne un profil, mais la largeur n'est pas obligatoirement respectée. Donc nous allons passer en vue de dessus (touche 7 du pavé numérique) puis avec la touche 'B' sélectionner les tranche une à une et via les touche 'S'->'Y' ajuster seulement la largeur en suivant le plan le plus fidèlement possible.

Voilà. Aller on se fait plaisir et on regarde le résultat en mode plein ;)

Il est temps de supprimer un coté pour maintenant travailler en symétrie et de passer en vue de dessus et de commencer une aile.

Beaucoup de méthodes existes pour cela. Personnellement je commence par un plan. Méthode simple, efficace et assez légère en polygones. Donc nous commençons par placer un plan en suivant le profil de l'aile suivant le même principe que précédemment pour le fuselage.


Passage en vue de face et positionnement du plan sur le haut de l'aile. Par extrusion nous donnons une épaisseur à notre aile. Maintenant donnons lui son profile. En vue de coté, nous sélectionnons toutes les arrêtes verticale puis nous les subdivisons (d'un nombre impaire pour avoir une ligne de points parfaitement centré sur la hauteur, ici j'ai choisi 7 subdivisions).


Nous sélectionnons alors seulement les points situé au centre et à l'avant de l'aile, puis à l'aide de l'édition proportionnelle nous créons le bord d'attaque de l'aile. Nous réajustons la largeur et nous passons à l'arrière. Là, c'est beaucoup plus simple mais bien moins réaliste. Effectivement, nous allons réduire sa taille verticale jusqu'à 0.

Remarque : Une épaisseur de 0 n'existe pas dans la réalité. Mais nous n'allons pas chipoté :)

Après quelques ajustements, notamment sur le bout de l'aile, nous pouvons repasser en vue de face. Commençons par réduire légèrement l'épaisseur du bout de l'aile, puis, par rotation nous venons épouser le plan.

Suivant strictement la même méthode, nous pouvons de suite réaliser la gouverne de profondeur et les dérives.


Maintenant ajoutons les roues histoire d'avoir de quoi poser l'appareil. Pour ce faire, j'ai légèrement triché. Ayant réalisé des roues, que je trouve plutôt réussis, pour le UH-60, nous allons récupérer ces dernières.
c
Nous voici donc, si nous recréons les simétries avec un appareil sans moteur mais qui déjà commence à avoir une identité ;)


Avant de continuer, une petite précision. Toutes les pièces créés doivent avoir un nom. Pas seulement les pièces qui seront mobiles, mais aussi les autres. Ainsi le fuselage aura pour nom "fuselage", l'aile sera "aile" etc... Je ferasi un récapitulatif à la fin.


Bien, un avion sans moteur....hum...c'est un planeur. Hors notre Breguet est un quadri moteurs. Il est temps pour nous de lui fournir un peu de puissance.

Bien, je vous passe les commentaires. Toujours sur le même principe. Celui du fuselage. Cylindre, extrusion, retouches adroites etc...


Aller il est temps de voir la tête qu'il a dans FG. Pour se faire, nous allons utiliser un FDM existant, cela nous simplifiera la vie. J'ai personnellement utilisé celui de mon Noratlas perso. Après quelques retouches (changement des chemins d'accés au fichiers, changement des noms de fichiers etc..) Le résultat n'est déjà pas mauvais ;)

Voilà, en général, lorsque j'en arrive à ce stade, je commence à m'inquiter des animations. Aussi allons passer à la réalisation des différentes parties mobiles de base. C'est à dire, ailerons, volets, gouvernes de direction et de profondeur. Tout cela sera fait sur un seul coté de l'appareil puis reporté par symétrie de l'autre coté.

image 1 image 2 image 3


image 4 image 5

A l'aide d'une simple boîte (Image 1) que l'on viens placer au dessus de l'ailerons et à cheval sur l'aile avec quelques ajustements le cas échéants, une opération booléene de type "Soustraction" permet de faire un trou dans l'aile. Les deux parties de départ, l'aile et la boîte sont envoyées de suite dans un autre calque et serviront plus tard pour faire l'aileron.

Vous remarquerez (image 2) que le résultat d'une soustration d'objets dans Blender n'est pas toujours parfaite. S'en suit donc quelques retouches. Suppression de points en trop et collage de points pour finir par obtenir le résultat voulu (image 3).

Maintenant l'aileron proprement dit. Même principe que précédement mais avec une opération Booléenne de type "Intersection" avec toujours les même petits soucis dans Blender et les même solutions pour arriver à ses fins (image 5)


Je vous passe la réalisation des volets, gourvernes de direction et profondeur. Le principe est toujours le même seul les positions et les formes changent un peu.

Pour finir, avant d'attaquer les animations, nous allons ajouter les hélices (et les disques qui simulent les rotations à hautes vitesses). Personnellement, je récupère une hélice déjà réalisée pour mon Noratlas 2502. En fait deux hélices, une avec pas à droite et une avec pas à gauche. Nous les duplicons et nous les plaçons.


Bien il nous reste à noter les différents centres de rotation, translation etc.. des différentes parties mobiles.
Allez, on y va. Une chance pour nous, les coordonnées et valeurs données par Blender correspondent au mêmes valeurs dans FlightGear exprimées en mètres. Exactement ce qu'il nous fallait.

Pour les rotation, la plupart du temps, un point et un axe suffisent. Malgré tout, lorsque l'axe n'est pas le long de l'un des trois axes du repère (X, Y ou Z) les calculs peuvent s'avérer plus compliqué.

Deux solutions à cela :

1 - L'utilisation de l'excellent script d'exportation pour Blender de Melchior FRANZ que vous trouverez dans les sources de FlightGear (utils/Modeller/fgfs_animation.py) et qui est à placer dans le dossier "scripts" de votre Blender.

2 - Définir deux points le long de l'axe et laisser FlightGear faire le reste ;)

Remarque : La seconde solution ne fonctionne pas pour les translations à ce jour. Donc dans ce cas la première solution est la seule disponible (en plus des calculs à la main bien sur).


Nous voici donc avec :
bolGE bolGI aileronG voletGE voletGI profondeur directionG roueA roueG
x -7.945 -8.979 -1.843 -1.950 -1.653 -1.836 -1.653 -1.653 11.637 12.013 -13.758 -2.603
y -8.032 -3.911 -16.239 -19.880 -9.064 -16.233 -1.820 -9.064 0.000 -6.048 0.000 -3.956
z -1.023 -1.144 -0.078 0.344 -1.066 -0.191 -1.146 -1.066 1.585 1.793 -4.151 -3.954

Pour les objets animés de la gauche et du centre. Pour les objets de la droite, il suffit de reprendre ceux de gauche et d'inverser la valeur Y.
Le centre des bols servira aussi pour les hélices et leurs disques associés.

Nous pouvons donc maintenant ajouter ou modifier le fichier xml du dossier "Models" avec par exemple pour l'aileron de gauche le code suivant :

 <animation>
  <type>rotate</type>
  <object-name>aileronG</object-name>
  <property>surface-positions/left-aileron-pos-norm</property>
  <factor>15.0</factor>
  <axis>
   <x1-m>  -1.843 </x1-m>
   <y1-m> -16.239 </y1-m>
   <z1-m>  -0.078 </z1-m>
   <x2-m>  -1.950 </x2-m>
   <y2-m> -19.880 </y2-m>
   <z2-m>   0.344 </z2-m>
  </axis>
 </animation>

Remarques : J'ai numéroté les moteurs de gauche à droite de 0 à 3. Avec donc le gauche extérieur N°0, le gauche intérieur N°1, le droite intérieur N°2 et le droite extérieur N°3.

Voyons le résultat dans FlightGear :

Bien, les volets sortent, les ailerons bougent dans le bon sens, les hélices tournent etc... Tout va bien. Nous pouvons continuer ;)

Et maintenant, il est temps de passer aux parties difficiles. C'est à dire, faire des trous dans le fuselage pour le cockpit, les hublots et les portes.

Le principe est toujours le même, des objets simples (généralement créés à partir de boîtes ou de cylindres) et la fonction Booléenne "Soustraction" feront des merveilles. Avec bien sur toujours les quelques retouches nécessaires par ci par là. "Un dessin vaut mieux qu'un long discours" dit-on. Alors je vous laisse regarder :


Bien nous voici donc avec un cockpit (vue de l'éxtérieur) et des hublots. Mais le "Deux ponts" est avant un avions ayant.........deux ponts. Nous allons donc maintenant créer les portes cargos à l'arrière du fuselage.
Vous connaissez maintenant la méthodologie ;) Un objet simple que l'on soustrait au fuselage. Quelques corrections car les opérations Booléennes ne sont pas toujours parfaite et création des portes par l'opération Booléenne d'intersection. Voici les quelques images qui relate tout cela :


Nous voici à un moment que certains attendent. Nous avons un fuselage, des ailes, des hélices, des gouvernes, des roues, un FDM temporaire dans lequels j'ai ajouté 2 moteurs et déplacé les roues. Bref, il vole. Vous aimeriez bien l'essayer non ? Aller prenez et amusez vous u peu avant la suite.

Cliquez ici pour récupérer le premier tar.gz du tuto ;)

Bien, j'espère que vous vous ête bien amusé ;) Maintenant si nous donnions un peu d'épaisseur au fuselage. Effectivement, jusque là, il n'existe que dans sa partie extérieure.

Nous allons donc dupliquer le fuselage (touche "Shift d") puis séparer la copie de l'original (touche "p"). Enfin, en jouant sur les vues, nous allons légèrement diminué sa taille.


Pour que cela soit assez réaliste il nous faut faire se rejoindre l'intérieur et l'extérieur. Et pour que cela se fasse de façon propre j'ai une méthode assez simple qui donne de très bon résultat.

Tout d'abord, il nous faut ajouster les points des hublots, car ceux de l'intérieurs ne sont plus en face de ceux de l'extérieur. Cela est du au changement de taille global.


Puis nous sélectionnons (en mode trait) les lignes qui entourent toutes les vitres et la baie. Nous les copions puis les séparons du fuselage (touche "Shift d" puis "p"). Enfin nous collons toutes ses lignes à l'objet interieur précédement créé (touche Ctrl J après sélection des deux éléments). Pour finir, et c'est le plus long, nous recréons toutes les facettes manquantes (sélection de 4 points puis appui sur "f"). Ah surtout ne pas oublié d'inverser le sens des nomales pour tout l'intérieur (deux dernières photos de la série ci dessus) car cette partie est vue de l'intérieur de l'avion et pas de l'extérieur (ou alors juste par les vitres ;) )

Bien, avant d'aller plus loin, donnons un textures à tout cela histoire d'avoir un rendu un peu plus interressant dans FlightGear. Nous n'irons pas bien loin pour le moment. Une texture unie pour tout ce qui est extétrieur et une autre pour l'intérieur.


Maintenant nous allons créer le logement et les portes pour la roue avant. Toujours sur le même principe. Un objet simple, la fonction Booléenne de soustraction, quelques ajustements, reprise des élements précédents mais avec une opération Booléenne d'intersection etc...


Ne pas oublier de faire la même chose avec la partie intérieure ;). Cela oblige à refaire un calcul de position des textures à ne pas oublier.

Ensuite on remet le couvert pour les roues principales. Enfin une fois seulement. La seconde étant réalisé par symétrie de la première ;)


Voyons maintenant l'intérieur. Tout d'abord les ailes. Pour le moment elles traversent totalement le fuselage. Nous allons remédier à cela facilement. Le fuselage ayant maintenant une épaisseur il suffit de placer les points de raccord entre le fuselage et l'intérieur.


Puis histoire d'avancer un peu nous plaçons pilote et co pilote.


Cela nous permettra d'obtenir les coordonnées de la vue 0. Celle du pilote justement.

Bien avant de continuer l'intérieur, nous allons nous occuper des moteurs. Et oui, vous avez bien du le remarquer, les carénages des moteurs sont bien vides. Derrière les hélices un grand vide nous attends ;)

Alors, quelques recherches histoire de me coucher moins bête se soir et je découvre que tout les moteurs en étoiles à 14 cylindres sont constitués de 2 étoiles de 7 cylindres couplées.

Voir par exemple :

source : http://www.agelessengines.com/14cylpic.htm

Alors voilà, nous allons réalisé un moteur à part puis nous l'ajouterons 4 fois à l'avion part l'intermédiaire des fichier xml.

Tout d'abord, le moteur :


Nous n'allons pas réellement détailler l'engin, car de toute façon il est pratiquement caché par le carrénage. De même les textures sont très rapidement choisies histoire de pouvoir testé assez vite. Il sera toujours temps plus tard d'ajouter des détails si l'envie s'en fait sentir.



Dernier point, on découpe un morceau de moteur et on l'utilise pour mettre l'ensemble moteur à l'échelle de notre avion. le moteur étant lui centré dans le repère de Blender il va nous falloir récupérer les positions qu'il prendra sur l'avion.

Nous obtenons :
extérieurt gauche intérieur gauche intérieur droit extérieur droit
x -7.128 -8.200 -8.200 -7.128
y -8.032 -3.911 3.911 8.032
z -1.023 -1.144 -1.144 -1.023

Ce qui donne, par exemple, pour le moteur extérieur gauche dans le fichier /Models/br761.xml

  <!-- Extérieur gauche -->
  <model>
    <path>Aircraft/Br-761/Models/Engines/engine.xml</path>
    <offsets>
      <x-m> -7.128 </x-m>
      <y-m> -8.032 </y-m>
      <z-m> -1.023 </z-m>
    </offsets>
  </model>

Aller le cadeau du jour, la version en l'état de se qui est déjà réalisé ;)

Cliquez ici pour récupérer le second tar.gz du tuto ;)

Alors un "deux ponts" à une particularité, il a....hum.....deux ponts. Et pour le moment, si nous ouvrons les portes arrières nous ne voyons que les pilotes qui flottent sur leur siège. Pas trés réaliste n'est ce pas ?

Bien, toujours sur le même principe. Un objet simple en instersection avec l'intérieur. Le résultat dans Blender est assez aléatoire. Après quelques retouche le planchet devient plus propre. Nous le faisons lègerement dépasser de l'objet "interieur" pour éviter les problèmes de jointure (cela sera caché par l'objet "fuselage" ensuite). Même principe toujours pour le planchet du pont inférieur et toujours la même chose pour le sol et l'arrière de la cabine.

Une texture au hasard (j'ai pris du bois) pour les planchets histoire de voir quelque chose et vogue la galère...Enfin non ! Vole l'avion plutôt.


Voilà. Cela commence à prendre forme doucement mais surement non ?

Une petite erreur dans le tar.gz précédent envoyait plein de message dans la console au lancement. Alors pour me faire pardonner, en voici un corrigé. Et avec les planchet puisqu'ils sont fait ;)

Cliquez ici pour récupérer le troisième tar.gz du tuto ;)

Bien, à se stade, vous aurrez remarqué que les roues sont un peu tenues comme par magie. Il est temps donc de les accrocher réellement au fuselage histoire que cela soit un peu plus réaliste. Commençons donc par le train avant.

Comme souvent nous partons d'une forme très simple. En l'occurence, un cylindre. Ce coup ci, contrairement au fuselage je lui assigne 16 cotés au lieu de 32. L'objet est plus petit et n'est pas visible tout le temps. Autant gagner un peu en nombre de facettes. Quelques déformations en fonctions des photos trouvées sur le web. La pate qui tiens la roue est réalisé, comme les ailes, par un plan mis en formes puis extruder. Nous penserons à faire le train en deux partie minimum pour pouvoir gérer les effets de suspensions. 



Nous plaçons correctement l'ensemble et vérifions que, une fois rentré le train de dépasse pas quelque part.  Comme l'axe verticale de l'ensemble n'est pas tout à fait le long de l'axe Z, pour gérer la suspension il va nous falloir calculer l'axe de translation. Et non, nous retrouvons le superbe travail de Melchior et via les export Blender nous pouvons avoir l'axe sans effort.

Maintenant les trains arrières. Mêmes principes, mêmes systèmes, bref, nous recommençons seule la forme générale change.


Volontairement, je ne détail pas trop les trains pour ne pas vous perdre dans les détails. Mais sachez qu'il est préférable de passer un peu plus de temps sur eux et ajouter les différentes parties annimées. Les verins, les articulations etc....

Enfin voici l'avion en l'état : Cliquez ici

Le même avec les fichiers Blender inclus : Cliquez ici


Houlà, il y a un bon moment que je ne suis pas venu écrire quelques lignes dans ce tutorial moi. Bien aller, nous allons tenter de fournir à ce Breguet un modèle de vol un peu plus crédible que ce qu'il a actuellement.

Pour ce faire, nous allons utiliser YASim.

Oui ? Une question ? Vous là bas au fond prèt du radiateur.......

- "Pourquoi YASim monsieur ?"

- "Ah ! Et bien pourquoi pas !"

Voilà cette question est réglée passons à la suite.

Important :
Avant tout, sachez que, même si au final, l'avion vole, je ne maîtrise absolument pas tous les tenants et les aboutissants de YASim. Je vais donc vous donner ici ma méthode de travail. Certainement pas l'idéal et sûrement plein de bêtises. Mais je n'ai pas mieux à vous proposer pour le moment. Que ceux qui en savent plus n'hésitent pas à intervenir pour expliquer ce qui ne va pas.

Alors, de quoi avons besoin. Tout d'abord, quelques données de taille et de position. Fuselage, ailes, gouvernes, roues, etc...

Voyons le fuselage. Ci dessous vous pouvez voir


le point le plus en avant    : x=-14.305 y=0.0 z=-1.154
le point le plus en arrière : x=14.351 y=0.0 z=0.255
et la largeur du fuselage   : with=3.579

Souvenons nous que dans YASim les coordonnées X et Y sont inversées sur leur axe.

Ce qui rapporté en langage YASim nous donneras :

    <!-- Fuselage -->
    <fuselage ax="14.305"  ay="0" az="-1.154"
              bx="-14.351" by="0" bz="0.255"
              width="3.379" taper="0.9" midpoint="0.7"/>

taper  est le rapport entre la plus petite largeur et la plus grande. En l'occurence la valeur 0.9 est purement subjective et absolument pas issue d'un calcul :(
midpoint Si j'ai bien compris correspond, en pourcentage, à la partie du fuselage ou la largeur commence à changer. Idem pour cette fois. Valeur purement subjective.

Au tour des ailes maintenant. Dans YASim seul l'aile gauche est nécessaire. La droite étant automatiquement générée par symétrie. Pour ce faire, j'utilise une boite que je viens placer par dessus l'aile gauche pour récuperer des valeurs globales.




Ce qui rapporté en langage YASim nous donneras :

    <!-- Wing -->
    <wing x="3.255"  y="1.727" z="-0.255"
               length="18.958"
              
chord="4.905"
               sweep="2"
               dihedral="4.35"
               taper="0.258"
              
camber="0.4"
               incidence="0.0"
               twist="0.0">
               <stall aoa="10" width="6" peak="1.5"/>
               <flap0 start="0" end=".6" lift="1.4" drag="1.9"/>
               <flap1 start=".6" end=".95" lift="1.4" drag="1.2"/>

               <control-input axis="/controls/flight/flaps" control="FLAP0"/>
               <control-input axis="/controls/flight/aileron" control="FLAP1" split="true"/>
               <control-input axis="/controls/flight/aileron-trim" control="FLAP1" split="true"/>

               <control-output control="FLAP0" prop="/surface-positions/flap-pos-norm"/>
               <control-output control="FLAP1" side="left" prop="/surface-positions/left-aileron-pos-norm"/>
               <control-output control="FLAP1" side="right" prop="/surface-positions/right-aileron-pos-norm"/>

              <control-speed control="FLAP0" transition-time="5"/>
    </wing>

Mais arrêtons un instant sour toutes ces valeurs et voyons un peu plus en détail tout cela.