La patrouille de france Flightgear
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Display 24 boosters Star Wars Unlimited – Crépuscule de la ...
Voir le deal

Décortiquons les avions de Flightgear !

+7
theben22
bibi
BaBoOn
algajojo
JM-26
Patten
Alexis
11 participants

Page 1 sur 2 1, 2  Suivant

Aller en bas

Décortiquons les avions de Flightgear ! Empty Décortiquons les avions de Flightgear !

Message  Alexis Lun 25 Avr 2011 - 0:42

Retrouvez tous les autres tutoriels concernant le développement de FG ici



Décortiquons les avions de Flightgear.



Beaucoup de personnes souhaitent apporter leur contributions à Flightgear,ajouter des objets aux avions (instruments ect...), travailler les animations, sans vraiment savoir comment tout cela fonctionne. Ce que pensent souvent les gens c'est que la moindre action est complexe, qu'elle relève de la programmation pure et dure. En réalité, c'est tout le contraire. Tout dans Flightgear est fait pour vous simplifier la vie.

Au cours de ce tuto, je vais vous expliquer comment sont imbriqués les éléments pour former l'avion que vous piloterez plus ou moins bien, pour illustrer mes propos, je vais décortiquer le DR400 Smile. A la fin de cette lecture, vous ne serez pas encore capable de créer un avion, mais vous serez déjà capable de comprendre à quoi sert tel ou tel fichier, le rôle qu'ils jouent ect ... J'espère que suite à ce tuto, vous aurez la curiosité de jeter un coup d'œil dans les différents fichiers, vous apprendre alors par vous même à comprendre comment les choses fonctionnent (le xml se lit et est très facilement modifiable), je vous le garanti.


Avant toute chose


Il y a plusieurs manières pour travailler sur des avions dans FlightGear, tous les avions de FlightGear ne se présenteront pas comme je vous l'explique, on peut les diviser en deux grandes catégories: les ordonnés et les bordéliques. Chacun sa manière de faire, mais moi je vais vous montrer comment se présente un avion ordonné, tous simplement parce que je veux que vous voir travailler comme cela. Si tout est ordonné, tout le monde pourra vous lire et vous aider, que la personne soit française anglaise ou même chinoise, elle saura tout de suite où aller pour corriger un problème ou ajouter sa contribution.



I- Les types de fichier



Il existe cinq grandes familles de fichier, fouillez un peu vous les trouverez. D'ailleurs tous les avions se trouvent dans Flightgear/data/aircraft (quand je vous disais que j'expliquerais tout)

ac :
Les fichier ac sont toutes les modélisations. Tout ce que vous voyez dans votre avion, et l'avion lui même est un ensemble de plusieurs fichier 3D, tout ces fichiers sont exportés au format AC3D. Il est important de travailler avec ce format qui est performant (il en existe bien d'autres)
png : Vous reconnaissez surement le format d'image png. Flightgear supporte de nombreux autres formats, mais il est largement préférable pour le moment de travailler avec le format png car celui-ci est le plus performants (oubliez le rgb qui est un vieux format)
xml : Il faut parfois peur, mais le xml est un langage extrêmement simple, il peux se comprendre dès la lecture. Plus d'info : http://fr.flightgear.tuxfamily.org/doku.php?id=devel:xml_pour_les_nuls
nas : Les fichier nasal est un langage de programmation un peu moins intuitif que le xml. Il joue un rôle important pour ajouter des comportements spécifiques à votre machine.
wav : les fichiers son de votre avion. Tout ce que vous entendez.




II- L'arborescence des fichiers


Le point le plus important est de comprendre quelle structure adopte les différents fichiers cités ci-dessus. C'est d'ailleurs pour ça que je vous dis qu'il y a des tas de façon de disposer ces fichiers, vous créez l'arborescence de votre choix. Vous pouvez par exemple tout mettre dans quelques fichiers ou séparer les éléments en un grand nombre de fichiers où l'un appel l'autre ect...
Mais ce qu'il faut comprendre avant tout c'est que FlightGear va s'orienter vers un unique fichier, c'est un fichier xml qui est nommé en -set (ex : avion-set.xml). Ce fichier va alors aller chercher d'autres fichiers qui vont appeler d'autres fichiers qui vont appeler d'autres fichiers... bref vous avez compris, vous avez une véritable cascade de fichiers et PAF ! un magnifique avion apparaît dans FlightGear ! De quoi vous donner le vertige avant même d'avoir décollé !


III- Le fichier avion-set.xml

Comme je le disais, c'est le premier fichier que FlightGear va lire. Pour bien comprendre, on va décortiquer le DR400 ! n'ayez pas peur, je ne rentre pas dans les détails, je vais juste vous montrer ce qui va découler de ce fichier.

Voici le fichier dr400-120-set.xml

Code:
<?xml version="1.0" encoding="UTF-8"?>

<!-- ########################################

 # DR400-jsbSim by PAF team
 # April 2012 : Modified by PAF team
 # http://equipe-flightgear.forumactif.com

##########################################-->

 <PropertyList include="dr400-jsbsim-cnf.xml">

  <sim>
    <description>Robin DR 400-120 (JSBSim)</description>
    <author>PAF team, Guillaume CHAUVAT, Daniel DUBREUIL (FDM JSBSim), Laurent HAYVEL, Christian THIRIOT (2012, textures, audio), Emmanuel BARANGER (3D)</author>
  </sim>

</PropertyList>


Là vous allez me dire qu'il n'y a pas grand chose ? et bien non, regarder bien PropertyList include="dr400-jsbsim-cnf.xml", comme vous pouvez le lire, ceci indique que le -set inclue un autre fichier dr400-jsbsim-cnf.xml
Tout aurait pu se trouver dans un seul fichier, mais ici on a préféré séparer les choses, c'est une question de rangement.

Remarque : On y a indiqué les auteurs, le description de l'avion. Tout ce qui est inscrit ici apparaît dans FGrun quand vous choisissez un avion.

Allez regardons le fichier dr400-jsbsim-cnf.xml

Code:
<?xml version="1.0" encoding="UTF-8"?>

<!-- ########################################

 # DR400-jsbSim by PAF team
 # Oct 2012 : Modified by PAF team
 # http://equipe-flightgear.forumactif.com

##########################################-->

<PropertyList include="dr400-base.xml">

  <sim>

    <description>Robin DR400-120 (JSBSim)</description>
    <author>PAF team, Guillaume CHAUVAT, Daniel DUBREUIL (FDM JSBSim), Laurent HAYVEL, Christian THIRIOT (2012, textures, audio), Emmanuel BARANGER (3D)</author>

    <flight-model archive="y">jsb</flight-model>
    <aero archive="y">dr400-jsbsim</aero>

  </sim>
 
  <!-- trim for level cruise, rudder for propwash -->

  <controls>
    <flight>
      <aileron-trim>0.021</aileron-trim>
      <rudder-trim>0.016</rudder-trim>
    </flight>
    <engines>
      <engine n="0">
        <magnetos>0</magnetos>
      </engine>
    </engines>
  </controls>

  <autopilot>
    <config>
      <min-climb-speed-kt type="float">70.0</min-climb-speed-kt>
      <best-climb-speed-kt type="float">75.0</best-climb-speed-kt>
      <target-climb-rate-fpm type="float">500.0</target-climb-rate-fpm>
      <target-descent-rate-fpm type="float">1000.0</target-descent-rate-fpm>
      <elevator-adj-factor type="float">4000.0</elevator-adj-factor>
      <integral-contribution type="float">0.01</integral-contribution>
      <zero-pitch-throttle type="float">0.45</zero-pitch-throttle>
      <zero-pitch-trim-full-throttle type="float">0.14</zero-pitch-trim-full-throttle>
    </config>
  </autopilot>

  <consumables>
    <fuel>
      <tank n="0">
        <level-gal_us>25.8</level-gal_us>
      </tank>
    </fuel>
  </consumables>

  <instrumentation>
    <attitude-indicator>
      <config>
        <tumble-flag archive="y" type="bool">true</tumble-flag>
      </config>
    </attitude-indicator>
    <encoder>
      <serviceable type="bool">true</serviceable>
    </encoder>
  </instrumentation>
 
</PropertyList>

Vous remarquerez que ce fichier en inclue un autre comme tout à l'heure : dr400-base.xml, on va y venir
Je souhaiterais juste vous faire remarquer quelque chose : <flight-model archive="y">jsb</flight-model> nous venons ici d'indiquer où se trouve le FDM ! autrement dit le fichier qui fait voler votre avion (nous en reparlerons).



