Ajouter des parties mobiles à votre O.V.P.E.

Nous allons ajouter des parties mobiles à notre modèle: une hélice, un train d'atterrissage rétractable avec des portes de fermeture des trappes de train, des ailerons, des gouvernes de profondeur et un gouvernail. En fait, quelle que soit la surface que vous désirez animer, la méthode à employer est à peu près toujours la même. Nous n'allons pas répêter les explications pour chacune des surfaces, ce serait carrément assommant. Je vous donnerai tous les détails concernant l'aileron droit et je vous suggère de jeter un oeil au fichier "MyRFO.3DM" qui se trouve dans le répertoire de ce tutoriel pour avoir des informations complémentaires en ce qui concerne les autres surfaces. De cette façon, ça ne devrait pas être trop long!

L'hélice

L'hélice sera composée de:

Elle sera placée dans un sub-assy appelé "PROP".

Dans le master project MyRFO, créez le sub-assy PROP. Sélectionnez la vue de face et réglez l'ordonnée du plan courant à la valeur y = 6.500. Dans le Desk, créez un forme de type hexagonale (Draw/Shape.../hexagon) dont le centre est situé en:
      0.000  6.5000  0.000
Donnez à cette forme un rayon de 0.400 ft. Validez en cliquant sur le bouton draw.

Nous allons construire l'arbre de l'hélice en utilisant l'option Build cylinder du menu Draw. Activez cette option. Entrez les coordonnées du vecteur définissant la génératrice du cylindre:
      0.000  1.5000  0.000
Sélectionnez le sub-assy PROP dans la liste déroulante destination sub-assy et validez. Ceci est la première partie de l'arbre. Revenez au Desk. Le polygone courant devrait être l'hexagone qui a été créé pour générer le cylindre. Il est parallèle au plan xOz avec une ordonnée y=8.000. Activez de nouveau l'option Build cylinder du menu Draw. Cette fois, entrez les coordonnées suivantes:
      0.000  1.000  0.000
dans les champs de saisie consacrés au vecteur définissant la génératrice du cylindre. Sélectionnez le sub-assy PROP dans la liste déroulante destination sub-assy et validez. La génération de ce deuxième cylindre a créé un troisième hexagone dans le Desk. Il est situé dans un plan parallèle au plan xOz avec une ordonnée y=9.000. Pour compléter le dessin de l'arbre, déplacez cet hexagone vers le sub-assy PROP et retournez le (Draw/Flip).

Lancez l'Editeur de code et allez à la page de code du sub-assy PROP. Insérez une instruction GCOLOR en tête de liste. Affectez lui la couleur gris/noir (indice=1). Transformez toutes les instructions TPOLY en instructions GPOLY. Insérez une instruction RETURN en fin de liste. Je sais: il y en a déjà une... vous verrez plus tard pourquoi je vous demande d'en mettre une autre. Quittez l'Editeur de code. Voilà pour l'arbre de l'hélice.

Occupons nous maintenant des pales. Dans l'Editeur Graphique, passez en vue de face (front) et réglez l'ordonnée du plan de travail courant à y=8.000. Validez en appuyant sur enter. Activez le mode création de chaîne et créez un polygone avec les sommets suivants:
      0.000  8.000  0.000
      0.400  8.000  0.800
      0.400  8.000  2.600
      0.000  8.000  3.000
      -0.400  8.000  2.600
      -0.400  8.000  0.800
Cliquez sur l'icone du sub-assy PROP et validez la création du polygone (bouton poly). C'est le profil de la première pale. Activez l'option Rotate chain du menu Draw. Vérifiez que l'axe de rotation Oy est bien sélectionné dans le panneau axis of rotation et entrez les coordonnées du centre de rotation (center of rotation):
      x = 0.000  z = 0.000
Entrez la valeur 120.0 dans le champ réservé à l'angle de rotation (angle of rotation). Validez en cliquant sur le bouton dupl.+rot.. Vous venez de créer le profil de la deuxième pale. Recommencez pour créer le profil de la troisième pale.

