Rotation dans une rotation

Voir le sujet précédent Voir le sujet suivant Aller en bas

Rotation dans une rotation

Message  G-LUBS le Jeu 5 Jan 2017 - 21:42

Bonjour,
La rétraction des trains d'atterrissage est une partie de plaisir : conjuguer le relevage des trains dessinés sortis et la descente des trappes dessinées fermées, ça peut se faire !
Mon seul problème c'est qu'en utilisant un axe de rotation incliné, le résultat FG n'est pas celui de deux rotations Blender qui donne des éléments de solution mais ne permet pas sauf par approche peu rigoureuse de gérer le truc. Donc au final les roues sortent de chaque coté des ailes et la solution serait de faire pivoter leur axe autour de celui du fût du train pour les mettre "à plat" dans leur soute.
Mais comment ?

G-LUBS
Mécano

Messages : 46
Date d'inscription : 22/09/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  clm76 le Ven 6 Jan 2017 - 21:20

Je ne comprend pas très bien ce que tu veux faire ... Question

Lorsque le train est sorti, les volets des trappes sont ouverts et ils se ferment lorsque le train est rentré  (ou en même temps que le train rentre). C'est assez simple à coder en xml, mais il faut faire attention à l'ordre dans lequel les actions sont codées.
Je ne vois pas trop pourquoi l'axe de rotation incliné !...

Tu peux regarder comment le train est codé sur le Citation X par exemple (ou sur tout autre avion).
Tu peux aussi regarder comment j'ai codé le fonctionnement des tablettes dans la cabine du Citation X (plusieurs mouvements successifs) ou l'ouverture de la porte extérieure avec les poignées qui tournent et se rabattent.

clm76
Le baron rouge

Messages : 428
Date d'inscription : 27/10/2014
Age : 69
Localisation : Normandie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  G-LUBS le Sam 7 Jan 2017 - 10:39

Bonjour,
Soit à animer le train du F-105 !
Hors toute considération d'exactitude avec la réalité dont je sais peu de choses (blueprints compris !)...
Le train est dessiné sous Blender en position baissé et une vue latérale permet d'estimer la position des 3 trappes ouvertes. Je me suis rendu compte que David Culp avait lui aussi dessiné leur position ouverte...La rigueur impose de ne considérer que leur profil connu en vue de dessous : donc je les connais en position fermée ce qui impose de les animer mais sans relation connue avec le train.
Ici en vue de face Blender la roue du train principal que je veux faire remonter à 90 degrés (a priori) dans l'épaisseur de l'aile, l'axe horizontal X est estimé passant par un point à moitié de l'épaisseur de l'aile au droit de l'axe du fût du train :

Ici le résultat qui semble convenir en vue de face, la roue est dans l'épaisseur de l'aile :

Ici en vue de dessus, elle est à droite du coffre, il faut donc faire une rotation autour de l'axe Z passant par le point précedemment défini pour l'inscrire dans le profil :

Le résultat en vue de dessous :

Sous Blender j'ai donc fait 2 rotations axées dans le référentiel.
De la valeur de l'angle de la seconde rotation , je tire la valeur de sa tangente car sous FG le codage xml demande une valeur de pente en % ce qui équivaut au rapport des coordonnées X et Y du second point de l'axe de rotation inclinée dans le plan horizontal X0Y, 0 ayant les coordonnées du premier point ci-dessus. Donc je lis 36,5 ° ou 36° 30' la tangente est 0,72654 (cf cactus2000.de le convertisseur). Je code sous FG le second point de l'axe ncliné avec X = 1 et Y = 0.72654 et le résultat de la rotation 3D donne ceci :

La roue qui était dans un plan vertical a tourné autour d'un axe incliné contenu dans un plan horizontal mais elle même n'est pas horizontale, elle est incliné et traverse l'aile !
Si je lui applique une rotation autour de l'axe du fût je devrais la ramener dans l'épaisseur de l'aile et c'est là le truc à trouver. Je ne pense pas qu'il soit possible géométriquement d'obtenir cela sans réaliser un script Nasal et une matrice de rotation !!! Et là je ne sais pas faire...
Discussion : j'ai regardé les cas du train Alphajet et Mirage F1 : ils ne transcrivent pas la réalité qui consiste à réaliser physiquement les axes de rotation et à les actionner par vérins. Helijah utilise les axes du référentiel FG, le résultat est réussi mais c'est du trucage comme l'escamotage des trains du F-105 par David Culp avec la fonction "select" donc l'escamotage d'un vrai problème de simulation.
A+

PS : je code le même axe de rotation incliné pour abaisser la trappe centrale qui est ou non reliée rigidement au fût mais je fais cette hypothèse. J'améliore le résultat visuel en appliquant 88 degrés au lieu de 90 degrés aux deux rotations et de ce fait les vitesses sont synchronisées (même vitesse radiale du fut et de la trappe) le résultat est satisfaisant et pourtant les deux mouvements sont indépendants.

G-LUBS
Mécano

Messages : 46
Date d'inscription : 22/09/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  Patten le Sam 7 Jan 2017 - 12:09

Une façon simple de faire bouger tout çà sans se prendre la tête EX:

Tu déclares tous les objets qui composent ton train:

Code:
<animation>
 <name>TrainGauche</name>
 <object-name>axeGH</object-name>
 <object-name>axeGB</object-name>
 <object-name>roueG</object-name>
 </animation>

Code:


 <animation>
 <type>rotate</type>
 <object-name>TrainGauche</object-name>
 <property>gear/gear[1]/position-norm</property>
 <interpolation>
 <entry><ind> 0 </ind><dep> 90 </dep></entry>
 <entry><ind> 1 </ind><dep>  0 </dep></entry>
 </interpolation>
 <center>
 <x-m> -1.147 </x-m>
 <y-m> -1.539 </y-m>
 <z-m> -0.317 </z-m>
 </center>
 <axis>
 <x> 1 </x>
 <y> 0 </y>
 <z> 0 </z>
 </axis>
 </animation>

