Concevoir un O.V.P.E.

Il est temps de s'attaquer aux choses sérieuses! Durant cette session d'entrainement, il vous sera demandé de faire des choses très utiles pour la conception d'un O.V.P.E. mais passablement barbante. Désolé! Cela ne devrait pas être trop long...

Vous avez été nommé nommé Ingénieur en Chef du projet O.V.P.E..
Qu'est-ce qu'un O.V.P.E. ?
Un O.V.P.E. is a Objet Volant Peu Engageant.
Allons-y!

Avant de rentrer dans le détail, il vaut mieux ouvrir une nouvelle session d'Aircraft Designer 2000 de façon à effacer les traces de tous les essais que nous avons effectués jusqu'à maintenant. Dans l'Editeur Graphique, cliquez sur le premier bouton de la barre d'outils (celui avec une petite feuille blanche dessinée dessus). Une fenêtre de saisie s'affiche à droite de l'écran. Saisissez "MyRFO" dans le champ de données et cochez la case marquée master project. Validez. Une fenêtre de dialogue apparaît sur l'écran vous demandant si vous désirez effacer toutes les données existantes (à moins que vous n'ayez redémarré Aircraft Designer 2000 juste avant). Acceptez. Passez en vue de face (front) et entrez -3.500 dans le champ de saisie de l'ordonnée du plan de travail courant en bas et à droite de l'écran. Validez en appuyant sur la touche enter.

Créez un nouveau sub-assy et appelez le "DICE". Nous allons construire un cube dans ce sub-assy. Activez l'option de création de forme prédéfinie (option Shape.../square du menu Draw). Entrez 7.000 dans le champ de saisie de la longueur du côté du carré. Comme vous pouvez le voir, le bouton-radio front est sélectionné par défaut dans le panneau plane of the shape. Les coordonnées du centre de la forme sont actuellement les suivantes:
      0.000  -3.500  0.000
Validez en cliquant sur le bouton Draw. Un carré apparaît à l'écran.

Nous allons utiliser ce carré comme base de notre cube. Sélectionnez l'option Build a cylinder du menu Draw. Le choix par défaut pour l'axe du cylindre est vector: c'est ce qui convient. Les coordonnées du vecteur sont affichées au dessous. Modifiez les de façon à ce qu'elles soient les suivantes:
      0.000  7.000  0.000
Le sub-assy de destination est correct (DICE): validez la saisie en cliquant sur le bouton build. Félicitations, Monsieur L'ingénieur en Chef. Vous avez créé votre premier volume en 3 dimensions. Sélectionnez la vue 3D et jouissez de votre création en appuyant plusieurs fois sur la touche Q pour faire pivoter la vue. N'est-ce pas magnifique?


Je suis sûr que vous brûlez d'impatience de voir votre création sur le tarmac d'un aéroport. Un peu de patience, ça ne devrait pas tarder. Revenez en vue de côté et lancez l'Editeur de code. La page de code principale est très courte:
MYRFO   MASTER
DICE    SUBASSY,T click to open sub-assy
        ENDBLOCK

Voici une règle générale de l'Editeur de code. Il faut toujours appeler un sub-assy pour qu'il soit visualisé par Flight Similator. La façon la plus simple de faire cela est d'utiliser une instruction GOSUB. Insérez une instruction GOSUB et une instruction RETURN juste avant la déclaration du sub-assy. Faites en sorte que le GOSUB pointe sur le sub-assy:
MYRFO   MASTER
        GOSUB      DICE
        RETURN
DICE    SUBASSY,T  click to open sub-assy
        ENDBLOCK

Astuce: pour insérer une instruction GOSUB, appuyez sur CTRL+INS.

Cele ressemble à un petit programme, n'est-ce pas? Le point d'entrée est l'instruction MASTER. L'instruction suivante appelle le sous-programme appelé DICE puis le programme se termine par une instruction RETURN. Jetons un oeil à ce sous-programme DICE. Double-cliquez sur le champ de données de l'instruction DICE SUBASSY,T. La page de code associée au sub-assy DICE est composée principalement d'instructions TPOLY:
DICE    SUBASSY,T  click to come back
        TPOLY      4;...
        TPOLY      4;...
        ...
        RETURN