Nous en avons terminé avec le profil avant de l'hélice. Il nous faut maintenant créer le profil arrière. Activez le mode de sélection multiple (neuvième bouton de la barre d'outils: il restera enfoncé). Passez en revue les polygones du sub-assy PROP en appuyant sur la touche C. Chaque fois qu'une pale est sélectionnée, appuyez sur la barre d'espace du clavier. Ceci permet de placer cette pale dans le buffer de sélection multiple (elle apparaîtra en vert ou en jaune). Lorsque les trois pales ont été sélectionnées, activez le mode Copy/Translate du menu Selection. Entrez un vecteur dont les trois coordonnées sont à 0.000 dans les champs de saisie du vecteur de translation. Validez en cliquant sur le bouton dupl(2). Activez ensuite l'option Flip du menu Selection pour que les trois polygones de la sélection soient orientés dans l'autre sens. Quittez le mode de sélection multiple en cliquant de nouveau sur le neuvième bouton (il devrait revenir à sa position normale).

Lancez l'Editeur de code et allez à la page de code du sub-assy PROP. Vous pouvez constater que les six polygones que nous venons de créer apparaissent après l'instruction RETURN que je vous ai demandé d'ajouter. Insérez une instruction GCOLOR juste après cette instruction RETURN (c'est à dire juste avant les 6 polygones représentant les pales). Affectez lui la couleur orange (indice=8). Transformez les 6 instructions TPOLY en instructions GPOLY. Comme tout à l'heure, ajoutez une instruction RETURN à la fin de la liste. Elle nous servira cette fois à séparer les pales de l'hélice du disque transparent que nous allons créer. Quittez l'Editeur de code.

Nous allons maintenant créer le disque transparent qui représentera l'hélice à grande vitesse. Dans l'Editeur Graphique, vérifiez que vous êtes en vue de face (front) et que l'ordonnée du plan de travail courant est y=8.000. Activez l'option Shape.../Circle.../16 points du menu Draw. Entrez les coordonnées du centre du cercle:
      0.000  8.000  0.000
et le rayon du cercle: radius = 3.000
Validez. Activez le mode Copy/Translation du menu Draw. Mettez à 0.000 les trois coordonnées du vecteur de translation. Validez en cliquant sur le bouton dupl.+move. Activez ensuite l'option Flip du même menu Draw pour retourner le disque que nous avons créé par duplication. Pendant que vous y êtes, déclarez ce disque comme support de texture, vous verrez pourquoi tout à l'heure.


Lancez l'Editeur de code et allez à la page de code du sub-assy PROP. Les deux disques apparaissent après l'instruction RETURN qui suit le bloc consacré aux pales. Nous pourrions insérer une instruction GLASS pour rendre ces disques semi-transparents mais j'ai une meilleure idée. Nous allons tirer profit du mode alpha blending introduit par FS2000™. Insérez une paire d'instructions TEXTURE/LIMITS juste avant les deux derniers polygones de la liste. Affectez le fichier "Pilot" à l'instruction TEXTURE avec les options half1 et front. Double-cliquez sur le champ de données de l'instruction LIMITS et appelez le support de texture que vous venez de déclarer. Transformez les deux instructions TPOLY en instructions BPOLY (alpha blended polygons).