Les valeurs sont à adapter à ton avion bien entendu. Shocked
Pour connaître le centre de "l'articulation", tu imagines l'axe dans la réalité (ici le haut du dernier support de train axeGH).
En mode édit, tu sélectionne les vertices de l'extrémité.
shift s ==> curseur vers sélection va te donner les valeurs que tu recherches dans le menu (n) => Curseur 3d => position.
L'interpolation sert à ralentir un peu tout çà, pour éviter une montée et une descente instantanée.

Very Happy

_________________
C'est quand il manque quelqu'un qu'on est tous présents.
Pour les textures du terrrain, c'est ICI

Mon hangar en chantier ICI

Oublies ce que tu as donné, souviens toi toujours de ce que tu as reçu...
avatar
Patten
Pilote de chasse

Messages : 3217
Date d'inscription : 16/01/2011
Age : 62

Voir le profil de l'utilisateur http://pattenflightgear.wifeo.com/

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  G-LUBS le Sam 7 Jan 2017 - 13:22

Bonjour Patten,
Ce que je conçois comme le must c'est de gérer les deux rotations de façon simultanée mais je ne sais pas s'il y a les fonctions pour cela dans FG.
Ce que je peux effectivement faire c'est faire une partie de la rétractation du train principal disons 80 degrés en vue de face et de 36,5 degrés dans le plan horizontal pour se trouver à l'aplomb du coffre de train, arrêter cette séquence, faire alors tourner une partie ou la totalité du train autour de l'axe du fût dans une seconde séquence pour ramener l'inclinaison de la roue vers l'horizontale et terminer la première séquence d'une seule rotation autour de l'axe X pour encoffrer le train dans l'aile...
La difficulté est trouver, sous Blender, l'axe de rotation du fût qui résultera d'une rotation 3D elle-même résultat d'une rotation 2D en vue de face de 80 degrés et d'une rotation 2D en vue de dessus ou de dessous de 36,5 degrés !
Blender n'est pas à proprement parler un logiciel de dessin industriel et faire de la géométrie descriptive n'est pas facile !
Donc c'est parti...A+

G-LUBS
Mécano

Messages : 46
Date d'inscription : 22/09/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  Patten le Sam 7 Jan 2017 - 15:40