Passons maintenant au fichier dr400-base.xml (ceci est un extrait)

Code:
<?xml version="1.0" encoding="UTF-8"?>

<!-- ########################################

 # DR400-jsbSim by PAF team
 # April 2012 : Modified by PAF team
 # http://equipe-flightgear.forumactif.com

##########################################-->

<PropertyList>

  <sim include="Nasal/views.xml">

    <aircraft-version>0.1</aircraft-version>
    <status>Alpha</status>

    <fuel-fraction>1.0</fuel-fraction>

    <startup>
      <splash-texture>Aircraft/DR400-jsbSim/dr400-splash.png</splash-texture>
    </startup>

    <sound>
      <path archive="y">Aircraft/DR400-jsbSim/Sounds/dr400-jsbSim-sound.xml</path>   
    </sound>
   
    <model>
      <path archive="y">Aircraft/DR400-jsbSim/Models/dr400-jsbSim.xml</path>
      <show-immat type="bool">1</show-immat>
      <livery>
        <file type="string">default</file>
      </livery>
      <config>
        <show-pilot type="bool">0</show-pilot>
        <show-copilot type="bool">0</show-copilot>
        <show-yokes type="bool">1</show-yokes>
        <glass-reflection type="bool">0</glass-reflection>
        <light-cone type="bool">1</light-cone>
        <details-high type="bool">0</details-high>
      </config>
    </model>

    <flaps>
      <setting>0.00</setting>
      <setting>0.25</setting> <!-- 15 deg -->
      <setting>1.00</setting> <!-- 60 deg -->
    </flaps>


  </sim>
 
  <input>
    <keyboard include="Nasal/dr400-keyboard.xml"/> 
  </input>
   
</PropertyList>

Voilà un fichier un peu plus gros, regardez d'un peu plus près le fichier, vous verrez des choses intéressantes :


Code:

    <startup>
      <splash-texture>Aircraft/DR400/Splash/dr400-120-splash.png</splash-texture>
    </startup>
Ici, on indique ou se trouve l'image de la page de chargement de l'avion.

Code:

    <sound>
      <path archive="y">Aircraft/DR400/Sounds/dr400-sound.xml</path>
    </sound>

Ici on indique où se trouve le fichier xml qui va gérer les sons

Code:

    <model>
      <path archive="y">Aircraft/DR400/Models/dr400.xml</path>
    </model>
Voilà un élément très intéressant, je vais en reparler plus tard. Ici on indique le chemin vers le fichier qui va faire apparaître votre avion et lancer un tas d'autres fichiers xml du même style.



Voilà pour le -set qui ici s'est décomposé en 3 fichiers, vous pouvez trouver la même chose, mais en un seul fichier -set. N'ayez pas peur de ce que vous venez de voir, je veux juste vous faire comprendre que le -set est le tronc de l'arbre qui va se diviser en branches principales (ici les fichier xml gérant les son, le FDM, la modélisation et les animations). N'hésitez pas à regardez plusieurs avions, à chercher où on appel tel ou tel fichier.


IV- Le fichier FDM.xml

Attention, voici un extrait de FDM ! je vous laisse admirer la bête.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://jsbsim.sourceforge.net/JSBSim.xsl"?>

<!-- ########################################

 # DR400-jsbSim 120 HP by PAF team
 # Oct 2012 : Modified by PAF team
 # http://equipe-flightgear.forumactif.com

##########################################-->

