Note d'application: comment ajouter des parties mobiles

Avant de commencer la lecture de cette note, assurez vous que vous avez une calculette à portée de main, préparez une feuille de papier, un crayon, un verre d'eau et quelques cachets d'aspirine. Et ne venez pas vous plaindre après, je vous aurai prévenu.

Les instructions de base permettant l'animation des parties mobiles permettent d'effectuer des rotations autour des axes principaux. Malheureusement, les parties mobiles d'un avion ont rarement leur axe de rotation confondu avec un des axes principaux. Prenons l'exemple d'un aileron. Son axe de rotation se trouve le long du bord de fuite de l'aile. Or l'aile est souvent affectée d'une flêche et présente un angle de dièdre. De ce fait, pour permettre à l'aileron de reproduire le mouvement commandé par le joystick, il vous faut d'abord déplacer l'aileron pour l'amener dans une position appropriée, puis le ramener dans sa position initiale. Ceci peut être fait en utilisant une série d'instructions TRANS/ROT et AILERON imbriquées:

Cette note d'application va vous indiquer de quelle façon procéder.

Hypothèses: Je suppose que les extrémités de l'axe de l'aileron ont pour coordonnées (x1, y1, z1) et (x2, y2, z2).
Il nous faut réaliser les opérations suivantes:

Les angles de rotation peuvent être calculés de la manière suivante.
Angle de roulis (bank): Angle de lacet (yaw): La fonction arc-tangente peut être appelée TAN-1 ou ATAN selon le type de calculette que vous utilisez. Ne vous trompez pas dans les signes!

Une fois que vous en avez terminé avec ces calculs préliminaires, créez trois vecteurs dans l'Editeur Graphique:

Lancez ensuite l'Editeur de code et allez à l'endroit où vous souhaitez insérer la séquence commandant l'animation de la partie mobile. Les instructions que vous avez à insérer sont les suivantes:
AILR01  TRANS/ROT  AILR02
        VECTOR     x1,y1,z1,0,a1,a2
        RETURN
AILR02  AILERON    AILR03
        VECTOR     0,0,0,0,0,0
        RETURN
AILR03  TRANS/ROT  AILR04
        VECTOR     0,0,0,0,-a1,-a2
        RETURN
AILR04  TRANS/ROT  MYAILRN
        VECTOR     -x1,-y1,-z1,0,0,0
        RETURN

MYAILRN est supposé être le nom du sub-assy représentant l'aileron. Le bloc d'instructions appelé AILR04 commande la translation "interne" qui amène l'aileron près de l'origine.
Le bloc d'instructions appelé AILR03 commande les rotations nécessaires pour aligner l'axe de l'aileron avec l'axe Ox.
Le bloc d'instructions appelé AILR02 réalise la rotation de l'aileron conformément à la position du joystick.
Le bloc d'instructions appelé AILR01 ramène l'aileron à sa position initiale.

C'est tout!

Astuce: en procédant de la sorte, vous pouvez utiliser le même support de texture pour l'aileron et pour l'aile. Attention : si la flêche de l'aile est trop importante, le calcul de l'angle peut être erroné. Un calcul plus complexe peut s'avérer nécessaire.


copyright Hervé Devred, 2001