De mémoire (l'avion ne se lance plus), le MC202 dans le dépôt de la PAF a une animation dans le genre de ce que tu voudrais produire:

Code:
<?xml version="1.0" ?> 
<PropertyList>
   <!--
 
   *********************************************************** 
   *********************************************************** 
      Part of this file was generating by a blender script 
 
      Script fg2blender v0.1 alpha  (c)paf
      download: http://gitorious.org/paf/fg2blender 
      contacts: http://equipe-flightgear.forumactif.com 
      doc:      http://wiki.flightgear.org/Fr/fg2blender 
   ***********************************************************
   *********************************************************** 
 
   -->
   <path>./trains.ac</path> 
   <!--Armature.019-->
   <animation> 
      <type>rotate</type> 
      <object-name>xplane.101</object-name>
      <property>gear/gear/position-norm</property>
      <factor>1.000000</factor> 
      <center>
         <x-m>-0.3579</x-m> 
         <y-m>-1.6304</y-m> 
         <z-m>-0.3856</z-m> 
      </center>
      <axis> 
         <x>0.9999</x> 
         <y>-0.0106</y> 
         <z>-0.0010</z>
      </axis> 
      <interpolation> 
         <entry>
            <ind>0.0000</ind>
            <dep>87.0000</dep> 
         </entry>
         <entry> 
            <ind>0.1186</ind> 
            <dep>87.0000</dep>
         </entry>
         <entry>
            <ind>0.6949</ind>
            <dep>-40.0000</dep> 
         </entry> 
         <entry> 
            <ind>1.0000</ind> 
            <dep>-40.0000</dep>
         </entry> 
      </interpolation> 
   </animation>
   <!--Armature.020-->
   <animation> 
      <type>rotate</type> 
      <object-name>xplane.115</object-name>
      <object-name>xplane.107</object-name>
      <object-name>xplane.105</object-name> 
      <object-name>xplane.106</object-name>
      <object-name>xplane.113</object-name> 
      <object-name>xplane.108</object-name> 
      <object-name>xplane.109</object-name> 
      <object-name>xplane.110</object-name>
      <object-name>xplane.111</object-name> 
      <object-name>xplane.112</object-name> 
      <object-name>xplane.102</object-name>
      <object-name>xplane.103</object-name> 
      <object-name>xplane.104</object-name> 
      <object-name>xplane.114</object-name> 
      <property>gear/gear/position-norm</property>
      <factor>1.000000</factor>
      <center> 
         <x-m>-0.5229</x-m>
         <y-m>-1.5514</y-m> 
         <z-m>-0.3034</z-m> 
      </center> 
      <axis>
         <x>-1.0000</x> 
         <y>0.0014</y> 
         <z>0.0095</z> 
      </axis>
      <interpolation> 
         <entry> 
            <ind>0.0000</ind> 
            <dep>-87.0000</dep>
         </entry> 
         <entry>
            <ind>0.1186</ind>
            <dep>-87.0000</dep> 
         </entry>
         <entry>
            <ind>0.6949</ind>
            <dep>0.0000</dep>
         </entry>
         <entry> 
            <ind>1.0000</ind> 
            <dep>0.0000</dep> 
         </entry>
      </interpolation> 
   </animation> 
   <!--Armature.025-->
   <animation>
      <type>rotate</type> 
      <object-name>xplane.115</object-name> 
      <property>gear/gear/position-norm</property>
      <factor>1.000000</factor>
      <center> 
         <x-m>-0.3051</x-m>
         <y-m>-1.5002</y-m> 
         <z-m>-0.7124</z-m> 
      </center> 
      <axis> 
         <x>0.9969</x> 
         <y>-0.0014</y>
         <z>-0.0786</z>
      </axis>
      <interpolation> 
         <entry> 
            <ind>0.0000</ind>
            <dep>-120.0000</dep> 
         </entry>
         <entry>
            <ind>0.1186</ind> 
            <dep>-120.0001</dep> 
         </entry> 
         <entry> 
            <ind>0.6949</ind>
            <dep>0.0000</dep>
         </entry> 
         <entry> 
            <ind>1.0000</ind> 
            <dep>0.0000</dep>
         </entry> 
      </interpolation>
   </animation>
   <!--Armature.094--> 
   <animation>
      <type>translate</type> 
      <object-name>xplane.107</object-name> 
      <object-name>xplane.105</object-name>
      <object-name>xplane.106</object-name>
      <object-name>xplane.113</object-name> 
      <object-name>xplane.108</object-name>
      <object-name>xplane.109</object-name> 
      <object-name>xplane.110</object-name> 
      <object-name>xplane.111</object-name> 
      <object-name>xplane.112</object-name>
      <property>gear/gear/compression-norm</property> 
      <factor>1.000000</factor> 
      <center> 
         <x-m>-0.2783</x-m>
         <y-m>-1.5633</y-m> 
         <z-m>-0.2339</z-m> 
      </center>
      <axis>
         <x>0.1003</x> 
         <y>0.0053</y>
         <z>0.6167</z> 
      </axis> 
      <interpolation>
         <entry>
            <ind>0.0000</ind>
            <dep>0.0000</dep>
         </entry> 
         <entry> 
            <ind>1.0000</ind> 
            <dep>0.1587</dep> 
         </entry>
      </interpolation> 
   </animation> 
   <!--Armature.022-->
   <animation>
      <type>rotate</type> 
      <object-name>xplane.107</object-name> 
      <object-name>xplane.105</object-name>
      <object-name>xplane.106</object-name>
      <property>gear/gear[0]/compression-norm</property> 
      <factor>1.000000</factor>
      <center> 
         <x-m>-0.3544</x-m> 
         <y-m>-1.5627</y-m> 
         <z-m>-1.1263</z-m>
      </center> 
      <axis> 
         <x>0.0000</x>
         <y>1.0000</y> 
         <z>-0.0002</z> 
      </axis> 
      <interpolation>
         <entry>
            <ind>0.0000</ind> 
            <dep>0.0000</dep>
         </entry> 
         <entry> 
            <ind>1.0000</ind> 
            <dep>50.3326</dep>
         </entry> 
      </interpolation> 
   </animation> 
   <!--Armature.023-->
   <animation> 
      <type>rotate</type> 
      <object-name>xplane.107</object-name> 
      <property>gear/gear[0]/compression-norm</property>
      <factor>1.000000</factor> 
      <center>
         <x-m>-0.2633</x-m>
         <y-m>-1.5619</y-m> 
         <z-m>-1.0239</z-m>
      </center>
      <axis>
         <x>0.0000</x>
         <y>1.0000</y>
         <z>-0.0002</z> 
      </axis> 
      <interpolation> 
         <entry>
            <ind>0.0000</ind> 
            <dep>9.1150</dep> 
         </entry>
         <entry>
            <ind>1.0000</ind> 
            <dep>-72.9823</dep> 
         </entry>
      </interpolation>
   </animation> 
   <!--Armature.024-->
   <animation> 
      <type>spin</type> 
      <object-name>xplane.113</object-name> 
      <property>gear/gear[0]/rollspeed-ms</property> 
      <factor>-15.000000</factor> 
      <center>
         <x-m>-0.4893</x-m>
         <y-m>-1.4536</y-m>
         <z-m>-1.4558</z-m> 
      </center> 
      <axis>
         <x>0.0000</x> 
         <y>1.0000</y>
         <z>0.0001</z>
      </axis> 
   </animation> 
   <!--Armature.026--> 
   <animation> 
      <type>rotate</type>
      <object-name>xplane.116</object-name>
      <object-name>xplane.117</object-name> 
      <property>gear/gear/position-norm</property> 
      <factor>1.000000</factor> 
      <center>
         <x-m>-2.9719</x-m> 
         <y-m>-0.0776</y-m>
         <z-m>-0.5969</z-m>
      </center> 
      <axis>
         <x>1.0000</x> 
         <y>-0.0000</y> 
         <z>0.0000</z>
      </axis>
      <interpolation> 
         <entry>
            <ind>0.0000</ind> 
            <dep>-85.0000</dep> 
         </entry> 
         <entry>
            <ind>0.1525</ind> 
            <dep>0.0000</dep> 
         </entry> 
         <entry>
            <ind>1.0000</ind> 
            <dep>0.0000</dep> 
         </entry>
      </interpolation>
   </animation> 
   <!--Armature.027-->
   <animation> 
      <type>rotate</type> 
      <object-name>xplane.118</object-name>
      <property>gear/gear[1]/position-norm</property>
      <factor>1.000000</factor>
      <center>
         <x-m>-0.3565</x-m> 
         <y-m>1.6343</y-m> 
         <z-m>-0.3864</z-m> 
      </center> 
      <axis>
         <x>-0.9999</x> 
         <y>-0.0105</y> 
         <z>-0.0000</z>
      </axis>
      <interpolation> 
         <entry> 
            <ind>0.0000</ind>
            <dep>86.5000</dep>
         </entry> 
         <entry>
            <ind>0.1186</ind> 
            <dep>86.5000</dep> 
         </entry> 
         <entry>
            <ind>1.0000</ind> 
            <dep>-40.0000</dep> 
         </entry>
      </interpolation> 
   </animation> 
   <!--Armature.028--> 
   <animation>
      <type>rotate</type>
      <object-name>xplane.124</object-name> 
      <object-name>xplane.122</object-name>
      <object-name>xplane.123</object-name> 
      <object-name>xplane.130</object-name> 
      <object-name>xplane.125</object-name> 
      <object-name>xplane.126</object-name>
      <object-name>xplane.127</object-name> 
      <object-name>xplane.128</object-name> 
      <object-name>xplane.129</object-name> 
      <object-name>xplane.132</object-name>
      <object-name>xplane.119</object-name> 
      <object-name>xplane.120</object-name> 
      <object-name>xplane.121</object-name> 
      <object-name>xplane.131</object-name>
      <property>gear/gear[1]/position-norm</property> 
      <factor>1.000000</factor>
      <center>
         <x-m>-0.5209</x-m> 
         <y-m>1.5652</y-m>
         <z-m>-0.3039</z-m>
      </center>
      <axis>
         <x>1.0000</x>
         <y>0.0013</y> 
         <z>-0.0008</z> 
      </axis> 
      <interpolation>
         <entry> 
            <ind>0.0000</ind> 
            <dep>-87.0000</dep>
         </entry>
         <entry> 
            <ind>0.3220</ind> 
            <dep>-87.0000</dep>
         </entry>
         <entry> 
            <ind>1.0000</ind>
            <dep>0.0000</dep> 
         </entry> 
      </interpolation> 
   </animation> 
   <!--Armature.021--> 
   <animation>
      <type>translate</type>
      <object-name>xplane.124</object-name>
      <object-name>xplane.122</object-name> 
      <object-name>xplane.123</object-name> 
      <object-name>xplane.130</object-name>
      <object-name>xplane.125</object-name> 
      <object-name>xplane.126</object-name>
      <object-name>xplane.127</object-name>
      <object-name>xplane.128</object-name> 
      <object-name>xplane.129</object-name> 
      <property>gear/gear[1]/compression-norm</property> 
      <factor>1.000000</factor> 
      <center>
         <x-m>-0.2769</x-m>
         <y-m>1.5777</y-m> 
         <z-m>-0.2324</z-m> 
      </center> 
      <axis>
         <x>0.0950</x> 
         <y>-0.0000</y>
         <z>0.6176</z>
      </axis> 
      <interpolation>
         <entry> 
            <ind>0.0000</ind> 
            <dep>0.0000</dep>
         </entry>
         <entry> 
            <ind>1.0000</ind>
            <dep>0.1326</dep> 
         </entry> 
      </interpolation> 
   </animation>
   <!--Armature.030--> 
   <animation> 
      <type>rotate</type> 
      <object-name>xplane.124</object-name>
      <object-name>xplane.122</object-name> 
      <object-name>xplane.123</object-name> 
      <property>gear/gear[1]/compression-norm</property>
      <factor>1.000000</factor>
      <center> 
         <x-m>-0.3453</x-m>
         <y-m>1.5695</y-m> 
         <z-m>-1.1169</z-m> 
      </center>
      <axis>
         <x>0.0000</x>
         <y>1.0000</y>
         <z>0.0000</z> 
      </axis> 
      <interpolation> 
         <entry> 
            <ind>0.0000</ind>
            <dep>8.8951</dep> 
         </entry> 
         <entry>
            <ind>1.0000</ind>
            <dep>41.2014</dep> 
         </entry> 
      </interpolation>
   </animation>
   <!--Armature.031--> 
   <animation>
      <type>rotate</type> 
      <object-name>xplane.124</object-name> 
      <property>gear/gear[1]/compression-norm</property> 
      <factor>1.000000</factor>
      <center> 
         <x-m>-0.2550</x-m> 
         <y-m>1.5695</y-m>
         <z-m>-1.0187</z-m> 
      </center> 
      <axis> 
         <x>-0.0000</x>
         <y>1.0000</y>
         <z>0.0000</z> 
      </axis>
      <interpolation> 
         <entry> 
            <ind>0.0000</ind> 
            <dep>-0.2728</dep>
         </entry> 
         <entry> 
            <ind>1.0000</ind> 
            <dep>-60.2715</dep>
         </entry> 
      </interpolation> 
   </animation> 
   <!--Armature.032-->
   <animation> 
      <type>spin</type>
      <object-name>xplane.130</object-name>
      <property>gear/gear[1]/rollspeed-ms</property> 
      <factor>-15.000000</factor>
      <center>
         <x-m>-0.4892</x-m>
         <y-m>1.4571</y-m>
         <z-m>-1.4578</z-m>
      </center> 
      <axis> 
         <x>0.0000</x> 
         <y>1.0000</y>
         <z>0.0000</z> 
      </axis> 
   </animation>
   <!--Armature.033-->
   <animation> 
      <type>rotate</type> 
      <object-name>xplane.132</object-name>
      <property>gear/gear[1]/position-norm</property>
      <factor>1.000000</factor> 
      <center>
         <x-m>-0.2996</x-m> 
         <y-m>1.5105</y-m> 
         <z-m>-0.7105</z-m> 
      </center> 
      <axis> 
         <x>-0.9976</x>
         <y>-0.0007</y>
         <z>0.0699</z>
      </axis> 
      <interpolation> 
         <entry>
            <ind>0.0000</ind> 
            <dep>-120.0000</dep>
         </entry>
         <entry> 
            <ind>0.3220</ind> 
            <dep>-120.0001</dep> 
         </entry> 
         <entry>
            <ind>1.0000</ind>
            <dep>0.0000</dep> 
         </entry> 
      </interpolation> 
   </animation>
   <!--Armature.029--> 
   <animation>
      <type>translate</type>
      <object-name>xplane.137</object-name> 
      <object-name>xplane.136</object-name>
      <object-name>xplane.135</object-name> 
      <factor>0.001000</factor> 
      <center>
         <x-m>5.3973</x-m>
         <y-m>-0.0032</y-m> 
         <z-m>0.0650</z-m>
      </center> 
      <axis> 
         <x>0.0013</x> 
         <y>0.0005</y>
         <z>0.6106</z> 
      </axis> 
   </animation> 
   <!--Armature.036-->
   <animation> 
      <type>rotate</type> 
      <object-name>xplane.137</object-name>
      <object-name>xplane.136</object-name>
      <object-name>xplane.135</object-name> 
      <property>controls/flight/rudder</property>
      <factor>1.000000</factor> 
      <center> 
         <x-m>5.4004</x-m>
         <y-m>-0.0012</y-m>
         <z-m>-0.1372</z-m>
      </center>
      <axis> 
         <x>-0.0000</x> 
         <y>-0.0030</y> 
         <z>-1.0000</z> 
      </axis>
      <interpolation> 
         <entry> 
            <ind>-1.0000</ind>
            <dep>30.0000</dep>
         </entry> 
         <entry> 
            <ind>1.0000</ind>
            <dep>-30.0000</dep>
         </entry> 
      </interpolation>
   </animation> 
   <!--Armature.037--> 
   <animation> 
      <type>rotate</type>
      <object-name>xplane.137</object-name> 
      <object-name>xplane.136</object-name> 
      <factor>1.000000</factor>
      <center> 
         <x-m>5.4526</x-m> 
         <y-m>0.0000</y-m> 
         <z-m>-0.1795</z-m>
      </center>
      <axis> 
         <x>0.0000</x>
         <y>1.0000</y> 
         <z>-0.0000</z> 
      </axis> 
      <interpolation>
         <entry> 
            <ind>0.0000</ind> 
            <dep>0.0000</dep> 
         </entry>
         <entry> 
            <ind>1.0000</ind> 
            <dep>0.0000</dep> 
         </entry>
      </interpolation> 
   </animation>
   <!--Armature.038-->
   <animation> 
      <type>rotate</type>
      <object-name>xplane.137</object-name>
      <factor>0.001000</factor>
      <center>
         <x-m>5.5679</x-m>
         <y-m>-0.0546</y-m> 
         <z-m>-0.3298</z-m> 
      </center> 
      <axis>
         <x>0.0000</x> 
         <y>1.0000</y> 
         <z>-0.0000</z>
      </axis>
      <interpolation> 
         <entry> 
            <ind>0.0000</ind>
            <dep>0.0000</dep>
         </entry> 
         <entry>
            <ind>1.0000</ind> 
            <dep>-89999.9982</dep> 
         </entry> 
      </interpolation> 
   </animation> 
   <!--Armature.034-->
   <animation>
      <type>rotate</type>
      <object-name>xplane.133</object-name> 
      <object-name>xplane.134</object-name> 
      <property>gear/gear/position-norm</property>
      <factor>1.000000</factor> 
      <center>
         <x-m>-2.9719</x-m>
         <y-m>0.0776</y-m> 
         <z-m>-0.5969</z-m> 
      </center> 
      <axis> 
         <x>-1.0000</x>
         <y>0.0000</y>
         <z>0.0000</z> 
      </axis> 
      <interpolation> 
         <entry>
            <ind>0.0000</ind> 
            <dep>-85.0000</dep>
         </entry>
         <entry> 
            <ind>0.1525</ind>
            <dep>0.0000</dep> 
         </entry> 
         <entry>
            <ind>1.0000</ind>
            <dep>0.0000</dep> 
         </entry>
      </interpolation> 
   </animation> 
   <!--Armature.043--> 
   <animation>
      <type>rotate</type> 
      <object-name>xplane.216</object-name> 
      <factor>0.001000</factor> 
      <center>
         <x-m>1.4196</x-m> 
         <y-m>0.0069</y-m> 
         <z-m>-0.8094</z-m>
      </center>
      <axis> 
         <x>-0.0007</x>
         <y>-1.0000</y> 
         <z>-0.0008</z> 
      </axis>
      <interpolation>
         <entry>
            <ind>0.0000</ind>
            <dep>0.0000</dep> 
         </entry> 
         <entry> 
            <ind>1.0000</ind> 
            <dep>-24999.9989</dep>
         </entry> 
      </interpolation> 
   </animation>
</PropertyList>
 

Sinon, regarde du coté du Zéro (A6M2), il me semble que c'est aussi un poil biscornu. Laughing


Very Happy

_________________
C'est quand il manque quelqu'un qu'on est tous présents.
Pour les textures du terrrain, c'est ICI

Mon hangar en chantier ICI

Oublies ce que tu as donné, souviens toi toujours de ce que tu as reçu...
avatar
Patten
Pilote de chasse

Messages : 3217
Date d'inscription : 16/01/2011
Age : 62

Voir le profil de l'utilisateur http://pattenflightgear.wifeo.com/

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  G-LUBS le Mer 18 Jan 2017 - 12:05

Bonjour à tous et merci aux spécialistes du xml,
Les trains principaux gauche et droit du F-105 pivotent autour d'un axe A incliné dans le plan horizontal de 36°30' pour trouver leur coffre.
A priori, une rotation de 88° autour des axes ainsi définis permet de les effacer dans l'épaisseur de l'aile.
Mais ce mouvement ne donne pas un résultat satisfaisant car les roues sont inclinées et traversent l'aile !
Donc j'ai imaginé coder une séquence de rentrée des trains :
1- rotation de 80° ;
2- temporisation de cette rotation pour que les roues pivotent de 40° autour de l'axe B du fût de leur train respectif ;
3- fin du mouvement de rentrée de 80° à 88°.
Pour incliner l'axe A je code la tangente ou pente de 36° 30' soit 0,73996/1...
Pour coder l'axe B, grosse séance de trigonométrie soit un changement de référentiel de 36°30' et une rotation de 80° de deux points situés sur l'axe du pivot de train...L'emploi d'un tableur permet de changer certaines variables le cas échéant !
Je code mes deux séquences indépendantes comme ceci :
<!-- Rotation train droit autour du pivot -->

<animation>
 <type>rotate</type>
 <object-name>Moyeu_droit</object-name>
 <object-name>Jante_droite</object-name>
 <object-name>Pneu_droit</object-name>
 <object-name>Phare_exterieur_droit</object-name>
 <object-name>Projecteur_exterieur_droit</object-name>
 <property>gear/gear[1]/position-norm</property>
 <interpolation>
 <entry><ind>0</ind><dep>-40</dep></entry>
 <entry><ind>0.1</ind><dep>-40</dep></entry>
<entry><ind>0.2</ind><dep>0</dep></entry>
<entry><ind>1</ind><dep>0</dep></entry>
 </interpolation>
 <axis>
<x1-m>1.505</x1-m>
    <y1-m>1.83</y1-m>
    <z1-m>0.548</z1-m>
    <x2-m>1.7</x2-m>
    <y2-m>2.039</y2-m>
    <z2-m>0.558</z2-m>
</axis>
</animation>

<!-- Rétraction train droit -->

<animation>
 <type>rotate</type>
 <object-name>Train_droit</object-name>
 <object-name>Bequille_haute_droite</object-name>
 <object-name>Bequille_basse_droite</object-name>
 <object-name>Phare_exterieur_droit</object-name>
 <object-name>Projecteur_exterieur_droit</object-name>
 <object-name>Moyeu_droit</object-name>
 <object-name>Jante_droite</object-name>
 <object-name>Pneu_droit</object-name>
 <object-name>Phare_atterrissage_exter_droit</object-name>
 <property>gear/gear[2]/position-norm</property>
 <interpolation>
   <entry><ind>0</ind><dep>88</dep></entry> <!-- rentré -->
<entry><ind>0.1</ind><dep>80</dep></entry>
<entry><ind>0.2</ind><dep>80</dep></entry>
<entry><ind>1</ind><dep>0</dep></entry> <!-- sorti -->
 </interpolation>
 <center>
  <x-m>2.28</x-m>
  <y-m>2.75</y-m>
  <z-m>0.6</z-m>
 </center>
 <axis>
  <x>-1</x>
  <y>0.73996</y>
  <z>0</z>
 </axis>
</animation>

Et je constate le résultat :
1- le train décrit d'abord un arc de 80 ° ;

2- puis seuls le moyeu, la jante et le pneu roue pivotent sur leur axe ;

3- enfin ensemble avec le fût du train ils pivotent de 80 à 88°.


Pourtant en phase 3, je constate que le fût termine bien sa rotation de 80 à 88° cependant que le moyeu, la jante et le pneu effectuent de leur coté un mouvement défini comme une rotation bizarre !
Je pense qu'il me faut mettre des temporisations entre les 2 phases du fût et celle du pivot...
En fait, rien ne s'améliore...
Je cale sur ce problème !


Avez-vous un avis ?

G-LUBS
Mécano

Messages : 46
Date d'inscription : 22/09/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  clm76 le Mer 18 Jan 2017 - 13:38

Bonjour à tous, bonjour G-LUBS,

Il semble bien, au vu de la photo n°3, qu'il y ait un problème d'axe de rotation puisque l'ensemble roue se trouve décalé de la fourchette.

Pour mieux me rendre compte de l'ensemble des mouvements, peux-tu m'envoyer le fichier de l'avion sous forme .zip ou .tar.gz ?

clm76
Le baron rouge

Messages : 428
Date d'inscription : 27/10/2014
Age : 69
Localisation : Normandie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  G-LUBS le Mer 18 Jan 2017 - 16:14

Bonjour,
mediafire.com file/gpfhxwgcx4137lm/F-105.xml
mediafire.com file/nl3n4vyadufhscq/F105D.ac
sans le fuselage pour voir les manoeuvres des trains
Ce sont les deux fichiers à permuter dans le dossier du wiki (http://wiki.flightgear.org/Republic_F-105_Thunderchief) et en renommant le DavePack 5http://www.fguk.eu/index.php/hangar/summary/10-other-objects-and-vehicles/170-davepackupdate) en Monpack si besoin !
Les dernières versions : http://www.fguk.eu/index.php/hangar/download/7-military-jets/503-republic-f-105d-thunderchief)

Pour le décollage :

Maj + B pour les freins
2 x Alt + ] pour les volets
à fond la PC ou avec le F11 en cliquant la vitesse en dernier
Vole très bien si au-dessus vitesse décrochage

G (Maj + G) pour rentrer (sortir) les trains et apprécier la cinématique !

A+


Dernière édition par G-LUBS le Jeu 19 Jan 2017 - 10:37, édité 2 fois

G-LUBS
Mécano

Messages : 46
Date d'inscription : 22/09/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  clm76 le Mer 18 Jan 2017 - 23:21

Bonsoir,

Mais, apparemment, la rentrée du train est correcte, les rotations me semblent ok. Pouce en l\'air
Il n'y a, d'après ce que je vois, que le problème des vérins obliques à régler (ceux qui disparaissent brutalement lorsque le train rentre), non ?

clm76
Le baron rouge

Messages : 428
Date d'inscription : 27/10/2014
Age : 69
Localisation : Normandie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  G-LUBS le Jeu 19 Jan 2017 - 1:32

Bonsoir,
De loin ça passe ! Mais si on modifie la durée des séquences disons 1, 08, 0,6, 0 sur un train pour le voir évoluer plus lentement et qu'on se met en vue proche, en bout et au-dessus de l'aile, c'est à dire dans l'axe de remontée du train dans le coffre (je mets le zinc en programme de vol stabilisé) et qu'on alterne G et Alt + G, la 3ème séquence "casse" le train au niveau du moyeu pivotant (on voit que la roue et le phare lié pour des raisons d'effacement final, partent alors vers l'avant) ! Pourtant en focalisant sur la partie supérieure du train, on apprécie que la fin de 80 à 88 degrés du mouvement de remontée est bien exacte mais que la partie basse fait une rotation (de visu vers l'avant) dont je ne comprends pas les paramètres : pour moi la deuxième séquence est finie et en 3ème séquence tout le train finit de pivoter de 80 à 88 degrés.