<fdm_config name="DR400-120" version="2.0" release="BETA"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">

  <fileheader>
    <author>Daniel Dubreuil, Guillaume Chauvat</author>
    <filecreationdate> 2007-05-01 </filecreationdate>
    <version> 2012-10-26 </version>
    <description> Robin DR400-120 </description>
  </fileheader>

  <metrics>
    <wingarea  unit="M2">      13.60 </wingarea>
    <wingspan  unit="M" >        8.72 </wingspan>
    <wing_incidence unit="DEG">  2.00 </wing_incidence>
    <chord    unit="M" >        1.56 </chord> <!-- 1.71 m for the center part -->
    <htailarea unit="M2">        2.88 </htailarea>
    <htailarm  unit="M" >        3.75 </htailarm>
    <vtailarea unit="M2">        1.63 </vtailarea>
    <vtailarm  unit="M" >        3.95 </vtailarm>
    <location name="AERORP" unit="M">
      <x>  -1.33 </x> <!-- for CG never behind even if loaded -->
      <y>  0.00 </y>
      <z>  0.00 </z>
    </location>
    <location name="EYEPOINT" unit="M">
      <x>  -1.31 </x>
      <y>  -0.28 </y>
      <z>  0.55 </z>
    </location>
    <location name="VRP" unit="M">
      <x> 0 </x> <!-- was 180 in -->
      <y> 0 </y>
      <z> 0 </z> <!-- was 12 in -->
    </location>
  </metrics>

  <mass_balance>
    <ixx unit="KG*M2">      2500 </ixx> <!-- TODO: calculate a correct value -->
    <iyy unit="KG*M2">      2800 </iyy>
    <izz unit="KG*M2">      4000 </izz>
    <ixy unit="KG*M2">        0 </ixy>
    <ixz unit="KG*M2">        0 </ixz>
    <iyz unit="KG*M2">        0 </iyz>
    <emptywt unit="KG" >    585 </emptywt>
    <location name="CG" unit="M">
      <x>  -1.40 </x> <!-- 0.37 from leading edge for 218 m.kg empty -->
      <y>  0.00 </y>
      <z>  -0.18 </z>
    </location>

    <pointmass name="PILOT" >
      <weight unit="KG">75</weight>
      <location name="POINTMASS" unit="M">
        <x> -1.36 </x>
        <y> -0.28 </y>
        <z>  0.05 </z>
      </location>
    </pointmass>
   
    <pointmass name="COPILOT">
      <weight unit="KG">70</weight>
      <location name="POINTMASS" unit="M">
        <x> -1.36 </x>
        <y>  0.28 </y>
        <z>  0.05 </z>
      </location>
    </pointmass>

  </mass_balance>

  <ground_reactions>

    <contact type="BOGEY" name="LEFT_MAIN">
      <location unit="M">
        <x> -1.02 </x>
        <y> -1.24 </y>
        <z> -1.11 </z>
      </location>
      <static_friction>  0.80 </static_friction>
      <dynamic_friction> 0.50 </dynamic_friction>
      <rolling_friction> 0.02 </rolling_friction>
      <spring_coeff unit="N/M">      65000 </spring_coeff>
      <damping_coeff unit="N/M/SEC"> 24000 </damping_coeff>
      <max_steer unit="DEG">0</max_steer>
      <brake_group>LEFT</brake_group>
      <retractable>FIXED</retractable>
    </contact>
   
    <contact type="BOGEY" name="RIGHT_MAIN">
      <location unit="M">
        <x> -1.02 </x>
        <y>  1.24 </y>
        <z> -1.11 </z>
      </location>
      <static_friction>  0.80 </static_friction>
      <dynamic_friction> 0.50 </dynamic_friction>
      <rolling_friction> 0.02 </rolling_friction>
      <spring_coeff unit="N/M">      65000 </spring_coeff>
      <damping_coeff unit="N/M/SEC"> 24000 </damping_coeff>
      <max_steer unit="DEG">0</max_steer>
      <brake_group>RIGHT</brake_group>
      <retractable>FIXED</retractable>
    </contact>

    <contact type="STRUCTURE" name="LEFT_WING">
      <location unit="M">
        <x> -1.20 </x>
        <y> -4.35 </y>
        <z>  0.00 </z>
      </location>
      <static_friction>  0.2 </static_friction>
      <dynamic_friction> 0.2 </dynamic_friction>
      <spring_coeff unit="N/M">      190000 </spring_coeff>
      <damping_coeff unit="N/M/SEC">  15000 </damping_coeff>
    </contact>

    <contact type="STRUCTURE" name="RIGHT_WING">
      <location unit="M">
        <x> -1.20 </x>
        <y>  4.35 </y>
        <z>  0.00 </z>
      </location>
      <static_friction>  0.2 </static_friction>
      <dynamic_friction> 0.2 </dynamic_friction>
      <spring_coeff unit="N/M">      190000 </spring_coeff>
      <damping_coeff unit="N/M/SEC">  15000 </damping_coeff>
    </contact>

  </ground_reactions>

  <propulsion>

    <engine file="Lycoming_O-235-L2A">
      <location unit="M">
        <x>  -2.60 </x>
        <y>  0.00 </y>
        <z>  0.00 </z>
      </location>
      <orient unit="DEG">
        <pitch> 0.00 </pitch>
        <roll>  0.00 </roll>
        <yaw>  0.00 </yaw>
      </orient>
      <feed>0</feed>
      <thruster file="prop72_CK_S6-0-56">
        <location unit="M">
          <x>  -3.15 </x>
          <y>  0.00 </y>
          <z>  0.00 </z>
        </location>
        <orient unit="DEG">
          <pitch> 0.00 </pitch>
          <roll>  0.00 </roll>
          <yaw>  0.00 </yaw>
        </orient>
      </thruster>
    </engine>

    <tank type="FUEL" number="0">
      <location unit="M">
        <x>  -0.65 </x> <!-- 1.12 from leading edge -->
        <y>  0.00 </y>
        <z>  -0.35 </z>
      </location>
      <capacity unit="KG"> 78.59 </capacity> <!-- 109 L available on 110 L total-->
      <type>AVGAS</type> <!-- 0.721 kg/L -->
    </tank>

  </propulsion>

  <flight_control name="FCS: DR400-120">

    <channel name="Pitch">
      <summer name="Pitch Trim Sum">
        <input>fcs/elevator-cmd-norm</input>
        <input>fcs/pitch-trim-cmd-norm</input>
        <clipto>
          <min> -1 </min>
          <max>  1 </max>
        </clipto>
      </summer>

      <aerosurface_scale name="Elevator Control">
        <input>fcs/pitch-trim-sum</input>
        <range>
          <min> -0.35 </min>
          <max>  0.30 </max>
        </range>
        <output>fcs/elevator-pos-rad</output>
      </aerosurface_scale>

    </channel>

    <channel name="Roll">
      <summer name="Roll Trim Sum">
        <input>fcs/aileron-cmd-norm</input>
        <input>fcs/roll-trim-cmd-norm</input>
        <clipto>
          <min> -1 </min>
          <max>  1 </max>
        </clipto>
      </summer>

      <aerosurface_scale name="Left Aileron Control">
        <input>fcs/roll-trim-sum</input>
        <range>
          <min> -0.35 </min>
          <max>  0.35 </max>
        </range>
        <output>fcs/left-aileron-pos-rad</output>
      </aerosurface_scale>

      <aerosurface_scale name="Right Aileron Control">
        <input>fcs/roll-trim-sum</input>
        <range>
          <min> -0.35 </min>
          <max>  0.35 </max>
        </range>
        <output>fcs/right-aileron-pos-rad</output>
      </aerosurface_scale>

    </channel>

    <channel name="Yaw">
      <summer name="Rudder Command Sum">
        <input>fcs/rudder-cmd-norm</input>
        <input>fcs/yaw-trim-cmd-norm</input>
        <limit>
          <min> -0.35 </min>
          <max>  0.35 </max>
        </limit>
      </summer>

      <aerosurface_scale name="Rudder Control">
        <input>fcs/rudder-command-sum</input>
        <range>
          <min> -0.35 </min>
          <max>  0.35 </max>
        </range>
        <output>fcs/rudder-pos-rad</output>
      </aerosurface_scale>

    </channel>

    <channel name="Flaps">
      <kinematic name="Flaps Control">
        <input>fcs/flap-cmd-norm</input>
        <traverse>
          <setting>
            <position>  0 </position>
            <time>      0 </time>
          </setting>
          <setting>
            <position> 0.25 </position>
            <time>      1.5 </time>
          </setting>
          <setting>
            <position> 1 </position>
            <time>    3 </time>
          </setting>
        </traverse>
        <output>fcs/flap-pos-norm</output>
      </kinematic>

      <aerosurface_scale name="Flap Position degree">
        <input>fcs/flap-pos-norm</input>
        <range>
          <min>0</min>
          <max>60</max>
        </range>
        <output>fcs/flap-pos-deg</output>
      </aerosurface_scale>
     

    </channel>

    <channel name="Landing Gear">
    </channel>

    <channel name="Speedbrake">
      <kinematic name="Speedbrake Control">
        <input>fcs/speedbrake-cmd-norm</input>
        <traverse>
          <setting>
            <position> 0 </position>
            <time>    0 </time>
          </setting>
          <setting>
            <position> 1 </position>
            <time>    1 </time>
          </setting>
        </traverse>
        <output>fcs/speedbrake-pos-norm</output>
      </kinematic>

    </channel>

  </flight_control>

  <aerodynamics>
      <function name="aero/coefficient/CLde">
        <description>Lift_due_to_Elevator_Deflection</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sh-sqft</property>
          <property>fcs/elevator-pos-rad</property>
          <value>0.2</value>
        </product>
      </function>

    </axis>

    <axis name="DRAG">

      <!-- under test Dany 2012-04-21 / Guillaume 2012-05-01 -->
      <function name="aero/coefficient/CD0">
        <description>Drag_due_to_alpha</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sw-sqft</property>
          <property>aero/function/kCDge</property>
          <table>
            <independentVar lookup="row">aero/alpha-wing-rad</independentVar>
            <tableData>
              -1.571   1.6000
              -0.349   0.4800
              -0.209   0.0400
              -0.105   0.0355
              -0.052   0.0344
              -0.009   0.0343
              0.018   0.0345
              0.057   0.0350
              0.080   0.0354
              0.096   0.0360
              0.115   0.0367
              0.150   0.0385
              0.209   0.0430
              0.279   0.0540
              0.349   0.4800
              1.571   1.6000
            </tableData>
          </table>
        </product>
      </function>

      <!-- under test Dany 21 avril 2012 /  Guillaume 2012-05-01, with drag due to alpha -->
      <function name="aero/coefficient/CDi">
        <description>Induced_drag</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sw-sqft</property>
          <property>aero/cl-squared</property>
          <value>0.067</value>
        </product>
      </function>

      <function name="aero/coefficient/CDmach">
        <description>Drag_due_to_mach</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sw-sqft</property>
          <table>
            <independentVar lookup="row">velocities/mach</independentVar>
            <tableData>
              0.00      0.000
              0.65      0.000
              1.10      0.023
              1.80      0.015
            </tableData>
          </table>
        </product>
      </function>

      <function name="aero/coefficient/CDde">
        <description>Drag_due_to_Elevator_Deflection</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sh-sqft</property>
          <abs><property>fcs/elevator-pos-norm</property></abs>
          <value>0.04</value>
        </product>
      </function>

    </axis>

    <axis name="SIDE">

      <function name="aero/coefficient/CYb">
        <description>Side_force_due_to_beta</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sw-sqft</property>
          <property>aero/beta-rad</property>
          <value>-0.3</value>
        </product>
      </function>

    </axis>

    <axis name="ROLL">

      <function name="aero/coefficient/Clb">
        <description>Roll_moment_due_to_beta</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sw-sqft</property>
          <property>metrics/bw-ft</property>
          <property>aero/beta-rad</property>
          <value>-0.025</value>
          <!-- stall and spin (1) -->
          <table>
            <independentVar lookup="row">aero/alpha-wing-rad</independentVar>
            <tableData>
              0.227    1
              0.244    5
            </tableData>
          </table>
        </product>
      </function>

      <function name="aero/coefficient/Clp">
        <description>Roll_moment_due_to_roll_rate (roll damping)</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sw-sqft</property>
          <property>metrics/bw-ft</property>
          <property>aero/bi2vel</property>
          <property>velocities/p-aero-rad_sec</property>
          <value>-1</value>
        </product>
      </function>

      <function name="aero/coefficient/Clr">
        <description>Roll_moment_due_to_yaw_rate</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sw-sqft</property>
          <property>metrics/bw-ft</property>
          <property>aero/bi2vel</property>
          <property>velocities/r-aero-rad_sec</property>
          <value>0.08</value>
          <!-- stall and spin (2) -->
          <table>
            <independentVar lookup="row">aero/alpha-wing-rad</independentVar>
            <independentVar lookup="column">velocities/r-aero-rad_sec</independentVar>
            <tableData>
                      -0.15  -0.1  0    0.1  0.15
              0.227    1      1    1    1    1
              0.244    50    20    1    20    50
            </tableData>
          </table>
        </product>
      </function>

    </axis>

    <axis name="PITCH">

      <function name="aero/coefficient/Cmo">
        <description>Pitching_moment_at_zero_alpha</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sw-sqft</property>
          <property>metrics/cbarw-ft</property>
          <value>0.1300</value>
        </product>
      </function>
    </axis>

    <axis name="YAW">

      <function name="aero/coefficient/Cnb">
        <description>Yaw_moment_due_to_beta</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sw-sqft</property>
          <property>metrics/bw-ft</property>
          <property>aero/beta-rad</property>
          <value>0.05</value>
        </product>
      </function>

      <function name="aero/coefficient/Cnpw"> <!-- En test -->
        <description>Yaw_moment_due_to_propwash</description>
        <product>
          <property>propulsion/engine/thrust-lbs</property>
          <value>-0.2</value>
        </product>
      </function>

      <function name="aero/coefficient/Cnda">
        <description>Adverse_yaw</description>
        <product>
          <property>aero/qbar-psf</property>
          <property>metrics/Sw-sqft</property>
          <property>metrics/bw-ft</property>
          <property>fcs/left-aileron-pos-rad</property>
          <value>-0.01</value>
        </product>
      </function>

    </axis>

  </aerodynamics>
 
  <system file="shadow-tweak"/>
  <system file="crash-detect"/>