Nous allons affecter une couleur ombrée à ces polygones: insérez une instruction GCOLOR (groupe Color/Texture, option shaded color) en tête de la liste et donnez lui un indice de couleur correspondant au vert pale (indice=13). Comme je vous l'ai dit précédemment, il faut maintenant transformer toutes les instructions TPOLY en instructions GPOLY. Cliquez sur la première instruction TPOLY puis cliquez sur la dernière en appuyant en même temps sur la touche SHIFT. Toutes les isntructions TPOLY sont sélectionnées. Activez l'option Polygon type du menu Code ou appuyez sur CTRL+P (pour voir la liste des raccourcis clavier disponibles sous l'Editeur de code, vous pouvez appuyer sur la touche F10). Dans la fenêtre de sélection de type de polygone choisissez l'option shaded. La liste d'instructions devrait maintenant ressembler à ceci:
DICE    SUBASSY,T  click to come back
        GCOLOR     13
        TPOLY      4;...
        TPOLY      4;...
        ...
        RETURN

Et maintenant, Mesdames et Messieurs... la compilation! Cliquez sur le dixième bouton de la barre d'outils (celui avec un petit avion). Une fenêtre de saisie s'affiche vous proposant des options de compilation. Acceptez les valeurs par défaut et cliquez sur le bouton OK. Une autre fenêtre suit qui vous demande de choisir le type de tableau de bord. Nous nous contenterons du tableau de bord correspondant à un moteur à pistons proposé par défaut. Cliquez sur le bouton write. Et voilà! La compilation a été réussie. Comme nous n'avons pas encore déclaré de texture, c'est terminé.

Whaou... vous voyez que vous pouviez le faire! Avant de tester ce bijou, je vous suggère de sauvegarder votre travail. On ne sait jamais. Sélectionnez l'option Save as du menu File de l'Editeur Graphique. Entrez "MyRFO" comme nom de fichier et validez. Et maintenant, filons vers la piste d'essais.

Minimisez la fenêtre d'Aircraft Designer 2000. Avant de lancer FS2000™, copiez le fichier "MYRFO.AIR" qui se trouve dans le répertoire de ce tutoriel dans le répertoire "Aircraft\Test" de Flight Simulator. Maintenant vous pouvez lancer FS2000™. Je vous conseille de faire tourner FS2000™ dans une fenêtre plutôt qu'en plein écran. Il vous sera de la sorte plus facile de passer de FS2000™ à Aircraft Designer 2000 et réciproquement. Chargez l'avion MyRFO et regardez le résultat en vue extérieure.

- Ah, mais ça ne va pas du tout! Ce n'est pas ce que je voulais! Qu'est-ce que c'est que ce trou en face avant? Je veux être remboursé!
Du calme. Il doit y avoir une explication très simple. Revenez à Aircraft Designer 2000. Sélectionnez le Desk en cliquant sur l'icone qui le représente dans la barre des sub-assies. Cliquez ensuite sur le bouton Show sel dans la barre d'outils. Il y a un carré dans le Desk. Il se pourrait bien que ce soit la face manquante du cube.

Tout juste. Lorsque vous construisez un cylindre, il arrive souvent que vous n'ayez pas besoin du polygone qui referme le cylindre. Celui-ci est rangé dans le desk. C'est la raison pour laquelle il n'était pas visible car les polygones rangés dans le Desk ne sont pas visualisés. Comme c'est le seul polygone du Desk, il est sélectionné par défaut. Activez l'option Move to sub-assy du menu Sub-assy et sélectionnez le sub-assy DICE dans la liste déroulante. Validez: le polygone est transféré dans le DICE.

Ce n'est pas tout: ce polygone est la réplique exacte du polygone de base. Ceci veut dire qu'il est orienté dans la même direction... vers l'arrière. Nous le voulons orienté vers l'avant. Pour faire cela, activez l'option Flip du menu Draw.

Bon... essayons de nouveau notre avion.
Puis-je vous rappeler que FS2000™ tourne toujours et que "MyRFO" est l'avion en cours d'utilisation par FS2000™? Si vous cherchez à compiler le modèle maintenant, cela va faire du vilain. Faut-il arrêter FS2000™? Non, heureusement. Il suffit simplement de sélectionner un autre avion avant de lancer la compilation sous Aircraft Designer 2000.

Pas de chance: la compilation a échoué quand même. Jetez un oeil au panneau d'erreurs qui s'est affiché:
(8) DICE: corrupted texture file or shaded polygon ill defined
(4) master: error in sub-assy DICE
compilation aborted

Qu'est-ce que ça veut dire?
Tout simplement qu'il y a une erreur à la huitième instruction du sub-assy DICE et que cette erreur a entrainé une erreur à la quatrième instruction de la page de code principale. Jetons un oeil à la page de code du sub-assy DICE. Comme vous pouvez le constater, il y a une instruction TPOLY en fin de liste. Une isntruction TPOLY définit un polygone texturé et nous n'avons pas déclaré de texture. C'est une instruction GPOLY qui convient: une instruction définissant un polygone supportant un ombrage de type "Gouraud". Pas de problème: il suffit de double-cliquer sur le champ de code de l'instruction TPOLY et de sélectionner l'option shaded dans la fenêtre de sélection de type de polygone. Vous pouvez relancer la compilation: cette fois elle sera réussie et vous allez pouvoir aller regarder votre nouveau joujou sur le tarmac.


Ce cube n'est pas très profilé. Côté aérodynamique, ça n'est pas terrible. Il faut faire quelque chose. Revenez à l'écran d'Aircraft Designer 2000. Sélectionnez l'option Select first chain du menu Sub-assy. Si vous êtes dans la vue de côté (side), vous pouvez constater que la face arrière du cube est sélectionnée (elle apparaît en sur-brillance). Activez ensuite l'option Copy/Translation du menu Draw. Le mode par défaut est le mode vector, c'est celui que nous allons utiliser. Modifiez les coordonnées du vecteur comme suit:
      0.000  -3.000  0.000
Validez en cliquant sur le bouton move. le cube n'est plus un cube: c'est devenu une sorte de parallélépipède rectangle. Appuyez ensuite plusieurs fois sur la touche C. Les touches c et C permettent de naviguer dans le liste des polygones appartenant au sub-assy courant (pour voir la liste des raccourcis clavier disponibles sous l'Editeur Graphique, vous pouvez appuyer sur la touche F10). Appuyez autant qu'il le faudra pour mettre la face avant du ci-devant cube en surbrillance. Activez l'option Copy/Translation du menu Draw et modifiez les coordonnées du vecteur comme suit:
      0.000  3.000  0.000
Validez en cliquant sur le bouton move.

La verrière de canopée et la tête du pilote

Cette sorte de poutre que vous venez de bâtir va nous servir de tronçon de fuselage. Nous allons ajouter une verrière de canopée au dessus et y mettre la tête du pilote. Pour construire la verrière, nous allons utiliser une classe de templates de type demie-section. Ensuite, pour lui donner un aspect semi-transparent, nous allons affecter aux polygones qui la constituent un indice de transparence.

Sélectionnez l'option New class du menu Template. Cliquez sur le bouton-radion half-section et choisissez l'option top. Donnez un nom à cette classe ("CANOPY" paraît judicieux) et entrez le chiffre 8 dans le champ de données number of sides. Cliquez sur le gros point vert marqué set parameters. Cela entraine l'affichage de l'éditeur de template. L'éditeur de template vous permet de définir les paramètres du premier template de la classe. Pensez à ce template comme à un arceau de la verrière. Pour cette fois, je vous propose de commencer par l'arceau arrière. Cet arceau se situe au dessus de la poutre-fuselage. Entrez les valeurs suivantes dans les champs de données consacrés aux coordonnées de l'origine du template:
      0.000  -3.000  3.500

Cochez la case U-shape en bas de l'éditeur de template. Entrez les valeurs suivantes dans les champs de données height et width:
      height = 3.000
      width = 4.000
Acceptez les autres paramètres par défaut et validez la création du premier template en cliquant sur le bouton OK. Validez la création de la classe en cliquant une nouvelle fois sur OK.

Créer l'arceau avant est une simple formalité. Activez l'option New template du menu Template. Entrez les valeurs suivantes dans les champs de données height et width:
      height = 3.000
      width = 4.000
Entrez les valeurs suivantes dans les champs de données consacrés aux coordonnées de l'origine du template:
      0.000  2.000  3.500
Vous ne pouvez pas valider la création sans avoir édité le template. Comme nous allons accepter les valeurs par défaut, il vous suffit de cliquer sur le bouton edit puis tout de suite après sur le bouton OK de l'éditeur de template. Validez la création de ce deuxième template en cliquant une nouvelle fois sur OK.

Maintenant que nous avons les deux arceaux, il nous faut créer les polygones qui vont couvrir la verrière. Avant de faire cela, créez un sub-assy que vous appellerez "CANOPY". Activez l'option Cover template du menu Template. La classe CANOPY est la seule disponible pour le moment, elle est donc sélectionnée par défaut. Cliquez sur le bouton-radio cover section. Comme nous n'avons défini que deux templates dans cette classe, ils sont eux aussi sélectionnés par défaut. Validez la couverture en cliquant sur le bouton cover. Une série de polygones est générée automatiquement pour couvrir la verrière.

Pour compléter la verrière, nous aimerions représenter un pare-brise plongeant sous le capot du fuselage. Pour cela, il est nécessaire de créer un troisième template au devant de l'arceau avant et sous le capot du fuselage. Aircraft Designer 2000 permet de générer automatiquement les polygones qui font la jonction entre ce template et l'arceau avant puis de les tronquer au niveau du plan supérieur du fuselage. Créez ce nouveau template à partir des paramètres suivants:
      height = 2.000
      width = 3.000
      origin = (0.000, 4.500, 1.000)
Acceptez les autres paramètres par défaut et validez. Activez l'option Cover template du menu Template et choisissez l'option intersection with a plane. Sélectionnez les templates appropriés au moyen des boutons flêchés haut/bas situés à droite des rangées de coordonnées définissant les origines des templates:
      #1 : 0.000  2.000  3.500
      #2 : 0.000  4.500  1.000
Lorsque vous avez sélectionné ces deux templates, cliquez sur le petit bouton OK juste au dessous. Il vous faut maintenant sélectionner le plan d'intersection. Pour faire cela, cliquez sur n'importe quel sommet du DICE. L'un des côtés de ce sub-assy apparaîtra en marron. Appuyez ensuite autant de fois qu'il le faut sur la touche C pour sélectionner le côté désiré (le côté supérieur, bien sûr). Lorsque ce côté apparaît à son tour en marron, cliquez de nouveau sur le petit bouton OK. Assurez vous que le sub-assy CANOPY est sélectionné (s'il ne l'est pas, cliquez sur l'icone le représentant dans la barre des sub-assies) et validez la couverture en cliquant sur le bouton cover. Jetez un oeil au résultat sur l'écran de l'Editeur Graphique.


Nous n'en avons pas tout à fait terminé avec la verrière. Il nous faut encore couvrir la partie arrière. Activez l'option Cover template du menu Template et choisissez l'option cover selected template. Sélectionnez le template approprié au moyen des boutons flêchés haut/bas situés à droite de la rangée de coordonnées définissant l'origine du template:
      0.000  -3.000  3.500
Cliquez sur le bouton AFT en bas et à gauche de la fenêtre de saisie. Validez en cliquant sur le bouton cover. Le modèle 3D de la verrière est terminé.

Pour concevoir la tête du pilote, nous allons utiliser une paire de templates horizontaux de type section. Créez une nouvelle classe de templates que vous appellerez "PILOT". Cliquez sur le bouton-radio xOy en haut de la fenêtre de création de classe de façon à définir une classe de sections horizontales. Acceptez le nombre de côtés par défaut (12) et cliquez sur le bouton vert set parameters. Vous accepterez les paramètres par défaut à l'exception de la hauteur et de la largeur:
      height = 1.100
      width = 0.900
Sortez de l'éditeur de template en cliquant sur le bouton OK. Saisissez les valeurs suivantes dans les champs de données consacrés aux coordonnées de l'origine du premier template:
      0.000  -1.000  4.000
Validez en cliquant sur le bouton OK.

Pour créer le second template, nous allons utiliser l'option de copie de template. Activez l'option Copy template du menu Template. Saisissez les valeurs suivantes dans les champs de données consacrés aux coordonnées de l'origine du template:
      0.000  -1.000  5.500
Validez en cliquant sur le bouton OK.

Avant de générer les polygones couvrant la tête du pilote, créez un nouveau sub-assy que vous appellerez "PILOT". Activez l'option Cover template du menu Template. Il y a cette fois deux classes de templates disponibles et il est possible de choisir l'une ou l'autre dans la liste déroulante appelée select template class. Acceptez la classe proposée par défaut (qui est la classe PILOT) ainsi que les autres options (le bouton-radio cover section, les deux templates proposés par défaut et le bouton EXT). Validez en cliquant sur le bouton cover. Pour en finir avec la tête du pilote, il nous faut encore créer les polygones qui recouvrent le cylindre ainsi créé en haut et en bas. Activez l'option Cover template du menu Template et choisissez l'option cover selected template. Sélectionnez le template défini par les coordonnées suivantes:
      0.000  -1.000  4.000
Cliquez sur le bouton BOT et validez la couverture en cliquant sur le bouton cover. Activez de nouveau l'option Cover template du menu Template avec l'option cover selected template. Sélectionnez le template défini par les coordonnées suivantes:
      0.000  -1.000  5.500
Cliquez sur le bouton TOP et validez la couverture en cliquant sur le bouton cover.

Bon travail! Occupons nous maintenant des pages de code. Lancez l'Editeur de code. Les deux nouveaux sub-assies sont inscrits dans la page de code principale:
MYRFO   MASTER
        GOSUB      DICE
        RETURN
DICE    SUBASSY,T  click to open sub-assy
CANOPY  SUBASSY,T  click to open sub-assy
PILOT   SUBASSY,T  click to open sub-assy
        ENDBLOCK

Comme je vous l'ai indiqué, il faut les appeler depuis la section de code principale. Insérez deux instructions GOSUB et faites les pointer vers ces deux sub-assies:
MYRFO   MASTER
        GOSUB      DICE
        GOSUB      CANOPY
        GOSUB      PILOT
        RETURN
DICE    SUBASSY,T  click to open sub-assy
CANOPY  SUBASSY,T  click to open sub-assy
PILOT   SUBASSY,T  click to open sub-assy
        ENDBLOCK

Double-cliquez sur le champ de données de l'instruction CANOPY SUBASSY,T pour visualiser la page de code associée à ce sub-assy. Nous voulons que ce sub-assy ait un aspect semi-transparent. Insérez une instruction GLASS en tête de liste (groupe Color/Texture, option Transparency). Lorsque je dis en tête, cela veut dire en deuxième position, bien sûr: vous vous souvenez qu'il n'est pas possible d'insérer une instruction en tout début de liste, n'est-ce pas? Affectez un indice de 6 à cette instruction GLASS. Transformez ensuite toutes les instructions TPOLY de ce sub-assy en instruction GPOLY (CTRL+P).
CANOPY  SUBASSY,T  click to come back
        GLASS      6
        GPOLY      4;...
        GPOLY      4;...
        ...
        RETURN

Sélectionnez l'option PILOT du menu Page pour appeler la page de code du sub-assy PILOT. C'est également une liste d'instructions TPOLY mais cette fois nous allons les utiliser comme telles. Insérez une paire d'instructions combinées TEXTURE/LIMITS en tête de liste (groupe Color/Texture, option Texture).
Avant de continuer, il vous faut copier le fichier "PILOT.BMP" qui se trouve dans le répertoire de ce tutoriel à l'intérieur du répertoire "Test" que vous avez créé au sein du répertoire d'Aircraft Designer 2000. Pendant que vous y êtes, profitez en pour transférer également les fichiers "Wing.BMP" et "Tail.BMP": vous en aurez besoin ultérieurement.
Double-cliquez sur le champ de données de l'instruction TEXTURE et sélectionnez le fichier "Pilot". Cliquez sur le bouton-radio half2 et sur le bouton-radio front. Validez. Il nous faut maintenant un support de texture pour définir les limites de la texture. Quittez l'Editeur de code et activez la vue de face (front) de l'Editeur Graphique.

La tête du pilote apparaît minuscule sur l'écran. Cliquez par deux fois sur la flêche pointée vers le haut qui se trouve à côté du champ de données scale en bas et à droite de l'écran. L'échelle passe à 1 pied pour 50 pixels. Activez le mode de création de chaîne (quatrième bouton de la barre d'outils). En mode alignement (celui avec la touche CTRL pressée...) cliquez sur les points situés aux coordonnées suivantes pour créer un nouveau polygone:
      x = -0.4500   z = 5.500
      x = 0.4500   z = 5.500
      x = 0.4500   z = 4.000
      x = -0.4500   z = 4.000
A chaque fois, Aircraft Designer 2000 vous proposera de choisir parmi deux valeurs possibles de "y". Choisissez celle qui vous plait: cela n'a pas d'importance puisque nous cherchons à définir les limites d'une texture appliquée en frontal. Une fois que vous avez terminé, validez la création puis activez l'option Define chain as support du menu Utilities.

Ce polygone a été créé dans le sub-assy PILOT mais nous ne souhaitons pas le voir affiché par Flight Simulator. Nous pourrions le transférer dans le Desk mais il existe un autre moyen de la cacher. Lancez l'Editeur de code et allez à la page de code du sub-assy PILOT. Le dernier polygone créé apparaît en fin de liste. Double-cliquez sur le champ de code de l'instruction concernée et choisissez l'option Hidden dans la fenêtre de sélection de type de polygone. De la sorte, ce polygone sera omis lors de la compilation du modèle. Double-cliquez ensuite sur le champ de données de l'instruction LIMITS. Cliquez sur l'une des flêches droite ou gauche de la fenêtre de sélection des limites de texture pour appeler le support de texture que vous venez de définir (c'est d'ailleurs le seul de la liste pour le moment). Validez. La page de code devrait maintenant ressembler à ce qui suit:
PILOT   SUBASSY,T  click to come back
        TEXTURE    Pilot
        LIMITS     -0.450,0.450,4.000,5.500
        TPOLY      4;...
        TPOLY      4;...
        ...
        ...
        TPOLY      12;...
        HIDDEN     4;...
        RETURN

Passons aux essais. Lancez FS2000™ s'il n'est pas déjà lancé. S'il était lancé, assurez vous que l'avion en cours de sélection par FS2000™ n'est pas MyRFO. Compilez le modèle. Lorsque la fenêtre de sélection du tableau de bord s'affichera, cliquez sur le bouton Keep puisque nous avons déjà sélectionné le tableau de bord. Comme nous avons affecté une texture à notre modèle, une fenêtre de copie de texture apparaîtra. Cliquez sur OK pour valider la copie du fichier de texture. Et voilà... Jetez un oeil au résultat.


Affreux, n'est-ce pas? Particulièrement le pilote: on dirait un extra-terrestre. Pas très futé, en plus. Bon... on n'est pas là pour participer à un concours de beauté. Ce n'est rien d'autre qu'un tutoriel. Quittez l'Editeur de code. Comme vous pouvez le constater, le support de texture est mis en évidence par une couleur différente. Pour revenir au jeu normal de couleurs, sélectionnez l'option Show no utilities du menu Utilities ou appuyez sur la touche F6.

Les ailes

Il est temps de s'occuper des ailes. Pour faire cela, nous allons procéder par étapes:

Cela ne devrait pas être bien long. Allons-y. Créez une classe de profils et appelez la "WING". Le plan par défaut d'une classe de profil est la plan yOz, c'est tout à fait ce qu'il nous faut. Trois options sont disponibles: simple (6), biconvex et simple (8). Acceptez l'option simple (6) qui est proposée par défaut. Entrez les valeurs suivantes dans les champs de données consacrés aux coordonnées de l'origine du template:
      3.500  -4.500  0.000
Cliquez sur le bouton set parameters et entrez les valeurs suivantes dans les champs de données cord et thickness:
      cord = 9.000
      thick. = 1.400
Acceptez les autres paramètres par défaut. Validez l'édition du template en cliquant sur le bouton OK puis la création de la classe en cliquant de nouveau sur le bouton OK.

Nous allons créer le deuxième template par simple copie de celui-ci. Activez l'option Copy template du menu Template. Il y a désormais trois classes disponibles dans la liste déroulante select a class. La classe proposée par défaut est la classe WING: c'est bien sûr celle qui nous intéresse. Entrez les valeurs suivantes dans les champs de données consacrés aux coordonnées de l'origine du template:
      20.000  -4.500  0.000
Entrez ensuite sa corde:
      cord = 8.000
L'épaisseur (thickness) sera réglée automatiquement:
      thick. = 1.244

Créez un nouveau sub-assy et appelez le RWING (Right WING). Activez l'option Cover template du menu Template et cliquez sur le bouton-radio wing tip / double. Les origines des templates que nous voulons utiliser sont les bonnes (et pour cause: il n'y en a que deux) mais elles ne sont pas dans le bon ordre. Cliquez une fois sur la flêche pointant vers le bas juste à côté de la première rangée de coordonnées pour les remettre dans le bon ordre:
      3.500  -4.500  0.000
      20.000  -4.500  0.000
Acceptez les autres paramètres par défaut et cliquez sur le bouton cover. Vous venez de créer l'aile droite.

Comme nous voulons texturer les ailes, je vous propose de définir tout de suite le support de texture correspondant à l'aile droite. Sélectionnez le Desk dans la barre des sub-assies et activez le mode de création de chaîne. Sélectionnez la vue de dessus (top) et ajustez l'échelle de façon à ce que l'aile occupe tout l'écran. En utilisant le mode alignement, construisez un triangle dont les extrémités droite/gauche et avant/arrière coincident avec celles de l'aile:
      x = 3.500  y = -4.500
      x = 3.500  y = 4.500
      x = 22.400  y = 0.834
Validez et déclarez le triangle créé comme support de texture.

Lancez l'Editeur de code et allez à la page de code consacrée au sub-assy RWING. Insérez une paire d'instructions TEXTURE/LIMITS en tête de liste. Double-cliquez sur le champ de données de l'instruction TEXTURE, cliquez sur le bouton-radio top en bas à droite de la fenêtre de sélection de texture et choisissez le fichier "Wing" dans la liste (je fais l'hypothèse que vous l'avez bien copié dans le répertoire du projet tout à l'heure). Validez la sélection puis double-cliquez sur le champ de données de l'instruction LIMITS. En cliquant sur l'une des flêches droite/gauche vous appellerez automatiquement le dernier support de texture créé (en cliquant plusieurs fois, vous passez en revue tous les supports de texture déjà créés: ne faites pas cela maintenant). Validez. La liste d'instruction devrait ressembler à ce qui suit:
RWING   SUBASSY,T  click to come back
        TEXTURE    Wing
        LIMITS     3.500,22.400,-4.500,4.500
        TPOLY      3;...
        TPOLY      3;...
        ...
        RETURN