Nous allons maintenant activer le mode alpha blending. Insérez une instruction BLENDING (groupe Color/Texture, option Alpha blend) juste avant les instructions BPOLY (c'est à dire après la paire TEXTURE/LIMITS). Affectez un indice de 80 à cette instruction BLENDING. Le mode alpha blending a ceci de particulier qu'il reste activé aussi longtemps que vous ne l'avez pas désactivé. Je vous recommande de le désactiver tout de suite après que vous l'avez utilisé. Insérez une instruction BLENDING en fin de liste et affectez lui l'indice 0.
        TEXTURE    Pilot
        LIMITS     -3.000,3.000,-3.000,3.000
        BLENDING   80
        BPOLY      16;...
        BPOLY      16;...
        BLENDING   0
        RETURN

Jetons un oeil à la page de code dans son ensemble. il y a trois blocs d'instructions. Les deux premiers commencent par une instruction GCOLOR, le troisième par instruction TEXTURE. Tous trois se terminent par un RETURN. On dirait trois sous-programmes, n'est-ce pas? Pour compléter la conception de l'hélice, nous allons "appeler" ces trois sous-programmes. Allez en tête de liste et insérez un instruction GOSUB que vous ferez pointer sur le premier GCOLOR (qui se trouve pour le moment juste en dessous). Donnez à cette instruction GCOLOR le label "SHAFT". Ce GOSUB SHAFT permettra de visualiser l'arbre.

En ce qui concerne les pales et le disque transparent, nous ne voudrions pas les voir simultanément. Il serait plaisant de voir les pales à basse vitesse et le disque transparent à grande vitesse. Une instruction JUMP PROP va nous permettre de réaliser ce rêve. Insérez une instruction JUMP PROP juste après l'instruction GOSUB. Vous pourrez constater que cette instruction fait en fait partie d'une paire d'instructions combinées. Elle est associée à une instruction RANGE qui définit les paramètres du test. Double-cliquez sur le champ de données de l'instruction RANGE pour définir les valeurs min et max de la plage de test:
      min. = 0  max. = 35
Faites pointer le JUMP PROP vers l'instruction TEXTURE à laquelle vous donnerez le label "DISK". Insérez ensuite une instruction GOSUB et une instruction RETURN à la suite du RANGE. Faites pointer ce deuxième GOSUB vers le deuxième GCOLOR auquel vous donnerez le label BLADE. La liste d'instruction devrait ressembler à ceci:
PROP    SUBASSY,T  click to come back
        GOSUB      SHAFT
        JUMP PROP  DISK
        RANGE      0,35
        GOSUB      BLADE
        RETURN
SHAFT   GCOLOR     1
        GPOLY      4;...
        GPOLY      4;...
        ...
        RETURN
BLADE   GCOLOR     8
        GPOLY      6;...
        GPOLY      6;...
        ...
        RETURN
DISK    TEXTURE    Pilot
        LIMITS     -3.000,3.000,-3.000,3.000
        BLENDING   80
        BPOLY      16;...
        BPOLY      16;...
        BLENDING   0
        RETURN

Prenons un moment pour mieux comprendre le sens de ces lignes de code. La page de code comporte quatre sections:

La section principale peut être lue comme un petit programme. Ce programme commence par l'instruction de déclaration de sub-assy (SUBASSY,T) qui constitue comme un point d'entrée du programme. Puis le programme appelle le sous-programme SHAFT qui visualise l'arbre. Ensuite il effectue un test sur la vitesse de l'hélice: si la vitesse de l'hélice est dans les limites prescrites par l'instruction RANGE, le programme appelle le sous-programme BLADE de visualisation des pales puis s'arrête (instruction RETURN). Si ce n'est pas le cas, le programme saute vers le module DISK qui se termine par une instruction RETURN. Les deux premiers modules commencent par une instruction GCOLOR et se terminent par un RETURN (c'est pour cela qu'ils fonctionnent comme des sous-programmes). Le troisième module commence par une paire d'instructions TEXTURE/LIMITS et comporte une séquence de type alpha blending. Il se termine également par un RETURN.

Nous allons maintenant tâcher de faire tourner tout cela. Revenez à la page de code principale. La rotation de l'hélice peut être réalisée grâce à une instruction du groupe misc. advanced. Insérez cette instruction juste avant l'instruction DICE SUBASSY,T. Comme vous pouvez le constater il s'agit une fois de plus d'une paire d'instructions combinées. L'instruction RUN PROP est une instruction qui nécessite une adresse de destination: faites la pointer sur le sub-assy PROP. La signification de l'instruction VECTOR sera expliquée plus tard dans ce tutoriel.

Pour compléter cette liste, insérez une instruction RETURN juste après l'instruction VECTOR. Ajoutez ensuite une instruction GOSUB après l'instruction GOSUB GOTAIL. Double-cliquez sur le champ de données de l'instruction GOSUB que vous venez de créer et pointez le doigt sur l'instruction RUN PROP. Donnez le label "PROP1" à cette instruction. La page de code devrait ressembler à ce qui suit:
MYRFO   MASTER
        GOSUB      DICE
        GOSUB      CANOPY
        GOSUB      PILOT
        GOSUB      RWING
        GOSUB      LWING
        GOSUB      GOTAIL
        GOSUB      PROP1
        RETURN
PROP1   RUN PROP   PROP
        VECTOR     undefined translation
        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
PROP    SUBASSY,T  click to open sub-assy
        ENDBLOCK

La signification de ces lignes de code est détaillée ci-après. La page de code comprend:

La section principale est une succession d'appels de sous-programme (GOSUB) terminée par un RETURN. Cinq d'entre eux appellent directement un sub-assy. Le sixième appelle un assembly. Le dernier appelle un module très court: le module PROP1. Ce module est composé d'une paire d'instructions RUN PROP/VECTOR et se termine par un RETURN. L'instruction RUN PROP appelle à son tour le sub-assy PROP. Comme vous pouvez le constater, l'instruction VECTOR n'est pas encore définie.

L'animation des parties mobiles est un peu complexe. Les instructions de base qui commandent ce type d'animation ne permettent des mouvements qu'autour des axes principaux: Ox, Oy et Oz. Malheureusement, il est rare que les parties mobiles soient articulées autour des axes principaux. Il y a deux façons de contourner cet obstacle. La première est d'utiliser l'instruction VECTOR associée, la seconde est d'utliser un jeu d'instructions TRANS/ROT. Pour le moment, nous n'avons pas à nous casser la tête: l'axe de l'hélice est le bon. La seule chose que nous avons à faire est d'affecter un vecteur de coordonnées nulles à l'instruction VECTOR.

Quittez l'Editeur de code. Créez un vecteur dont les trois coordonnées sont nulles (option menu Utilities/Make a vector ou combinaison de touches CTRL+F4). Relancez l'Editeur de code. Double-cliquez sur le champ de données de l'instruction VECTOR et cliquez sur l'une des flêches gauche/droite de la fenêtre pour sélectionner le vecteur nul que vous venez de créer. Acceptez les autres paramètres par défaut (qui sont nuls également) et validez. L'instruction VECTOR est mise à jour:
        VECTOR     0.000,0.000,0.000,0.000,0.000,0.000

Et voilà... c'est tout pour l'hélice. Si FS2000™ tourne, assurez vous que "MyRFO" n'est pas sélectionné. Sinon lancez FS2000™. Compilez le modèle et testez l'hélice.


Pas mal, l'alpha blending, n'est-ce pas?

L'aileron

L'installation d'un aileron n'est pas bien différente de celle d'une hélice. Cependant, cette fois, il nous faudra jouer avec l'instruction TRANS/ROT puisque l'aileron s'articule autour d'un axe qui n'est pas l'un des axes principaux. Commençons par le modèle 3D de l'aileron.

Quittez l'Editeur de code. Créez un nouveau sub-assy appelé "RAILERON". Dans ce sub-assy, créez un nouveau polygone avec les sommets suivants:
      12.000  -4.500  0.000
      20.000  -4.500  0.000
      20.000  -6.000  0.000
      12.000  -6.000  0.000
Dupliquez ce polygone et retournez le polygone dupliqué. C'est vraiment l'aileron de base, modèle 1903. Prenons un moment pour réfléchir à la façon dont nous allons l'animer.

Les instructions d'animation de parties mobiles, comme je vous l'ai dit, ne fonctionne que sur des sous-ensembles articulés autour d'un axe principal. Ce n'est pas le cas de l'aileron. Heureusement, il y a une instruction qui permet de changer l'origine d'un sous-ensemble et ses axes de référence: c'est l'instruction TRANS/ROT (c'est d'ailleurs une paire d'instructions combinées, vous vous en seriez douté...). La signification exacte de cette instruction est expliquée dans le fichier d'aide. Dans le cas qui nous intéresse, l'axe de l'aileron est parallèle à l'axe Ox, ça va nous simplifier la vie.