J'ai fait un essai avec une fin de deuxième séquence à 0 d'angle (au lieu de 42) : je simule donc la rotation pour mettre la roue à plat (2eme séquence) puis la rotation inverse (3eme séquence) et là on voit bien que les deux parties du train restent axées !

Il y a un bug ?

Si on regarde cela de loin c'est bon ! Mais finalement c'est pas réellement mon but...J'adore quand les choses se passent comme prévu !

Pour ce qui est des béquilles de verrouillage, maintenant que j'ai progressé en xml je peux amélorer leur dessin et coder une séquence plus réaliste que la magie de leur disparition par "select" !

G-LUBS
Mécano

Messages : 46
Date d'inscription : 22/09/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  clm76 le Jeu 19 Jan 2017 - 14:06

Bonjour à tous, bonjour  G-LUBS,

Ton problème vient que les deux animations (88° et 42°) se contrarient lorsque la propriété "gear/gear[1]/position-norm" (pour l'ensemble du train gauche) passe de 0.1 à 0.
A 0.1 le train finit sa course de 80°, l'ensemble roue tourne de 42° puis le reste continue à monter pour atteindre les 88° et tout ça avec la même propriété.
Fg ne sait pas bien mélanger les rotations puisque le code xml est balayé dans l'ordre où il est écrit.

A mon avis, il faut séparer les 3 animations. Pour la rentrée du train :
- Utiliser la propriété "gear/gear[1]/position-norm" pour l'animation 80°.
- Lorsque celle-ci est à 0.1, lancer l'animation 42° (traitement d'une condition) et création d'une nouvelle propriété.
- Lorsque cette dernière est à 1, lancer l'animation 80->88°