Fermez l'Editeur de code et revenez à l'Editeur Graphique. La construction de l'aile gauche est un enfantillage. Sélectionnez le sub-assy RWING. Activez l'option Mirror sub-assy du menu Sub-assy. Dans la fenêtre de saisie qui s'affiche à droite de l'écran, entrez le nom du sub-assy consacré à l'aile gauche (je propose "LWING"). Validez. C'est tout!


Lancez l'Editeur de code et allez à la page de code du sub-assy LWING. Vous pouvez voir que la liste d'instructions est la réplique de la page de code du sub-assy RWING. Retournez à la page de code principale. Il nous faut maintenant insérer deux appels de sous-programme dans la section principale. Insérez deux instructions GOSUB à la suite des autres et faites les pointer vers les sub-assies RWING et LWING. La liste d'instruction devrait ressembler à ce qui suit:
MYRFO   MASTER
        GOSUB      DICE
        GOSUB      CANOPY
        GOSUB      PILOT
        GOSUB      RWING
        GOSUB      LWING
        RETURN
DICE    SUBASSY,T  click to open sub-assy
CANOPY  SUBASSY,T  click to open sub-assy
PILOT   SUBASSY,T  click to open sub-assy
RWING   SUBASSY,T  click to open sub-assy
LWING   SUBASSY,T  click to open sub-assy
        ENDBLOCK