Instruction Axe Partie mobile
RUN PROP
Oy
hélice
RUN PROP2
Oy
hélice 2
RUN PROP3
Oy
hélice 3
RUN PROP4
Oy
hélice 4
R AILERON
Ox
aileron droit
L AILERON
Ox
aileron gauche
RUDDER
Oz
direction
STABILIZER
Ox
stabilisateur/profondeur
MOVE FLAP
Ox
volet
SPOILER
Ox
spoiler
GEAR RBANK
Oy
train droit (rétraction -> gauche)
GEAR LBANK
Oy
train gauche (rétraction -> droite)
GEAR ELEV
Ox
train (rétraction -> avant)
GEAR ELEVR
Ox
train (rétraction -> arrière)
WDOOR Ox
Ox
porte de train (rétraction -> avant)
WDOOR Oxr
Ox
porte de train (rétraction -> arrière)
WDOOR ROy
Oy
porte de train (rétraction -> gauche)
WDOOR LOy
Oy
porte de train (rétraction -> droite)
WHEEL
Ox
rotation d'une roue

Nota 1 : certaines commandes ne sont pas directement accessibles depuis le panneau de sélection d'instruction. Elles font partie d'un ensemble d'instructions groupées et on passe de l'une à l'autre en utilisant une touche clavier. Ainsi, pour activer la commande RUN PROP2, vous devez d'abord insérer une commande de type RUN PROP puis, dans l'Editeur de code, sélectionner cette instruction et presser sur la touche P. La signification des touches clavier peut être consultée à tout moment depuis l'Editeur de code en appuyant sur la touche F10.

