#1 [↑][↓]  02-05-2016 11:03:44

gastonj
En vacances
Date d'inscription: 13-02-2012

[FSX]Codage XML

Bonjour,

Faut bien y passer, je regarde le modeldefXml du SDK car je réfléchis aux diverses jauges 3D pour le cockpit de mon projet en cours, notamment pour un volant de compensation de profondeur (elevator trim).

Il y a effectivement une rubrique à cet effet dans le fichier en question. En voici un extrait :

        <Name>trimtab_elevator_key_pct</Name>
        <AnimLength>100</AnimLength>
        <Animation>
            <Parameter>
                <Sim>
                    <Variable>ELEVATOR TRIM PCT</Variable>
                    <Units>percent</Units>
                    <Scale>0.5</Scale>
                    <Bias>50</Bias>
                </Sim>
            </Parameter>
        </Animation>


Je comprends que cette animation s'appuie sur la variable du simulateur "elevator trim pct" qui est un pourcentage, que la valeur moyenne (ici ce serait le neutre) correspond à la clé 50 et que je dois faire 2 tours complets du volant pour les clés d'animation de 0 à 100 (animlength=100) vu que l'échelle est à 1/2 (0.5). Est-ce que j'ai bon?

Autre chose, une variable de type position est-elle un enregistrement avec 2 rubriques (X et Y) en coordonnées d'écran? C'est ce qui me semble être à la lecture de ce fichier car je vois M:X ou M:Y pour un évènement de type souris.

Merci pour votre concours!
JMC

Dernière modification par gastonj (02-05-2016 11:06:46)

Hors ligne

 

#2 [↑][↓]  02-05-2016 11:34:19

Lagaffe
Pilote Virtuel
Membre donateur
Lieu: LFPO / retraité
Date d'inscription: 13-03-2008
Site web

Re: [FSX]Codage XML

Salut Gaston,

Bienvenu dans le monde du XML ... solv_gif

Oui tu as bon. Ton animation Gmax doit se faire entre 0 et 100 en termes de keys.
La key 0 correspond à -50 soit plutôt -100 vu qu'il y a un scale de 0.5 et la key 100 correspond à +100 donc au final 2 tours donc ton trim sera plus "fin".

Comme c'est un peu vieux dans ma mémoire, je viens de vérifier sur le Cessna 150 et pour le trim j'ai utilisé "lever_trimtab_elevator_key_pct" au niveau animation.


@+ Didier
http://www.pilote-virtuel.com/img/members/53/mini-Logo-Beaver-small.jpg
W10 Pro 64b Build 22H2 - Boitier HAF 932 - Z390 STRIX-F - 9900K - 2x16 Go - NVidia 3060 Ti 8 Go - Alim Corsair 800W - Ecran 34" - NVidia Studio ready 536.23
P3D v5.4 = http://www.pilote-virtuel.com/img/membe … ages-A.jpg - MSFS Deluxe/STORE - X-Plane 12B

Hors ligne

 

#3 [↑][↓]  02-05-2016 11:57:36

gastonj
En vacances
Date d'inscription: 13-02-2012

Re: [FSX]Codage XML

Bonjour,

Oui, je viens de le faire avec "trimtab_elevator_key_pct"  et avec 2 tours. En gros, le nombre de tours de l'animation importe peu finalement, plus on fait de tours plus sensible c'est. Il faut en faire un quand même sinon ça paraitrait bizarre laugh !

JMC

Hors ligne

 

#4 [↑][↓]  02-05-2016 15:35:49

gastonj
En vacances
Date d'inscription: 13-02-2012

Re: [FSX]Codage XML

Re,

Je poursuis mes investigations ....Est ce que "l1" ne serait pas le moyen de récupérer sur la pile la variable registre "s1" pour "store to  1" et "load  from 1"?
Est-ce que les variables locales sont initialisées à 0 ou false etc...selon le type déclaré? Cela me semble être le cas si j'en crois quelques morceaux choisis du ModelDef.xml.
Dans les opérations sur la pile, il y a un joyeux mélange de données de différents types du genre opération arithmétique avec des booléens.
Bon, on a vraiment l'impression d'être revenu 40 ans en arrière du temps des "babasses" Hewlet Packard! Même moi qui suis loin d'être un génie, je sais utiliser "Yacc" et "Lex" e_Clown

JMC