Il est temps de jeter un oeil au résultat. Vérifiez que MyRFO n'est PAS l'avion en cours de sélection par FS2000™ et compilez le modèle. Acceptez les invitations à copier les textures puisque nous venons d'en déclarer une nouvelle. Jetez un oeil à l'écran de FS2000™.


Cela commence à prendre tournure. Je suis sûr que ce serait parfait avec un empennage arrière.

La queue

Nous pourrions construire la queue de notre modèle dans le master project mais ce serait trop simple. Ceci est un tutoriel et il faut que vous en baviez un peu. Nous allons créer un assembly qui sera appelé par le master project. Avant cela, nous allons exporter une partie du master project de façon à être en mesure de la récupérer dans le nouvel assembly.

Sélectionnez le sub-assy DICE et activez l'option Select all chains for export du menu Sub-assy. Sauvegardez le projet (troisième bouton de la barre d'outils). Cliquez ensuite sur le premier bouton de la barre d'outils pour démarrer une nouvelle session. Appelez ce nouveau projet "TAIL" et faites en sorte que la case master project ne soit pas cochée. Validez et acceptez l'invitation à effacer les données existantes. Activez ensuite l'option Import.../Import chains du menu File et sélectionnez le fichier "MyRFO" dans la boîte de dialogue. Validez. Un sub-assy "Import" est créé dans lequel est placé une réplique du sub-assy DICE. Bon départ!