Nota 2 : pour que les instructions RUN PROPx soient effectivement actives, le fichier *.air du modèle doit être conforme au standard FS2000™/CFS2™. L'instruction RUN PROP est quant à elle compatible du standard FS98™/CFS™.

Le principe de l'animation est le suivant:

Pour faire cela, nous avons besoin de deux vecteurs: l'un pour amener l'aileron à l'origine, l'autre pour le ramener à sa position initiale. Créez ces deux vecteurs à l'aide de l'option Make a vector du menu Utilities:
      12.000  -4.500  0.000
      -12.000  4.500  0.000

Lancez l'Editeur de code et allez à la page de code du sub-assy RAILERON. Insérez une instruction GCOLOR (indice=7, couleur bleue) et transformez les instructions TPOLY en instructions GPOLY. Revenez à la page de code principale. Insérez la séquence suivante juste avant l'instruction DICE SUBASSY,T:
        TRANS/ROT  ?
        VECTOR     undefined translation
        RETURN
        R AILERON  ?
        VECTOR     undefined translation
        RETURN
        TRANS/ROT  ?
        VECTOR     undefined translation
        RETURN
L'instruction R AILERON se trouve dans le groupe Flight controls, l'instruction TRANS/ROT dans le groupe misc. advanced. Cette séquence se compose de trois modules. Nous allons faire en sorte qu'ils s'appellent les uns les autres: le premier appellera le second, le second le troisième et le troisième appellera le sub-assy RAILERON.

Occupons nous d'abord du troisième module. Faites pointer l'instruction TRANS/ROT sur le sub-assy RAILERON. Double-cliquez ensuite sur le champ de données de l'instruction VECTOR et utilisez les flêches gauche/droite de la fenêtre de sélection pour appeler le vecteur défini par les coordonnées suivantes:
      -12.000  4.500  0.000
Ce module réalise la translation de l'aileron vers l'origine.

Occupons nous maintenant du second module. Faites pointer l'instruction RAILERON sur l'instruction TRANS/ROT du troisième module. Donnez à cette instruction le label "RAIL1". Double-cliquez ensuite sur le champ de données de l'instruction VECTOR et utilisez les flêches gauche/droite de la fenêtre de sélection pour appeler le vecteur dont les trois coordonnées sont nulles. Nous avions créé ce vecteur lorsque nous avons dessiné l'hélice. Ce module réalise l'animation de l'aileron.

Pour finir, occupons nous du premier module. Faites pointer l'instruction TRANS/ROT vers l'instruction RAILERON. Donnez le label "RAIL2" à cette instruction. Double-cliquez ensuite sur le champ de données de l'instruction VECTOR et utilisez les flêches gauche/droite de la fenêtre de sélection pour appeler le vecteur défini par les coordonnées suivantes:
      12.000  -4.500  0.000
Ce module ramène l'aileron à sa position initiale.

Il nous faut maintenant appeler cette séquence depuis la section principale du code. Ajoutez une instruction GOSUB juste après l'instruction GOSUB PROP1. Faites la pointer sur la première instruction TRANS/ROT. Donnez le label "RAIL3" à cette instruction. La page de code principale ressemble maintenant à ceci:
MYRFO   MASTER
        GOSUB      DICE
        GOSUB      CANOPY
        GOSUB      PILOT
        GOSUB      RWING
        GOSUB      LWING
        GOSUB      GOTAIL
        GOSUB      PROP1
        RETURN