ps : un morceau choisi

        <MouseRect>
            <CallbackCode>
                (M:Event) 'LeftSingle' scmp 0 !=
                if{
                <!-- Calculate amount to change value by pixel offset -->
                (L:Magneto0Click, position) (M:X) - 10 / int s0 0 !=
                if{

                    <!-- Calculate current value -->
                    (A:Recip eng right magneto:1,bool) 2 * (A:Recip eng left magneto:1,bool) +

                    <!-- Add amount to change to get new value -->
                    l0 + 3 min 0 max s1

                    <!-- Both -->
                    3 == if{ 3 (&gt;K:MAGNETO1_SET) }
                    <!-- Right -->
                    els{ l1 2 == if{ 1 (&gt;K:MAGNETO1_SET) }
                        <!-- Left -->
                        els{ l1 1 == if{ 2 (&gt;K:MAGNETO1_SET) }
                        <!-- Off -->
                        els{ 0 (&gt;K:MAGNETO1_SET) }
                        }
                        }
                    }
                }
                (M:X) (&gt;L:Magneto0Click, position)
            </CallbackCode>
        </MouseRect>

J'ai mis en évidence les variables "registre". Mais je ne comprends pas pourquoi ils utilisent la variable "s0" : une idée?

Dernière modification par gastonj (02-05-2016 15:50:17)

Hors ligne

 

#5 [↑][↓]  02-05-2016 15:50:35

bede40
Commandant de bord
Lieu: Entre les deux oreilles
Date d'inscription: 28-02-2012
Renommée :   80 

Re: [FSX]Codage XML

Bonjour,

Toutes les variables locales sont déclarées avec une valeur nulle par défaut, quel que soit le type.
Si on veut forcer la valeur à 1 au chargement du modèle, il suffit de créer une gauge qui initialise les variables (locales et autres) et la placer sur un panel du  vc 3d.

[Vcockpit01] par exemple, avec X=1,Y=1,L=1,H=1 (gauge00=PushStol!PushStol_Init, 1, 1 , 1, 1):
.

<Gauge Name="PushStol_Init" Version="1.0">

<Element>
  <Select>
    <Value>
    (L:Push_Init, bool) 0 ==
           if{
              1 (&gt;A:REALISM,percent)
             90 (&gt;L:rot_tdb, number)
            360 (&gt;L:trans_tdb, number)
              1 (&gt;L:tdb_visible, number)
              1 (&gt;K:ALL_LIGHTS_TOGGLE)
             50 (&gt;A:ELEVATOR TRIM PCT, percent)

             75 (&gt;L:rot_computer, number)
              0 (&gt;L:visi_computer, number)
              0 (&gt;L:visi_win00, number)
              0 (&gt;L:visi_win01, number)
              0 (&gt;L:visi_win02 number)

              0 (&gt;L:VTHgps_ON, bool)
              0 (&gt;L:pushgps, number)

              0 (&gt;L:VTHtcn_ON, number)
              1 (&gt;L:VecDirVisi, number)
              1 (&gt;L:Push_Init, bool)
             }

    </Value>
  </Select>
</Element>

Quant à la polonaise inverse, on a jamais dit qu'elle volait sur le dos! laughlaughlaugh

Edit:

Pour les s0, s1, etc: stockage de la valeur dans un registre (de 0 à 49), équivalent de [STO] nnn des calculettes HP.
Pour lire les registres : l0, l1, ... (lettre L pour load).

Dernière modification par bede40 (02-05-2016 15:57:41)


Blédina: "Essayer c'est grandir"

Hors ligne

 

#6 [↑][↓]  02-05-2016 16:50:01

gastonj
En vacances
Date d'inscription: 13-02-2012

Re: [FSX]Codage XML

Salut,

Ok, tu confirmes ce que je pensais et c'est bien.  Il semblerait que dans le code que j'ai balancé, une opération avec une valeur de variable nulle ne les gênent en aucune manière (pour eux c'est équivalent à 0 ou False)!
As-tu vu l'utilisation de "S0" dans le code? Moi, j'avoue que non! Si j'ai vu, j'avais lu "10" au lieu de " l0"!
JMC

PS:J'ai du me séparer de ma HP, il y a plus de 20 ans  ( non 30 ans, au profit d'un portable Compaq 8088,512k, 3" 1.4Mo,CGA).

Dernière modification par gastonj (02-05-2016 16:57:50)

Hors ligne

 

Pied de page des forums

Maintenance informatique Lausanne