L'assembly TAIL sera composé de:

Je vous suggère de créer immédiatement trois sub-assies que vous appellerez "FUSE", "VERTFIN" et "RSTAB". Nous en créerons plus tard un quatrième, qui s'appellera "LSTAB", par effet miroir sur le sub-assy RSTAB. Une fois ces trois sub-assies créés, sélectionnez le sub-assy FUSE et affichez la vue de côté (side).

Nous allons utiliser une classe de sections pour créer la partie arrière du fuselage. Créez une classe de sections et appelez la "FUSELAGE". Acceptez les options proposées par défaut (plan xOz, 12 côtés). Entrez les valeurs suivantes dans les champs de données consacrés aux coordonnées de l'origine du template:
      0.000  -6.500  -3.500
Cliquez sur le bouton set parameters et entrez les valeurs suivantes dans les champs de données height et width:
      height = 7.000
      width = 5.000
Acceptez les autres paramètres et validez en cliquant par deux fois sur OK.

Créez un autre template situé en:
      0.000  -22.000  -2.000
Donnez lui la hauteur et la largeur suivantes:
      height = 4.000
      width = 2.800
Acceptez les autres paramètres par défaut dans l'éditeur de template et validez. Activez ensuite l'option Cover template du menu Template. Choisissez l'option cover section et acceptez les deux templates qui sont proposés. Validez la couverture en cliquant sur le bouton cover.