PROP1   RUN PROP   PROP
        VECTOR     0.000,0.000,0.000,0.000,0.000,0.000
        RETURN
RAIL3   TRANS/ROT  RAIL2
        VECTOR     12.000,-4.500,0.000,0.000,0.000,0.000
        RETURN
RAIL2   R AILERON  RAIL1
        VECTOR     0.000,0.000,0.000,0.000,0.000,0.000
        RETURN
RAIL1   TRANS/ROT  RAILERON
        VECTOR     -12.000,4.500,0.000,0.000,0.000,0.000
        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
PROP    SUBASSY,T  click to open sub-assy
RAILERONSUBASSY,T  click to open sub-assy
        ENDBLOCK

Il est temps de compiler le modèle pour jeter un oeil au résultat.


Comme vous pouvez vous en douter, ajouter l'aileron gauche, la gouverne et les stabs ne fait pas appel à des techniques fondamentalement différentes. Vous guider pas à pas dans la création de ces autres parties mobiles risquerait de nous lasser vous et moi. Je vous suggère de sauter ces étapes. Vous trouverez dans le répertoire de ce tutoriel un fichier "MyRFO.3DM" comprenant le modèle complet. Si vous voulez vous assurez que vous avez bien compris le processus d'animation, n'hésitez pas à y jeter un oeil.


Nota : le débattement des surfaces de commandes de vol peut être ajusté grâce à l'option Settings du menu de l'Editeur de code. Cette option n'est accessible que depuis le master project.

Les trains d'atterrissage

On va faire simple... Je pense que cela ne vous gènera pas. De toutes façons, ce n'est pas un tutoriel interactif, alors... Quittez l'Editeur de code et revenez à l'Editeur Graphique. Sélectionnez la vue de dessus (top). Créez un sub-assy appelé "RGEAR" (ben oui: RGEAR comme Right Gear. Qui a dit qu'il fallait trouver des noms originaux?).

Activez l'option Shape.../diamond du menu Draw. Placez le centre de la forme en:
      10.500  1.500  0.000
et réglez la hauteur (height) et la largeur (width) à 0.8 ft. Validez (bouton draw).
Activez l'option Build cylinder du même menu Draw. Entrez les coordonnées du vecteur définissant la génératrice du cylindre:
      0.000  0.000  -4.000
Vérifiez que RGEAR est bien le sub-assy de destination dans la liste déroulante. Validez. Et voilà pour la jambe de train.

Sélectionnez la vue de côté. Activez l'option Shape.../Circle.../16 points du menu Draw. Placez le centre du cercle en:
      10.900  1.500  -4.000
et donnez lui un rayon de 2.000 ft. Validez. Dupliquez ce cercle et retournez le. Déclarez l'un des deux cercles comme support de texture.

Lancez l'Editeur de code et allez à la page de code du sub-assy RGEAR. Il y a sept polygones. Le premier est la base de la jambe de train. Transformons le en polygone de type HIDDEN. Les quatre suivant forment la jambe de train proprement dite. Transformons les en polygones de type GPOLY. Nous garderons les deux derniers tels quels. Revenez au début de la liste et insérez une instruction GCOLOR à laquelle vous affecterez un indice de 2 (gris). C'est la couleur de la jambe de train. Insérez ensuite une paire d'instructions TEXTURE/LIMITS. Affectez le fichier "Pilot" à l'instruction TEXTURE, avec les options half1 et side. Double-cliquez ensuite sur le champ de données de l'instruction LIMITS pour lui assigner le support de texture créé à partir du disque de roue. Nous en avons fini avec le modèle 3D du train.

Occupons nous maintenant de la porte fermant la trappe de train. Créez un nouveau sub-assy et appelez le RWELL. Vérifiez que vous êtes dans la vue de côté et réglez l'abscisse du plan courant à la valeur x=11.000. Validez en appuyant sur la touche enter. Activez le mode de création de chaîne et créez un polygone dont les sommets sont les suivants:
      11.000  2.000  0.000
      11.000  3.400  -3.200
      11.000  1.500  -4.200
      11.000  0.000  -3.700
      11.000  0.800  0.000