En bref, séparer les animations (principe que j'ai utilisé sur l'animation des tablettes et des poignées de porte du Citation X).
Essaie cela et je vais essayer également de mon coté dès que j'aurai 5 mn (enfin, un peu plus Laughing )

clm76
Le baron rouge

Messages : 428
Date d'inscription : 27/10/2014
Age : 69
Localisation : Normandie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  G-LUBS le Jeu 19 Jan 2017 - 18:29

Bonjour,
Donc le défaut existe bien !
Je comprends ce que vous dites par analogie avec les boucles qu'on doit décrire dans d'autres langages. Il faut écrire une routine "rotation de 0 à 88" avec deux conditions "de 0 à 80" et "de 80 à 88"...Une condition "quand 80 atteints" pointe vers une sous routine "de 0 à 42" qui une fois réalisée pointe au début de la routine "de 0 à 88" mais en réalisant la seconde condition "de 80 à 88".
Mon xml ne transcrit pas cela mais mon xml est limité car j'évolue sur un programme existant que je modifie pas à pas !!! Je ne saisi pas toute l'étendue de ce langage et sa définition...pas plus que la notion de propriété !
Je conçois bien que mon action du doigt sur la touche G implique un processus informatique qui va pointer sur une partie adéquate du programme pour la réaliser et animer une succession d'écrans simulant le mouvement voulu du train comme je conçois qu'un programme ultra sophistiqué comme l'un des 2 FDM va générer une succession dans le temps de valeurs de ses variables qui agiront automatiquement sur d'autres parties de ce même programme ou sur celles d'autres programmes...mais sans documentation plus poussée que celle qu'on trouve dans le "data/doc" je sens que ça va être laborieux !
Bref il me faut chercher !
A+