Pour terminer la partie arrière du fuselage, nous allons utiliser une autre option de couverture automatique. Activez l'option Cover template du menu Template et cliquez sur le bouton-radio dual summit cover. Vérifiez que le template sélectionné est bien celui défini par:
      0.000  -22.000  -2.000
Si ce n'est pas le cas, sélectionnez le grâce aux boutons flêchés haut/bas à droite de la rangée de coordonnées. Entrez les valeurs suivantes dans les champs de données appelées summit of the cone:
      0.000  -24.000  -1.000
Acceptez les autres paramètres par défaut et validez en cliquant sur le bouton cover. Regardez le résultat sur l'écran de l'Editeur Graphique.


Nous en avons terminé avec le modèle 3D du fuselage. Intéressons nous maintenant à la dérive. Pour l'instant, nous nous contenterons de la partie fixe: la gouverne de direction est une partie mobile et les parties mobiles font l'objet d'un autre chapitre de ce tutoriel. Sélectionnez le sub-assy VERTFIN. Activez le mode de création de chaîne et créez tout d'abord deux sommets situés en:
      0.000  -19.000  7.800
      0.000  -21.000  7.800
Les deux autres sommets de ce polygone doivent être construits sur la peau du fuselage. Pour cela, nous allons utiliser le mode intersection de l'éditeur de chaîne. Cliquez sur le bouton inter. pour activer ce mode. Cliquez sur l'un des sommet du fuselage: l'un des côtés du fuselage apparaît en marron. Cliquez autant de fois qu'il le faut sur la touche C pour sélectionner le polygone situé au dessus du corps principal du fuselage. Validez en cliquant sur le petit bouton OK. Cliquez ensuite sur le sommet du polygone en cours de construction qui se trouve en:
      0.000  -21.000  7.800
Validez. Complétez le processus en entrant les données suivantes dans les champs de saisie des coordonnés du vecteur d'intersection:
      0.000  0.000  -1.000
Validez par deux fois. Cette opération a généré le troisième sommet du polygone. La construction du quatrième va suivre un processus semblable. Cliquez à nouveau sur le bouton inter. pour activer le mode intersection. Cliquez sur l'un des sommet du fuselage puis cliquez autant de fois qu'il le faut sur la touche C pour sélectionner le polygone situé au dessus du corps principal du fuselage (le même que tout à l'heure). Validez en cliquant sur le petit bouton OK. Cliquez ensuite sur le sommet du polygone en cours de construction qui se trouve en:
      0.000  -19.000  7.800
Validez. Complétez le processus en entrant les données suivantes dans les champs de saisie des coordonnés du vecteur d'intersection:
      0.000  0.300  -1.000
Validez par deux fois. Terminez la création de ce polygone en cliquant sur le bouton poly. Ce polygone représente un côté de la dérive. Pour créer l'autre côté, activez l'option Mirror.../right/left du menu Draw.

Nous aimerions que la queue soit texturée, n'est-ce pas? Définissons tout de suite les limites de la texture. Sélectionnez le Desk dans la barre des sub-assies et activez le mode de création de chaîne. Assurez vous que la vue de côté (side) est bien sélectionnée. En utilisant le mode alignement, construisez un triangle dont les extrémités haute/basse et avant/arrière coincident avec celles des sub-assies FUSE et VERTFIN:
      y = -24.000  z = 1.000
      y = -21.000  z = 7.800
      y = -6.500  z = -3.500
Validez et déclarez le triangle créé comme support de texture.

Lancez l'Editeur de code et allez à la page de code consacrée au sub-assy FUSE. Insérez une paire d'instructions TEXTURE/LIMITS en tête de liste. Double-cliquez sur le champ de données de l'instruction TEXTURE et choisissez le fichier "Tail" dans la liste (je fais l'hypothèse que vous l'avez bien copié dans le répertoire du projet tout à l'heure). Validez la sélection puis double-cliquez sur le champ de données de l'instruction LIMITS. Appelez le dernier support de texture créé en cliquant sur l'une des flêches droite/gauche. Validez. Faites la même chose avec le sub-assy VERTFIN.

Passons aux stabilisateurs. Sélectionnez le sub-assy RSTAB. Activez le mode de création de chaîne et créez tout d'abord deux sommets situés en:
      9.000  -19.400  0.000
      9.000  -21.600  0.000
Comme nous l'avions fait pour la dérive, nous allons construire les deux autres sommets de ce polygone, qui se trouvent sur la peau du fuselage, en utilisant le mode intersection de l'éditeur de chaîne. Cliquez sur le bouton inter. pour activer ce mode. Cliquez sur l'un des sommet du fuselage puis cliquez autant de fois qu'il le faut sur la touche C pour sélectionner le polygone qui forme le flanc droit du corps principal du fuselage. Validez en cliquant sur le petit bouton OK. Cliquez ensuite sur le sommet du polygone en cours de construction qui se trouve en:
      9.000  -21.600  0.000
Validez. Complétez le processus en entrant les données suivantes dans les champs de saisie des coordonnés du vecteur d'intersection:
      -1.000  0.000  0.000