Dupliquez le polygone ainsi créé et retournez le polygone dupliqué. Lancez l'Editeur de code et allez à la page de code du sub-assy RWELL. insérez une instruction GCOLOR en tête de liste avec un indice de 3 (gris clair). Transformez les instructions TPOLY en instuctions GPOLY.

Nous allons maintenant animer le train. Vous savez comment il faut traiter les parties mobiles lorsqu'elles ne sont pas alignées sur l'un des axes principaux. Revenez à l'Editeur Graphique et créez 4 vecteurs dont les coordonnées sont les suivantes:
      10.500  0.000  0.000
      -10.500  0.000  0.000
      11.000  0.000  0.000
      -11.000  0.000  0.000

Lancez l'Editeur de code et restez dans la page de code principale. Insérez la séquence suivante juste avant l'instruction DICE SUBASSY/T:
        BANK RGEAR ?
        VECTOR     undefined translation
        RETURN
        TRANS/ROT  ?
        VECTOR     undefined translation
        RETURN
Faites en sorte que les instructions de saut pointent vers une adresse convenable et affectez les vecteurs correspondants aux instructions VECTOR:
        BANK RGEAR RGEAR1
        VECTOR     10.500,0.000,0.000,0.000,0.000,0.000
        RETURN
RGEAR1  TRANS/ROT  RGEAR
        VECTOR     -10.500,0.000,0.000,0.000,0.000,0.000
        RETURN

Comme vous pouvez le voir, nous avons simplifié la séquence en omettant une instruction TRANS/ROT. C'est possible parce qu'il n'y a pas de rotation à effectuer pour aligner l'axe du train avec l'axe Oy. Nous aurions pu le faire également pour l'animation de l'aileron. Maintenant c'est trop tard...

Faites la même chose pour la porte de la trappe de train:
        WDOOR ROy  RWELL1
        VECTOR     11.000,0.000,0.000,0.000,0.000,0.000
        RETURN
RWELL1  TRANS/ROT  RWELL
        VECTOR     -11.000,0.000,0.000,0.000,0.000,0.000
        RETURN

Pour insérer une instruction WDOOR ROy, commencez par insérer une instruction WDOOR xxx (groupe misc. advanced, option wheel door). Sélectionnez ensuite le champ de code de cette instruction et appuyez deux fois sur la touche W. La touche W vous fait passer en revue les différentes options disponibles pour cette instruction.

Pour compléter la modélisation du train, il faut bien sûr insérer deux instructions GOSUB à la fin de la section de code principale (juste après l'instruction GOSUB LAIL3) et les faire pointer vers les deux modules que nous venons de créer (et que nous appellerons RGEAR2 et RWELL2):
        GOSUB       PROP1
        GOSUB       RAIL3
        GOSUB       LAIL3
        GOSUB       RGEAR2
        GOSUB       RWELL2
        RETURN
        ...
        ...
RGEAR2  BANK RGEAR RGEAR1
        VECTOR     10.500,0.000,0.000,0.000,0.000,0.000
        RETURN
RGEAR1  TRANS/ROT  RGEAR
        VECTOR     -10.500,0.000,0.000,0.000,0.000,0.000
        RETURN
RWELL2  WDOOR ROy  RWELL1
        VECTOR     11.000,0.000,0.000,0.000,0.000,0.000
        RETURN
RWELL1  TRANS/ROT  RWELL
        VECTOR     -11.000,0.000,0.000,0.000,0.000,0.000
        RETURN

Faire la même chose avec le train rétractable gauche est un jeu d'enfant maintenant que vous êtes devenu un expert d'Aircraft Designer 2000. Je vous propose de sauter cette étape et d'aller voir sur le terrain le résultat.


Ho, les gars, vous savez quoi?
Noon...
...ça y est! Vous êtes reçus...
Vous avez votre diplome d'ingénieur AD2000.
Félicitations!

Nota : pour ceux qui souhaitent encore plus de réalisme, la commande WHEEL permet de simuler la rotation des roues sur le tarmac. C'est une commande de partie mobile comme les autres. Comme elle fait référence à un axe de rotation qui n'est pas le même que celui autour duquel pivote le train, elle doit être imbriquée à l'intérieur de la séquence consacrée au train. On trouvera dans le fichier fourni à titre d'exemple la syntaxe à respecter pour ce faire.


copyright Hervé Devred, 2001