</fdm_config>


Alors tout d'abord, sachez qu'il existe plusieurs sortes de FDM, les deux principaux sont YASIM et JSBSIM. Ici nous avons affaire à un FDM JSB.
JSBsim est plus basé sur des données aérodynamiques alors que dans YASIM, on y entrer les caractéristiques de l'avion et l'odinateur va calculer son comportement, voilà très grossièrement le fonctionnement des ces deux FDM, je ne rentre pas plus dans le détail car ce n'est pas le but du tuto.



V- Le fichier model.xml

Nous allons maintenant nous intéresser a toute la partie "visible" de notre avion. Je vous l'ai montré tout à l'heure, dans le -set, nous avons vu que nous appelions un fichier nommé dr400.xml se trouvant dans le dossier Models. Regardons le de plus près (j'ai retiré certaines parties ...) :


Code:

<PropertyList>

  <path>dr400.ac</path>

  <nasal>
    <load>
      var livery_update = aircraft.livery_update.new("Aircraft/DR400/Models/Liveries", 10);
    </load>
    <unload>
      livery_update.stop();
    </unload>
  </nasal>


    <property-base>sim/model/livery</property-base>
    <texture-prop>texture</texture-prop>
    <texture>texture.png</texture>
<!--
    <diffuse>
      <red-prop>diffuse/red</red-prop>
      <green-prop>diffuse/green</green-prop>
      <blue-prop>diffuse/blue</blue-prop>
    </diffuse>

    <ambient>
      <red-prop>ambient/red</red-prop>
      <green-prop>ambient/green</green-prop>
      <blue-prop>ambient/blue</blue-prop>
    </ambient>
-->
    <specular>
      <red-prop>specular/red</red-prop>
      <green-prop>specular/green</green-prop>
      <blue-prop>specular/blue</blue-prop>
    </specular>

    <emission>
      <red-prop>emission/red</red-prop>
      <green-prop>emission/green</green-prop>
      <blue-prop>emission/blue</blue-prop>
    </emission>
<!--
    <shininess>
      <shininess-prop>shininess</shininess-prop>
    </shininess>
-->
  </animation>

  <animation>
    <type>shader</type>
    <shader>chrome</shader>
    <texture>Aircraft/Generic/Effects/glass_shader.png</texture>
    <object-name>verriere</object-name>
    <object-name>verriere2</object-name>
    <object-name>lampe</object-name>
  </animation>

  <animation>
    <type>noshadow</type>
    <object-name>verriere</object-name>
    <object-name>verriere2</object-name>
    <object-name>lampe</object-name>
    <object-name>lampetoitOn</object-name>
    <object-name>lampeGOn</object-name>
    <object-name>lampeDOn</object-name>
    <object-name>lampetoitOff</object-name>
    <object-name>lampeGOff</object-name>
    <object-name>lampeDOff</object-name>
    <object-name>propdisc</object-name>
    <object-name>propblur</object-name>
  </animation>

  <!-- Interieur -->
  <model>
    <path>Aircraft/DR400/Models/Interior/interior.xml</path>
    <offsets>
      <x-m> 0.0 </x-m>
      <y-m> 0.0 </y-m>
      <z-m> 0.0 </z-m>
      <roll-deg>    0.0 </roll-deg>
      <pitch-deg>  0.0 </pitch-deg>
      <heading-deg> 0.0 </heading-deg>
    </offsets>
  </model>

  <!-- Immatriculatoin -->
  <model>
    <path>Aircraft/DR400/Models/Immat/immat.xml</path>
    <offsets>
      <x-m> 0.0 </x-m>
      <y-m> 0.0 </y-m>
      <z-m> 0.0 </z-m>
      <roll-deg>    0.0 </roll-deg>
      <pitch-deg>  0.0 </pitch-deg>
      <heading-deg> 0.0 </heading-deg>
    </offsets>
  </model>

  <!-- Une ombre pour OSG -->
  <model>
    <name>shadowOSG</name>
    <path>Aircraft/DR400/Models/shadow.xml</path>
  </model>

  <animation>
    <type>select</type>
    <object-name>shadowOSG</object-name>
    <condition>
      <equals>
        <property>sim[0]/rendering/shadows-ac</property>
        <value>true</value>
      </equals>
    </condition>
  </animation>
  <!-- Compression -->
  <animation>
    <name>RoueAvant</name>
    <object-name>roueA</object-name>
    <object-name>cacheA</object-name>
  </animation>

  <animation>
    <type>translate</type>
    <object-name>RoueAvant</object-name>
    <property>gear/gear[0]/compression-norm</property>
    <interpolation>
      <entry><ind> 0 </ind><dep>  0.04 </dep></entry>
      <entry><ind> 1 </ind><dep> -0.25 </dep></entry>
    </interpolation>
    <axis>
      <x> -0.029387 </x>
      <y>  0.000000 </y>
      <z> -0.155914 </z>
    </axis>
  </animation>
</PropertyList>



Le fichier est déjà assez imposant, vous comprenez mieux l'intéret de séparer les fichiers, ici on ne parle que de l'extérieur de l'avion, mais on aurait pu y ajouter d'autres éléments constituant le cockpit, vous imaginez alors la taille du fichier ? voilà pourquoi il est intéressant de séparer les éléments, tout ce qui concerne l'avion et plus particulièrement l'extérieur est dans ce fichier. Vous l'avez sans doute constaté, dans le dossier Models il y a un autre dossier nommé Interrior, on peut alors s'imaginer que quand on rentre dans ce dossier, on rentre dans l'avion, on y trouve un fichier xml du même style que celui présenté ci-dessus qui va gérer tout se trouve dans l'avion. Mieux encore vous avez ensuite un dossier Panel, rentrer dans ce dossier signifie que vous vous tournez vers le tableux de bord, et dans ce dossier vous avez un autre dossier nommé Instrument, et dans celui-ci vous avez un dossier par instrument, tout est bien séparé, tout propre !

Voilà comment se compose ce fameux dossier Model, je vous propose maintenant de comprendre comment se lancent les fichiers. Pour celà, retournons à notre dr400.xml.

Code:


  <path>dr400.ac</path>



Au tout début, nous trouvons cette ligne. Celle-ci demande à Flightgear de charger la modélisation de tout le DR400, tout sauf, l'intérieur qui a été placé dans un autre fichier 3D. Vous pouvez toujours chercher, vous ne trouverez pas le même type de ligne pour appeler la texture.png pour la simple et bonne raison que la texture est chargée par le modèle 3D. Donc le xml charge le .ac qui charge le .png


Alors à ce stade on peut imaginer que flightgear a chargé l'extérieur de votre avion, dans le reste de ce fichier on va faire deux choses principales qui se répèteront dans d'autres fichiers .xml (interior.xml, instrument.xml. ect)

  • 1- Dire où se trouve le xml qui va gérer l'intérieur de l'appareil

on va pas y aller par quatres chemins, regardez un peu :

Code:


  <!-- Interieur -->
  <model>
    <path>Aircraft/DR400/Models/Interior/interior.xml</path>
    <offsets>
      <x-m> 0.0 </x-m>
      <y-m> 0.0 </y-m>
      <z-m> 0.0 </z-m>
      <roll-deg>    0.0 </roll-deg>
      <pitch-deg>  0.0 </pitch-deg>
      <heading-deg> 0.0 </heading-deg>
    </offsets>
  </model>

Regardez bien, les premières lignes indiquent où se trouve le fichier xml qui va gérer l'intérieur de l'avion, comme pour tout à l'heure ce fichier xml va appeler la modélisation 3D qui va appeler la texture. Le fichier interior, va allors indiquer ou se trouve le fichier panel.xml, celui-ci va charger la modélisation du tableau de bord qui va appeler la texture, suivent alors tous les instruments, mais bon je crois que vous avez compris le truc !

Dans les lignes suivantes, il est question de coordonnées x y z, tout ceci sert à placer l'objet 3D par rapport à l'objet 3D indiqué au début du xml (ici, c'est par rapport à la modélisation de l'avion). Le fait que toutes les coordonnées soient à 0 signifie que la modélisation du cockpit a été placée avec blender, il colle donc parfaitement à l'avion, pas besoin de le déplacer. Vous pouvez vous ammuser à changer les valeurs de x, y ou z et regarder le résulat dans Flightgear, le cockpit aura bougé à droite, à gauche, en haut, en bas, en avant, en arrière !
Je vous conseille d'aller jeter un coup d'oeil sur le fichier xml qui place les instruments, un indice c'est le fichier panel.xml, vous verrez que cette fois-ci, des coordonnées ont été attribués, vous pouvez vous amuser à les faire bouger si vous le souhaitez.
Sinon, roll pitch et compagnie ça sert à faire tourner les objets.



  • 2- Comment les différentes parties extérieures se déplacent (ailerons, volets ect..) ce sont les animations

Allez prenons un exemple :

Code:

  <!-- Animations des ailerons -->
  <animation>
    <type>rotate</type>
    <object-name>aileronG</object-name>
    <property>surface-positions/left-aileron-pos-norm</property>
    <interpolation>
      <entry><ind> -0.75 </ind><dep>  15 </dep></entry>
      <entry><ind>  0.00 </ind><dep>  0 </dep></entry>
      <entry><ind>  0.75 </ind><dep> -10 </dep></entry>
    </interpolation>
    <axis>
      <x1-m> -0.457 </x1-m>
      <y1-m> -2.752 </y1-m>
      <z1-m> -0.382 </z1-m>
      <x2-m> -1.058 </x2-m>
      <y2-m> -4.331 </y2-m>
      <z2-m>  0.006 </z2-m>
    </axis>
  </animation>

Voici l'animation qui fait bouger l'aileron gauche. En gros l'animation fonctionne comme ceci :
- Dans object-name on dit quel objet doit bouger. Il faut savoir que tous les objets constituants la modélisation ont des noms, ici aileronG
- Dans type, on indique quelle type d'animation on veut faire, ici une rotation
- Property : attention c'est important, on défini ici une propriétée. Dans flightgear tout est régie par des propriétées, elles ont de jolis petits noms comme surface-positions/left-aileron-pos-norm pour les ailerons, /controls/flight/flaps pour les volets, et bien d'autres encore. Mais vous comprenez bien qu'il faut dire a Flightgear quand il faut faire bouger l'objet appelé aileronG. Et oui, quand la propriété surface-positions/left-aileron-pos-norm varie (et on la fait varier en bougeant le manche !)
- Dans axis, vous allez définir la position de deux points, le point 1 (x1,y1,z1) et le point 2 (x2, y2, z2) les deux points forment un segment, et l'objet va tourner autour du segment.
-L'interpollation est quelque chose d'un peu plus compliqué, encore quelque chose qui me dépasse un peu lol ça permet en tout cas de modifier un peu l'animation, par exemple pour un train d'atterrissage, si vous voulez que l'animation soit lente au départ et rapide à la fin, vous pouvez opter pour l'interpolation.


Pour plus d'info sur les animations, discipline un peu compliquée pour un débutant, mais vraiment très passionante, voici un lien vers le wiki anglais : http://wiki.flightgear.org/Howto:_Animate_models#Interpolation




VI- Le fichier son.xml

Voici la dernière grande partie importante de notre avion, son doux ronronnement !
Comme je vous l'avais dit précédement, le fichier gérant tout les son a été indiqué par un des fichier -set, il se trouve dans Sound (logique non ?) et se nomme : dr400-sound.xml

Et voilà comment celui-ci se présente (ceci est un extrait):

Code:

<?xml version="1.0" encoding="UTF-8"?>

<!-- 26-08-2008
    30-08-2008 Updated by AJ
    04-09-2009 Updated by Helijah -->


<PropertyList>

  <fx>

    <crank>
      <name>engstart</name>
      <path>Aircraft/DR400/Sounds/dr400-starter.wav</path>
      <property>engines/engine/cranking</property>
      <volume>
        <offset>-0.6</offset>
      </volume>
      <reference-dist>100</reference-dist>
      <max-dist>1000</max-dist>
    </crank>

    <crank>
      <name>crank</name>
      <mode>looped</mode>
      <path>Sounds/cranking.wav</path>
      <condition>
        <property>engines/engine/cranking</property>
        <not>
          <property>engines/engine/running</property>
        </not>
      </condition>
      <volume>
        <offset>0.9</offset>
      </volume>
      <reference-dist>100</reference-dist>
      <max-dist>1000</max-dist>
    </crank>

    <crank>
      <name>cough</name>
      <path>Sounds/coughing.wav</path>
      <property>engines/engine/running</property>
      <volume>
        <offset>0.2</offset>
      </volume>
      <reference-dist>100</reference-dist>
      <max-dist>1000</max-dist>
    </crank>

    <engine>
      <name>engine</name>
      <mode>looped</mode>
      <path>Aircraft/DR400/Sounds/dr400-engine.wav</path>
      <condition>
        <and>
          <greater-than>
            <property>engines/engine/rpm</property>
            <value>60</value>
          </greater-than>
          <or>
            <greater-than>
              <property>instrumentation/doors/crew/position-norm</property>
              <value>0</value>
            </greater-than>
            <not>
              <property>sim/current-view/internal</property>
            </not>
          </or>
        </and>
      </condition>
      <volume>
        <property>engines/engine/mp-osi</property>
        <factor>0.00375</factor>
        <min>0.5</min>
        <max>2.0</max>
      </volume>
      <pitch>
        <property>engines/engine/rpm</property>
        <factor>0.0005</factor>
        <min>0.2</min>
        <max>2.0</max>
        <offset>0.15</offset>
      </pitch>
      <reference-dist>100</reference-dist>
      <max-dist>1000</max-dist>
    </engine>

    <engine-internal>
      <name>engine-internal</name>
      <mode>looped</mode>
      <path>Aircraft/DR400/Sounds/dr400-engine-internal.wav</path>
      <condition>
        <and>
          <greater-than>
            <property>engines/engine/rpm</property>
            <value>60</value>
          </greater-than>
          <not>
            <greater-than>
              <property>instrumentation/doors/crew/position-norm</property>
              <value>0</value>
            </greater-than>
          </not>
        </and>
      </condition>
      <pitch>
        <property>engines/engine/rpm</property>
        <factor>0.0005</factor>
        <min>0.2</min>
        <max>2.0</max>
        <offset>0.15</offset>
      </pitch>
      <reference-dist>4.0</reference-dist>
      <max-dist>10.0</max-dist>
    </engine-internal>

    <propeller>
      <name>propeller</name>
      <mode>looped</mode>
      <path>Aircraft/DR400/Sounds/dr400-prop.wav</path>
      <condition>
        <greater-than>
          <property>engines/engine/rpm</property>
          <value>60</value>
        </greater-than>
        <not>
          <and>
            <equals>
              <property>instrumentation/doors/crew/position-norm</property>
              <value>0</value>
            </equals>
            <property>sim/current-view/internal</property>
          </and>
        </not>
      </condition>
      <pitch>
        <property>/engines/engine/mp-osi</property>
        <factor>0.0036</factor>
        <min>0.5</min>
        <max>2.0</max>
        <offset>0.9</offset>
      </pitch>
      <reference-dist>100</reference-dist>
      <max-dist>1000</max-dist>
    </propeller>

    <rumble>
      <name>rumble</name>
      <mode>looped</mode>
      <path>Sounds/rumble.wav</path>
      <condition>
        <and>
          <or>
            <property>gear/gear[0]/wow</property>
            <property>gear/gear[1]/wow</property>
            <property>gear/gear[2]/wow</property>
          </or>
          <or>
            <greater-than>
              <property>gear/gear[0]/rollspeed-ms</property>
              <value>1</value>
            </greater-than>
            <greater-than>
              <property>gear/gear[1]/rollspeed-ms</property>
              <value>1</value>
            </greater-than>
            <greater-than>
              <property>gear/gear[2]/rollspeed-ms</property>
              <value>1</value>
            </greater-than>
          </or>
        </and>
      </condition>
      <volume>
        <property>velocities/airspeed-kt</property>
        <type>log</type>
        <factor>0.5</factor>
        <max>2.5</max>
      </volume>
      <reference-dist>100</reference-dist>
      <max-dist>1000</max-dist>
    </rumble>

    <squeal>
      <name>squeal</name>
      <path>Sounds/squeal.wav</path>
      <condition>
        <or>
          <property>gear/gear[0]/wow</property>
          <property>gear/gear[1]/wow</property>
          <property>gear/gear[2]/wow</property>
        </or>
      </condition>
      <volume>
        <property>velocities/speed-down-fps</property>
        <factor>0.5</factor>
        <max>1.0</max>
      </volume>
      <volume>
        <property>velocities/airspeed-kt</property>
        <factor>0.01</factor>
        <max>0.2</max>
        <max>1.0</max>
      </volume>
      <volume>
        <internal>dt_stop</internal>
        <factor>0.05</factor>
        <max>1.0</max>
      </volume>
      <pitch>
        <property>velocities/airspeed-kt</property>
        <factor>0.0025</factor>
        <offset>1.2</offset>
      </pitch>
      <reference-dist>100</reference-dist>
      <max-dist>1000</max-dist>
    </squeal>

    <flap>
      <name>flaps</name>
      <mode>in-transit</mode>
      <path>Sounds/flaps.wav</path>
      <property>surface-positions/flap-pos-norm</property>
      <volume>
        <factor>0.2</factor>
      </volume>
      <reference-dist>10.0</reference-dist>
      <max-dist>20.0</max-dist>
    </flap>

    <stall>
      <name>stall</name>
      <mode>looped</mode>
      <path>Aircraft/DR400/Sounds/dr400-stall.wav</path>
      <condition>
        <and>
          <property>controls/electric/battery-switch</property>
          <less-than>
            <property>velocities/airspeed-kt</property>
            <value>46</value>
          </less-than>
          <not>
            <property>gear/gear[0]/wow</property>
            <property>gear/gear[1]/wow</property>
            <property>gear/gear[2]/wow</property>
          </not>
        </and>
      </condition>
      <reference-dist>4.0</reference-dist>
      <max-dist>10.0</max-dist>
    </stall>

    <wind>
      <name>wind</name>
      <mode>looped</mode>
      <path>Aircraft/DR400/Sounds/dr400-wind.wav</path>
      <property>velocities/airspeed-kt</property>
      <volume>
        <property>velocities/airspeed-kt</property>
        <factor>0.005</factor>
        <max>1.5</max>
      </volume>
      <pitch>
        <property>velocities/airspeed-kt</property>
        <factor>0.005</factor>
      </pitch>
      <reference-dist>100</reference-dist>
      <max-dist>1000</max-dist>
    </wind>

    <!--                  Toggle Switches                  -->
    <click>
      <name>Battery on</name>
      <path>Sounds/click.wav</path>
      <condition>
        <property>controls/electric/battery-switch</property>
      </condition>
      <volume>
        <factor>1.0</factor>
      </volume>
    </click>

    <click>
      <name>Nav Light Off</name>
      <path>Sounds/click.wav</path>
      <condition>
        <not>
          <property>controls/switches/nav-lights</property>
        </not>
      </condition>
      <volume>
        <factor>1.0</factor>
      </volume>
    </click>

  </fx>

</PropertyList>


Si vous regardiez de plus près, vous verrez que tout ceci fonctionne de la même manière que les animations. La encore des propriétés entre en jeux, ce qui est un peu logique, il parait évident que flightgear doit savoir quand il doit lancer le bruit du moteur !


VII- Shéma Bilan

Décortiquons les avions de Flightgear ! Schama10


Dernière édition par Alexis le Dim 4 Nov 2012 - 18:58, édité 9 fois
Alexis
Alexis
Admin

Messages : 2067
Date d'inscription : 19/02/2009
Age : 31
Localisation : Loire Atlantique

http://fgalexis.jimdo.com/

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  Patten Lun 25 Avr 2011 - 11:31

Très bien présenté, très bon tuto, on attend la suite avec impatience...

Si mon post pollue ce tuto, tu supprimes sans hésiter Alexis.

Very Happy
Patten
Patten
Pilote de chasse

Messages : 3233
Date d'inscription : 16/01/2011
Age : 69

http://pattenflightgear.wifeo.com/

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  Alexis Lun 25 Avr 2011 - 15:50

Mais non, personne ne pollue !

Vous inquiétez pas, ce tuto là je vais le finir rapidement
Alexis
Alexis
Admin

Messages : 2067
Date d'inscription : 19/02/2009
Age : 31
Localisation : Loire Atlantique

http://fgalexis.jimdo.com/

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  Alexis Lun 25 Avr 2011 - 22:56

Allez, voilà un petit bout en plus ! je me rends compte que plus ça va et plus je donne de détails lol.

Le tuto est déjà bien avancé, si vous prenez la peine de le lire, vous serez capable de comprendre comment tout ça fonctionne et est imbriqué !
Alexis
Alexis
Admin

Messages : 2067
Date d'inscription : 19/02/2009
Age : 31
Localisation : Loire Atlantique

http://fgalexis.jimdo.com/

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  JM-26 Mar 26 Avr 2011 - 0:07

Alexis,

Vraiment très très bonne initiative. Moi qui suis en plein dedans, c'est hyper intéressant et cela va beaucoup m'aider pour la suite.
Bon courage pour la suite.

Amicalement,
JM-26
JM-26
Contrôleur aérien

Messages : 1911
Date d'inscription : 04/07/2010
Age : 57
Localisation : Anneyron-26 (LFLR)

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  algajojo Mer 27 Avr 2011 - 0:28

super alexis !!!!!!!!!
ça correspond tout à fait à la discussion que nous avions l'autre soir !!!!!
bravo pour ton courage (car ça n'est pas rien tout ce travail que tu fais)
Je vais essayer à partir de ton tuto de faire un synopsis assez visuel et graphique (dès que je l'aurai assimilé)

merci à toi pour ce temps passé à nous aider

amicalement
georges
algajojo
algajojo
Pilote de jet

Messages : 775
Date d'inscription : 17/10/2010
Age : 66
Localisation : Chelles LFPH

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  Alexis Mer 27 Avr 2011 - 23:41

Salut,
Je viens tout juste de terminer le tuto et j'ai constaté que je ne pouvais pas le poster car il dépassait la longueur autorisée ! j'ai essayer de rallonger cette longueur admissible, mais pas moyen de trouver cette option dans l'administration du forum. Du coup j'ai retiré certaines parties des xml présents dans les balises code, de toute manière, il est préférable de lire ces fichier avec un logiciel comme notepad++ qui rend les choses plus lisibles.
Vous constaterez aussi que je n'ai pas beaucoup développé la partie concernant les sons, tout simplement parce que ça me dépasse un peu et que c'est peut-être un peu compliqué pour un tuto qui se veux être une introduction à d'autres tutos que je ferais ! (une intro un peu longue quand même lol)

Si vous souhaitez que je parle plus de certaines choses, j'ai sans doutes oublié quelques truc, ou si vous avez des questions, n'hésitez pas, j'y répondrais avec grand plaisir !
algajojo a écrit:ça correspond tout à fait à la discussion que nous avions l'autre soir !!!!!
Effectivement georges, c'est justement suite à la petite discussion de l'autre soir que je me suis mis à faire ce tuto, le but visé est de rendre le développement d'avions plus accessible à tous, si on arrivaient à créer des tonnes de tuto pour faire toutes sortes de choses (même très simple comme animer un aileron), et bien beaucoup de gens se mettront à ajouter des contribs. Même si ces contibs sont toutes bête (ajout d'un instru par exemple), mises bout à bout on finiraient des avions ou on les avanceraient beaucoup.
algajojo a écrit:Je vais essayer à partir de ton tuto de faire un synopsis assez visuel et graphique (dès que je l'aurai assimilé)

Il y a pas de soucis ! j'ai mis une petite image de ma création à la fin, mais dès que tu me propose quelque chose je le poste à la suite.
Alexis
Alexis
Admin

Messages : 2067
Date d'inscription : 19/02/2009
Age : 31
Localisation : Loire Atlantique

http://fgalexis.jimdo.com/

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  algajojo Mer 27 Avr 2011 - 23:54

alexis a écrit:
algajojo a écrit:Je vais essayer à partir de ton tuto de faire un synopsis assez visuel et graphique (dès que je l'aurai assimilé)

Il y a pas de soucis ! j'ai mis une petite image de ma création à la fin, mais dès que tu me propose quelque chose je le poste à la suite.

ma proposition est antérieure à la publication de ton image, je pensais effectivement à quelque chose de ce genre mais cela perd de son intérêt maintenant !!!!!
je vais quand même réfléchir à une présentation

merci encore Alexis

amicalement
georges
algajojo
algajojo
Pilote de jet

Messages : 775
Date d'inscription : 17/10/2010
Age : 66
Localisation : Chelles LFPH

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  BaBoOn Jeu 28 Avr 2011 - 12:35

Coucou

Il est super ton tuto Alexis, bravo pour le courage que tu as de nous fournir autant d'explications clair et passionnantes. Ton schéma est vraiment exeptionnel, design et clair. Avec ça on ne peut que tout comprendre.

Merci

Cordialement Guillaume
BaBoOn
BaBoOn
Pilote de jet

Messages : 700
Date d'inscription : 12/09/2010
Age : 45
Localisation : Corrèze LFDE

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  bibi Jeu 28 Avr 2011 - 12:58

superbe tuto alexis
j'aurai un question, je voulais me lancer dans le xml en modifiant les caractéristiques de vol du gloster meteor d'helijah, car le comportement de l'avion me parait vraiment bizzare au niveau de la profondeur. Que dois-je faire, comme ça fonctionne.
merci d'avance ^^

P.S je veux bien croire que j'arrive avec la fleur au fusil mais j'aimerai bien me lancer dans le xml mais ça fait qand meme bien peur Embarassed
bibi
bibi
Pilote d'hélico

Messages : 957
Date d'inscription : 23/08/2010
Age : 30
Localisation : loire-atlantique

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  bibi Ven 29 Avr 2011 - 19:53

bon je me suis jeter dans le fdm et j'ai modifier les valeur d'helijah pour les rendre le plus réel possible et j'obtient un avion beaucoup plus stable (l'équilibrage était comment dire ...)
donc j'ai un beau fdm mais comment vous le mettre en ligne ? je n'arrive pas a faire marcher dllfree
bibi
bibi
Pilote d'hélico

Messages : 957
Date d'inscription : 23/08/2010
Age : 30
Localisation : loire-atlantique

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  Alexis Ven 29 Avr 2011 - 20:27

salut,
Tu peux toujours le poster sur le forum, tu copie tout dans des balises code, les gens copieront tout ça et j'éditerais ton post pour remplacer tout ça par un lien de téléchargement
Alexis
Alexis
Admin

Messages : 2067
Date d'inscription : 19/02/2009
Age : 31
Localisation : Loire Atlantique

http://fgalexis.jimdo.com/

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  bibi Ven 29 Avr 2011 - 20:34

Lien de téléchargement : http://dl.free.fr/getfile.pl?file=/62iTrxaY

Code:

<?xml version="1.0" encoding="UTF-8"?>

<!--  Gloster Meteor : 2010 - BARANGER Emmanuel
-->

<airplane mass="10000">

  <approach speed="105" aoa="10" fuel="1.0">
    <control-setting axis="/controls/engines/engine[0]/throttle" value="0.2"/>
    <control-setting axis="/controls/engines/engine[1]/throttle" value="0.2"/>
    <control-setting axis="/controls/flight/flaps" value="1"/>
    <control-setting axis="/controls/gear/gear-down" value="1"/>
    <solve-weight idx="0" weight="170"/>
  </approach>

  <cruise speed="450" alt="19500" fuel="1.0">
    <control-setting axis="/controls/engines/engine[0]/throttle" value="1"/>
    <control-setting axis="/controls/engines/engine[1]/throttle" value="1"/>
    <control-setting axis="/controls/flight/flaps" value="0"/>
    <control-setting axis="/controls/gear/gear-down" value="0"/>
    <solve-weight idx="0" weight="170"/>
  </cruise>

  <cockpit x="3.728" y="0.0" z="0.492"/>

  <!-- Fuselage with engine on top -->
  <fuselage ax="6.272" ay="0" az="-0.446" bx="-5.295" by="0" bz="0.220" width="1.2" taper="0.5" midpoint="0.20" idrag="1"/>

  <fuselage ax="3.123" ay="2.356" az="-0.654" bx="-0.864" by="2.356" bz="-0.654" width="1.082" taper="0.8" midpoint="0.50" idrag="0.4"/>

  <fuselage ax="3.123" ay="-2.356" az="-0.654" bx="-0.864" by="-2.356" bz="-0.654" width="1.082" taper="0.8" midpoint="0.50" idrag="0.4"/>

<!--
        incidence="1"
        twist="-1"
-->
  <wing x="1.223" y="0.622" z="-0.662"
        chord="3.655"
        length="6"
        taper="0.35"
        sweep="-3"
        dihedral="3"
      idrag="1">
        <stall aoa="16" width="3" peak="1.3"/>
          <spoiler start="0.374" end="0.613" lift="1.3" drag="3"/>
        <flap0 start="0.00" end="0.22" lift="1.3" drag="2"/>
        <flap1 start="0.47" end="0.93" lift="1.1" drag="1.5"/>

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

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

        <control-speed control="FLAP0" transition-time="30"/>
        <control-speed control="FLAP1" transition-time="0.1"/>
  </wing>

  <hstab x="-5.384" y="0" z="1.112"
        chord="1.706"
        length="2.34"
        taper="0.5"
        sweep="2">
        <stall aoa="20" width="3" peak="1.3"/>
        <flap0 start="0.18" end="1" lift="1.6" drag="1.5"/>

        <control-input axis="/controls/flight/elevator" square="false" control="FLAP0" />
        <control-input axis="/controls/flight/elevator-trim" control="FLAP0"/>

        <control-output control="FLAP0" prop="/surface-positions/elevator-pos-norm"/>
  </hstab>

  <vstab x="-5.042" y="0" z="-0.428"
        chord="2.25"
        length="2.5"
        taper="0.5"
        sweep="15">
        <stall aoa="16" width="5" peak="1.5"/>
        <flap0 start="0" end="1" lift="1.8" drag="1.3"/>

        <control-input axis="/controls/flight/rudder" control="FLAP0" invert="true"/>
        <control-input axis="/controls/flight/rudder-trim" control="FLAP0" invert="true"/>

        <control-output control="FLAP0" prop="/surface-positions/rudder-pos-norm"/>
  </vstab>

  <!--
  Junkers Jumo 004B turbojet
  8.8 kN (1,980 lbf) 8700 rpm
  -->
  <jet x="1.74" y="2.356" z="-0.59"
      n1-idle="30"
      n1-max="90"
      n2-idle="35"
      n2-max="95"
      egt="850"
      tsfc="1.39"
      mass="1642"
      thrust="1980" >
      <control-input axis="/controls/engines/engine[0]/throttle" control="THROTTLE"/>
  </jet>
 
  <jet x="1.74" y="-2.356" z="-0.59"
      n1-idle="30"
      n1-max="90"
      n2-idle="35"
      n2-max="95"
      egt="850" 
      tsfc="1.39" 
      mass="1642"
      thrust="1980" >
      <control-input axis="/controls/engines/engine[1]/throttle" control="THROTTLE"/>
  </jet>

  <!-- Undercarriage -->
  <!-- nose -->
  <gear x="5.577" y="0" z="-1.971"
        retract-time="7"
        compression="0.30"
        spring="1"
        damp="2"
        sfric="4"
       dfric="5"
      idrag="3">
      
        <control-input axis="/controls/flight/rudder" control="STEER" src0="-1.0" src1="1.0" dst0="-0.1" dst1="0.1"/>
        <control-input axis="/controls/gear/gear-down" control="EXTEND"/>

        <control-output control="EXTEND" prop="/gear/gear[0]/position-norm"/>

        <control-speed control="EXTEND" transition-time="7"/>
  </gear>

  <!-- left main -->
  <gear x="1.639" y="1.587" z="-1.962"
        retract-time="7"
        compression="0.30"
        spring="1"
        damp="2"
        idrag="2.5">
       
      <control-input axis="/controls/gear/brake-left" control="BRAKE"/>
        <control-input axis="/controls/gear/brake-parking" control="BRAKE"/>
        <control-input axis="/controls/gear/gear-down" control="EXTEND"/>

        <control-output control="EXTEND" prop="/gear/gear[1]/position-norm"/>

        <control-speed control="EXTEND" transition-time="7"/>
  </gear>

  <!-- right main -->
  <gear x="1.639" y="-1.587" z="-1.962"
        retract-time="7"
        compression="0.30"
        spring="1"
        damp="2"
        idrag="2.5">
      
      <control-input axis="/controls/gear/brake-right" control="BRAKE"/>
        <control-input axis="/controls/gear/brake-parking" control="BRAKE"/>
        <control-input axis="/controls/gear/gear-down" control="EXTEND"/>

        <control-output control="EXTEND" prop="/gear/gear[2]/position-norm"/>

        <control-speed control="EXTEND" transition-time="7"/>
  </gear>

  <weight x="3.533" y="0" z="0.094" mass-prop="/yasim/gloster-meteor/pilot-lb"/>
  <ballast x="3.9" y="0" z="0.25" mass="900"/>

  <!-- Internal tanks
  2*280 liter wings
  -->
  <tank x="1.9" y="-2.3" z="-0.65" jet="true" capacity="1250"/>
  <tank x="1.9"  y="2.3" z="-0.65" jet="true" capacity="1250"/>

  <!-- CG Theorique x=1.358 y=0 z=-0.260 -->
  <!-- x a 1.536 pour etre en avant des roues -->
  <ballast x="3.5" y="0" z="-2" mass="2500"/>

</airplane>

bibi
bibi
Pilote d'hélico

Messages : 957
Date d'inscription : 23/08/2010
Age : 30
Localisation : loire-atlantique

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  algajojo Ven 29 Avr 2011 - 23:58

@ bibi
ce qui serait bien (mis à part, bien sur, le travail que tu as fait pour améliorer le fdm !!) c'est de laisser les valeurs existantes avant sous forme de commentaire et bien sur de commenter les modifs voire le pourquoi de celles ci !!!
je sais, jamais content (mais j'en profite aujourd'hui, voir le calendrier)

amicalement
georges
algajojo
algajojo
Pilote de jet

Messages : 775
Date d'inscription : 17/10/2010
Age : 66
Localisation : Chelles LFPH

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  Alexis Sam 30 Avr 2011 - 0:16

algajojo a écrit:
je sais, jamais content (mais j'en profite aujourd'hui, voir le calendrier)

ouai je crois que tu peux lol Smile moi c'est bon, j'ai offert un tuto Smile
Alexis
Alexis
Admin

Messages : 2067
Date d'inscription : 19/02/2009
Age : 31
Localisation : Loire Atlantique

http://fgalexis.jimdo.com/

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  algajojo Sam 30 Avr 2011 - 0:20

Alexis a écrit:
algajojo a écrit:
je sais, jamais content (mais j'en profite aujourd'hui, voir le calendrier)

ouai je crois que tu peux lol Smile moi c'est bon, j'ai offert un tuto Smile

merci pour le tuto mais je suis très heureux de le partager avec notre communauté de potes
algajojo
algajojo
Pilote de jet

Messages : 775
Date d'inscription : 17/10/2010
Age : 66
Localisation : Chelles LFPH

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  theben22 Mar 24 Mai 2011 - 14:45

Bonjour,

Petite question à vous messieurs les développeurs :
Actuellement pour tester les modifs en court de dév, je redémarre TOUT fg pour être sûr que les dites modifications soient bien prises en compte. N'y a t il pas un moyen plus rapide pour recharger l'avion ?
theben22
theben22
Pilote d'autogire

Messages : 167
Date d'inscription : 09/10/2010
Age : 43
Localisation : Dans le Santerre (80)

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  algajojo Mar 24 Mai 2011 - 19:28

theben22 a écrit:Bonjour,

Petite question à vous messieurs les développeurs :
Actuellement pour tester les modifs en court de dév, je redémarre TOUT fg pour être sûr que les dites modifications soient bien prises en compte. N'y a t il pas un moyen plus rapide pour recharger l'avion ?

perso j'ai pas trouvé donc je suis preneur aussi !!!!

amicalement
georges
algajojo
algajojo
Pilote de jet

Messages : 775
Date d'inscription : 17/10/2010
Age : 66
Localisation : Chelles LFPH

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  F-Sig Mer 25 Mai 2011 - 10:51

Theben22 a ecrit:
Petite question à vous messieurs les développeurs :
Actuellement pour tester les modifs en court de dév, je redémarre TOUT fg pour être sûr que les dites modifications soient bien prises en compte. N'y a t il pas un moyen plus rapide pour recharger l'avion ?
Les fonctions Menu "Debug>Reload>....." sont prévues pour ça, mais seule "Reload-Autopilot" semble fonctionner.
Selon des posts IRC "Reload-panel" fonctionnait du temps des Panels 2d. Je n'ai rien trouvé de plus précis.
Ce serait pourtant bien pratique de ne recharger que la partie modifiée! Ou que l'avion sans la scène!

Amicalement.


F-Sig
Pilote d'hélico

Messages : 993
Date d'inscription : 21/09/2010
Age : 77
Localisation : LFIM - LFBT

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  helijah Mer 25 Mai 2011 - 14:42

Et bien ne cherchez plus il n'y a pas ! Le changement d'avion ou le re-chargement de l'avion n'est pas possible.

J'avais proposé une solution assez simple à Timoore et qui pourrait fonctionner partout et sans gros changement dans FG mais à première vue cela n'a pas plus Sad

L'idée est simple pourtant.

1 - Création d'un menu de sélection de l'avion
2 - Choisir l'avion dans le menu et cliquer sur appliquer.
3 - Sauver dans un fichier l'état de FG en cours (position, météo, vitesse, altitude etc....) en ajoutant le nom de l'avion sélectionné.
4 - quitter et relancer FG comme cela est possible avec toute application (voyez par exemple Firefox lors de l'ajout d'un module)
5 - on se retrouve dans FG à la même position, altitude, méteo etc... mais avec le nouvelle avion.

Amicalement Emmanuel
helijah
helijah
Pilote de voltige

Messages : 1658
Date d'inscription : 19/02/2009
Age : 57
Localisation : Chartres - France

http://helijah.free.fr/flightgear/hangar.htm

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  theben22 Jeu 26 Mai 2011 - 1:25

Bon bah tant pis. Merci pour le tuyau. On continuera à redémarrer du coup ! Wink
theben22
theben22
Pilote d'autogire

Messages : 167
Date d'inscription : 09/10/2010
Age : 43
Localisation : Dans le Santerre (80)

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  Alexis Jeu 26 Mai 2011 - 10:52

A quand le script phyton pour voire toutes les animations dans blender (à l'image du script yasim !) le gars qui me sort ce script, je le vénère comme un dieu jusqu'à la fin de mes jours !
Alexis
Alexis
Admin

Messages : 2067
Date d'inscription : 19/02/2009
Age : 31
Localisation : Loire Atlantique

http://fgalexis.jimdo.com/

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  sohe Jeu 26 Mai 2011 - 20:54

Bonsoir,

En parlant de script, pourriez vous m'indiquer ou télécharger le fameux script de Melchior, je ne le trouve pas. Je cherche surement mal

Cordialement
sohe
sohe
Pilote sur bimoteurs

Messages : 269
Date d'inscription : 30/08/2010
Age : 44
Localisation : Tarbes

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  helijah Jeu 26 Mai 2011 - 21:17

sohe a écrit:Bonsoir,

En parlant de script, pourriez vous m'indiquer ou télécharger le fameux script de Melchior, je ne le trouve pas. Je cherche surement mal

Cordialement

Salut sohe,

J'ai personnellement créé un petit dossier sur mon site avec plusieurs scripts Blender dont le fameux script sur les FDM de melchior. Tout est là :

Des scripts pour Blender

Le script en question étant : yasim_import.py

Amicalement Emmanuel
helijah
helijah
Pilote de voltige

Messages : 1658
Date d'inscription : 19/02/2009
Age : 57
Localisation : Chartres - France

http://helijah.free.fr/flightgear/hangar.htm

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  sohe Jeu 26 Mai 2011 - 21:33

Bon et bien voilà, j'ai passé facilement 3/4 d'heure sur ton site pour regarder toutes les mises à jours de tes appareils.
Je me suis bien dis que tu devais avoir ça dans un coin de ce dernier mais comme je le disais je cherchai mal Very Happy

Merci Emmanuel.
sohe
sohe
Pilote sur bimoteurs

Messages : 269
Date d'inscription : 30/08/2010
Age : 44
Localisation : Tarbes

Revenir en haut Aller en bas

Décortiquons les avions de Flightgear ! Empty Re: Décortiquons les avions de Flightgear !

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Revenir en haut

- Sujets similaires

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