G-LUBS
Mécano

Messages : 46
Date d'inscription : 22/09/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  clm76 le Jeu 19 Jan 2017 - 20:51

Voici une solution sans recréer de nouvelle propriété :

Code:
<!-- Descente train gauche avant rotation -->
 <animation>
  <type>rotate</type>
  <object-name>Train_gauche</object-name>
  <object-name>Bequille_haute_gauche</object-name>
  <object-name>Bequille_basse_gauche</object-name>
  <object-name>Phare_exterieur_gauche</object-name>
  <object-name>Projecteur_exterieur_gauche</object-name>
  <object-name>Moyeu_gauche</object-name>
  <object-name>Jante_gauche</object-name>
  <object-name>Pneu_gauche</object-name>
  <object-name>Phare_atterrissage_exter_gauche</object-name>
  <property>gear/gear[1]/position-norm</property>
  <interpolation>
 <entry><ind>0.0</ind><dep>8</dep></entry>
 <entry><ind>0.1</ind><dep>0</dep></entry>
  </interpolation>
  <center>
   <x-m>2.28</x-m>
   <y-m>-2.75</y-m>
   <z-m>0.6</z-m>
  </center>
  <axis>
   <x>1</x>
   <y>0.73996</y>
   <z>0</z>
  </axis>
 </animation>

 <!-- Rotation train gauche autour du pivot -->

 <animation>
  <type>rotate</type>
  <object-name>Moyeu_gauche</object-name>
  <object-name>Jante_gauche</object-name>
  <object-name>Pneu_gauche</object-name>
  <object-name>Phare_exterieur_gauche</object-name>
  <object-name>Projecteur_exterieur_gauche</object-name>
  <property>gear/gear[1]/position-norm</property>
  <interpolation>
  <entry><ind>0.1</ind><dep>42</dep></entry>
  <entry><ind>0.2</ind><dep>0</dep></entry>
  </interpolation>
  <axis>
 <x1-m>1.505</x1-m>
     <y1-m>-1.83</y1-m>
     <z1-m>0.548</z1-m>
     <x2-m>1.7</x2-m>
     <y2-m>-2.039</y2-m>
     <z2-m>0.558</z2-m>
 <!-- Pivot au sol
 <x1-m>2.125</x1-m>
     <y1-m>-2.668</y1-m>
     <z1-m>-0.591</z1-m>
     <x2-m>2.175</x2-m>
     <y2-m>-2.681</y2-m>
     <z2-m>-0.31</z2-m> -->
 </axis>
 </animation>
 
 <!-- Rétraction train gauche -->
 
 <animation>
  <type>rotate</type>
  <object-name>Train_gauche</object-name>
  <object-name>Bequille_haute_gauche</object-name>
  <object-name>Bequille_basse_gauche</object-name>
  <object-name>Phare_exterieur_gauche</object-name>
  <object-name>Projecteur_exterieur_gauche</object-name>
  <object-name>Moyeu_gauche</object-name>
  <object-name>Jante_gauche</object-name>
  <object-name>Pneu_gauche</object-name>
  <object-name>Phare_atterrissage_exter_gauche</object-name>
  <property>gear/gear[1]/position-norm</property>
  <interpolation>
 <entry><ind>0.2</ind><dep>80</dep></entry>
 <entry><ind>1</ind><dep>0</dep></entry> <!-- sorti -->
  </interpolation>
  <center>
   <x-m>2.28</x-m>
   <y-m>-2.75</y-m>
   <z-m>0.6</z-m>
  </center>
  <axis>
   <x>1</x>
   <y>0.73996</y>
   <z>0</z>
  </axis>
 </animation>