Validez par deux fois. Cette opération a généré le troisième sommet du polygone. La construction du quatrième va suivre un processus semblable. Cliquez à nouveau sur le bouton inter. pour activer le mode intersection. Cliquez sur l'un des sommet du fuselage puis cliquez autant de fois qu'il le faut sur la touche C pour sélectionner le polygone qui forme le flanc droit du corps principal du fuselage (le même que tout à l'heure). Validez en cliquant sur le petit bouton OK. Cliquez ensuite sur le sommet du polygone en cours de construction qui se trouve en:
      9.000  -19.400  0.000
Validez. Complétez le processus en entrant les données suivantes dans les champs de saisie des coordonnés du vecteur d'intersection:
      -1.000  0.300  0.000
Validez par deux fois. Terminez la création de ce polygone en cliquant sur le bouton poly. Pour créer l'autre face du stab, activez l'option Copy/Translation du menu Draw et entrez les valeurs suivantes dans les champs de saisie des coordonnées du vecteur de translation:
      0.000  0.000  0.000
Cliquez sur le bouton dupl.+move pour valider. Le polygone sélectionné a été dupliqué et translaté le long du vecteur défini. Comme les coordonnées de ce vecteur sont nulles, la copie du polygone a été créée à la même place. Il ne reste plus qu'à la "retourner". Activez l'option Flip du menu Draw pour ce faire.

Nous allons peindre le stab en rouge. Lancez l'Editeur de code et allez à la page de code du sub-assy RSTAB. Insérez une instruction GCOLOR en tête de liste et donnez lui un indice de couleur égal à 5 (rouge). Sélectionnez ensuite les deux instructions TPOLY et transformez les en instructions GPOLY (CTRL+P, option shaded). Quittez l'Editeur de code et créez le sub-assy LSTAB avec l'option Mirror sub-assy du menu Sub-assy.

Nous en avons terminé avec le modèle 3D. Il nous faut maintenant compléter la page de code principale. Lancez l'Editeur de code et insérez quatre instructions GOSUB et une instruction RETURN juste avant la première instruction SUBASSY,T. Faites pointer ces instructions GOSUB vers les sub-assies que vous avez créés. La page de code principale devrait ressembler à ce qui suit:
MYRFO   ASSEMBLY
        GOSUB      FUSE
        GOSUB      VERTFIN
        GOSUB      RSTAB
        GOSUB      LSTAB
        RETURN
FUSE    SUBASSY,T  click to open sub-assy
VERTFIN SUBASSY,T  click to open sub-assy
RSTAB   SUBASSY,T  click to open sub-assy
LSTAB   SUBASSY,T  click to open sub-assy
        ENDBLOCK

Et voilà! L'assembly est terminé. Pensez à sauvegarder votre travail (option Save as du menu File, "Tail" me paraît judicieux comme nom de fichier...). Reste maintenant à compiler l'assembly.

Compilation de l'assembly et insertion dans le master project

La compilation de l'assembly se fait de manière similaire à celle d'un master project. La seule différence est qu'au lieu de créer un fichier *.MDL dans un répertoire de Flight Simulator, elle crée un fichier *.MD1 dans le répertoire de votre projet.

Une fois la compilation réalisée, ouvrez le fichier "MyRFO" puis lancez l'Editeur de code. Restez dans la page de code principale et insérez une instruction INSERT en fin de liste. Double-cliquez sur le champ de données de cette instruction. Une fenêtre de sélection d'assembly s'affiche. Il n'y a qu'un seul assembly compilé disponible actuellement: c'est l'assembly "Tail". Sélectionnez le et validez. L'instruction suivante est insérée dans la liste:
        INSERT     TAIL

Ce type d'instruction doit ête traitée comme une déclaration de sub-assy. Insérez une instruction GOSUB dans la section principale de la page de code (juste après l'instruction GOSUB PILOT). Faites la pointer sur l'instruction INSERT. La page de code doit maintenant ressembler à ceci:
MYRFO   MASTER
        GOSUB      DICE
        GOSUB      CANOPY
        GOSUB      PILOT
        GOSUB      RWING
        GOSUB      LWING
        GOSUB      GOTAIL
        RETURN
DICE    SUBASSY,T  click to open sub-assy
CANOPY  SUBASSY,T  click to open sub-assy
PILOT   SUBASSY,T  click to open sub-assy
RWING   SUBASSY,T  click to open sub-assy
LWING   SUBASSY,T  click to open sub-assy
GOTAIL  INSERT     TAIL
        ENDBLOCK

Vous pouvez compiler (si MyRFO n'est pas sélectionné par FS2000™, bien sûr...) et jeter un oeil au résultat sur la piste d'essais.


Allez... on l'essaie?
- Stooop! Désolé mon gars. La DGAC n'est pas prête à vous délivrer un certificat de navigabilité.
- Mais pourquoi?
- Vous n'avez pas de feu d'atterrissage.
- Mmmmince! J'avais oublié!

Feu d'atterrissage et autres trucs

Ajouter un feu d'atterrissage n'est pas bien difficile. Nous allons le placer sur le bord d'attaque de l'aile droite. Lancez l'Editeur de code et allez à la page de code du sub-assy RWING. Insérez une instruction LIGHT LAND en tête de liste (groupe lighting, option landing light). Comme vous pouvez le constater, cela a pour effet d'ajouter une paire d'instructions combinées dans la liste (LIGHT LAND/LOCAVECT). Double-cliquez sur le champ de données de l'instruction LIGHT LAND pour choisir la couleur du feu d'atterrissage (je propose de choisir le jaune). Double-cliquez ensuite sur le champ de données de l'instruction LOCAVECT pour définir la position du feu et sa direction. Entrez les valeurs suivantes dans les champs de saisie:
      x,y,z : 11.700  4.000  0.700
      vx,vy,vz : 0.000  1.000  -0.200
Validez. Vous pouvez recompiler. Avant de jeter un oeil au résultat, je vous propose de quitter l'Editeur de code et d'activer l'option Show light du menu View de l'Editeur Graphique. La position du feu d'atterrissage apparaît marquée par un signe "+" dans un carré. Vous pouvez maintenant passer à l'écran de FS2000™.


Houla... C'est plutôt décevant. On dirait que le cone de lumière est recouvert par l'aile au lieu d'être placé sur le bord d'attaque.

Il y a bien sûr une raison à cela. je vous ai dit que FS2000™ utilisait la technique du z-buffer pour dessiner les objets à l'écran dans un ordre convenable. Les données stockées dans le z-buffer permettent à FS2000™ de vérifier s'il n'y a pas un objet situé devant l'objet qu'il est en train de tracer. Si ce n'est pas le cas, FS2000™ trace l'objet en cours et met à jour le z-buffer. Le problème avec les cônes de lumière c'est qu'il ne s'agit pas d'objets mais plutôt d'effet lumineux. Ils ne sont donc pas traités par le z-buffer. Pour les afficher de façon correcte, il vous faut donc donner vous-même à FS2000™ des instructions lui permettant de faire un tri des sous-ensembles du modèle.

Le langage 3D de Flight Simulator met à notre disposition une instruction qui permet de faire cela. C'est l'instruction JUMP PLANE (en fait, il s'agit d'une paire d'instructions combinées JUMP PLANE/PLANE). Cette instruction JUMP PLANE est une instruction de test dont le résultat dépend de la position de l'observateur par rapport au plan défini par l'instruction PLANE. Cette instruction était à la base de la conception de modèles pour FS98™ et CFS1™. Elle était aussi la cause de nombreuses migraines. L'exemple suivant va vous montrer comment elle fonctionne.

Supposons que le sub-assy MYTAIL représente la queue d'un avion et le sub-assy MYSTAB un stab. Selon l'endroit où vous êtes situé, vous verrez le stab devant la queue ou la queue devant le stab. Ceci veut dire que, selon votre position, l'image du stab doit être dessinée après ou avant l'image de la queue. Dans le premier cas, l'image du stab recouve partiellement l'image de la queue, dans l'autre cas, c'est l'image de la queue qui recouvre partiellement le stab. Ceci peut être formulé par un saut conditionnel:
        selon la position de l'observateur par rapport à un plan
        dessiner d'abord MYTAIL puis dessiner MYSTAB
        ou
        dessiner d'abord MYSTAB puis dessiner MYTAIL

Ceci peut être transcrit par la séquence suivante:
        JUMP PLANE LABELA
        PLANE      parameters of the plane
        GOSUB      MYTAIL
        GOSUB      MYSTAB
        RETURN
LABELA  GOSUB      MYSTAB
        GOSUB      MYTAIL
        ...

Cet exemple ne vous sert plus à grand chose si vous concevez pour FS2000™. Le processus de tri des sous-ensembles est pris en charge par le z-buffer. Hélas, ce n'est pas suffisant, puisqu'il faut traiter le cas des cones de lumière. Plusieurs chapitres du fichier d'aide sont consacrés à l'art et la manière d'utiliser les instructions JUMP PLANE. Si vous avez l'intention de concevoir des avions compatibles avec FS98™ et CFS1™, je vous conseille de les potasser sérieusement. Dans notre cas, il n'est pas nécessaire de devenir un expert du JUMP PLANE puisque nous allons utilser cette instruction avec beaucoup de modération.

Pour mettre en place une instruction JUMP PLANE, il faut d'abord définir le plan qui supportera le test. Dans Aircraft Designer 2000, ce type de plan est appelé un plan de joint (seal). Les plans de joint sont des polygones qui sont rattachés à une liste que l'on peut trouver dans le menu Utilities. Revenons à notre O.V.P.E.. Le plan que nous allons utiliser est le polygone qui forme le bord d'attaque de l'aile.


Sélectionnez le sub-assy RWING puis sélectionnez le polygone formant le bord d'attaque en cliquant autant de fois qu'il le faut sur la touche C. Activez l'option Add chain to seals du menu Utilities. Lancez l'Editeur de code et allez à la page de code du sub-assy RWING. Insérez en tête de liste une séquence "JUMP PLANE". Une séquence "JUMP PLANE" est composée d'une paire JUMP PLANE/PLANE, deux GOSUB, un RETURN, deux autres GOSUB et un deuxième RETURN. Vous pouvez insérer la séquence en une seule opération avec la combinaison de touches SHIFT+INSER. Il vous faudra également insérer une instruction RETURN entre la paire d'instructions LIGHT LAND/LOCAVECT et la paire d'instructions TEXTURE/LIMITS qui la suit. La liste d'instructions devrait ressembler à ce qui suit:
RWING   SUBASSY,T  click to come back
        JUMP PLANE ?
        PLANE      undefined vector
        GOSUB      ?
        GOSUB      ?
        RETURN
        GOSUB      ?
        GOSUB      ?
        RETURN
        LIGHT LAND 4,20
        LOCAVECT   11.700,4.000,0.700,0.000,1.000,-0.200
        RETURN
        TEXTURE    Wing
        LIMITS     3.500,22.400,-4.500,4.500
        TPOLY      3;...
        TPOLY      3;...
        ...
        RETURN

Double-cliquez sur le champ de données de l'instruction PLANE. La fenêtre de sélection de plan de joint s'affiche. Cliquez sur l'une des flêches gauche/droite de la fenêtre pour sélectionner le plan de joint que nous avons déclaré il y a quelques isntants. La distance du plan de joint à l'origine ainsi que les coordonnées d'un vecteur perpendiculaire à ce plan s'affichent sur la fenêtre de sélection. Ce vecteur pointe vers l'arrière. Nous voudrions le voir pointer vers l'avant (c'est juste pour les besoins de ce tutoriel...). Cliquez sur le bouton Reverse et validez. Distance et coordonnées du vecteur sont reportées dans le champ de données de l'instruction PLANE. Il vous faut maintenant affecter les adresses de destination de l'instruction JUMP PLANE et des instructions GOSUB. Faites le en sorte d'obtenir la séquence d'instructions suivante:
RWING   SUBASSY,T  click to come back
        JUMP PLANE RW01
        PLANE      4.703;0.060,0.998,0.000
        GOSUB      WING
        GOSUB      LIGHT
        RETURN
RW01    GOSUB      LIGHT
        GOSUB      WING
        RETURN
LIGHT   LIGHT LAND 4,20
        LOCAVECT   11.700,4.000,0.700,0.000,1.000,-0.200
        RETURN
WING    TEXTURE    Wing
        LIMITS     3.500,22.400,-4.500,4.500
        TPOLY      3;...
        TPOLY      3;...
        ...
        RETURN

La signification de cette séquence est la suivante:
        position de l'observateur par rapport au bord d'attaque?
        devant:
        dessiner l'aile puis le cone de lumière
        (en sorte que le cone puisse recouvrir partiellement l'aile)
        derrière:
        dessiner le cone de lumière puis l'aile
        (en sorte que l'aile puisse recouvrir partiellement le cone)

Vous pouvez maintenant compiler le modèle et jeter un oeil au résultat.


Pas mal pour un débutant!


copyright Hervé Devred, 2001