Les trois rotations sont complètement séparées tout en conservant la même propriété.
Je n'ai fait que le train gauche.


J'ai coloré les trains et supprimé certaines parties autour du train gauche pour mieux le voir.

clm76
Le baron rouge

Messages : 428
Date d'inscription : 27/10/2014
Age : 69
Localisation : Normandie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  G-LUBS le Jeu 19 Jan 2017 - 21:33

Formidable !
En fait, ce qu'il faut comprendre a ce langage (je pense que c'est le xml qui veut ça !) c'est qu'il faut décrire séparément les animations successives et leur affecter leur part de l'interpolation de la propriété. En un sens c'est logique une fois que c'est fait !!!! Ainsi vous décrivez votre xml comme une descente du train, moi je le raisonnais comme une remontée...puisque c'est comme ça que je le vois au départ du fait du dessin (trains sortis), du but à atteindre (rentrer dans le coffre) et des résultats intermédiaires (dépassement de l'aile) !
Quelque part il y a une description de la méthode à écrire ! Merci encore du coup de main.

PS : quelles sont les balises pour insérer ici du xml déroulant ?

G-LUBS
Mécano

Messages : 46
Date d'inscription : 22/09/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  clm76 le Jeu 19 Jan 2017 - 22:11

Ainsi vous décrivez votre xml comme une descente du train
Oui, c'est plus facile en partant de la propriété à 0.

PS : quelles sont les balises pour insérer ici du xml déroulant ?
La balise Code représentée par le parchemin avec <>.

clm76
Le baron rouge

Messages : 428
Date d'inscription : 27/10/2014
Age : 69
Localisation : Normandie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  G-LUBS le Lun 27 Fév 2017 - 15:13

Bonjour à tous,
Retour sur le codage d'une rotation dans une rotation : je suis passé au F86 du site officiel FG pour y insérer mon propre modèle (pas de gouverne de profondeur, turbine visible, etc.) et je découvre que le codage utilisé pour la manoeuvre de rétraction/déployement de la roulette de nez n'utilise pas de séquençage, les deux rotations sont conjointes : le train avant tourne de 100 degrés dans le plan longitudinal et pivote sur son axe de 90 degrés pour loger la roue à plat (en réalité, la rotation doit être inversée pour correspondre à la réalité !)

Code:
<!-- nosegear -->
    <animation>
      <type>rotate</type>
      <object-name>nosegear1</object-name>
      <object-name>nosewheel</object-name>
      <object-name>nosewheel1</object-name>
      <property>gear/gear[0]/position-norm</property>
      <interpolation>
        <entry>
          <ind>0</ind>
          <dep>100</dep>
        </entry>
        <entry>
          <ind>0.15</ind>
          <dep>100</dep>
        </entry>
        <entry>
          <ind>0.85</ind>
          <dep>0</dep>
        </entry>
        <entry>
          <ind>1</ind>
          <dep>0</dep>
        </entry>
      </interpolation>
      <center>
        <x-m>0.911</x-m>
        <y-m>0</y-m>
        <z-m>-0.74</z-m>
      </center>
      <axis>
        <x>0</x>
        <y>-1</y>
        <z>0</z>
      </axis>
    </animation>

    <animation>
      <type>rotate</type>
      <object-name>nosegear1</object-name>
      <object-name>nosewheel</object-name>
      <object-name>nosewheel1</object-name>
      <property>gear/gear[0]/position-norm</property>
      <interpolation>
        <entry>
          <ind>0</ind>
          <dep>90</dep>
        </entry>

        <entry>
          <ind>0.15</ind>
          <dep>90</dep>
        </entry>
        <entry>
          <ind>1</ind>
          <dep>0</dep>
        </entry>
      </interpolation>
      <center>
        <x-m>0.911</x-m>
        <y-m>0</y-m>
        <z-m>-0.74</z-m>
      </center>
      <axis>
   <x2-m>0.911</x2-m>
   <y2-m>0.0</y2-m>
   <z2-m>-0.74</z2-m>
   <x1-m>0.854</x1-m>
   <y1-m>0.0</y1-m>
   <z1-m>-1.025</z1-m>
      </axis>
    </animation>

G-LUBS
Mécano

Messages : 46
Date d'inscription : 22/09/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Rotation dans une rotation

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum