Vous n'êtes pas identifié(e).
Salut
J'en appelle aux programmeurs ... je souhaiterais connaitre le code à mettre dans le XML pour avoir en fonction l'altitude en fonction du sol .. j'ai tenté cela ..
<Animation guid="982ef8e1-3eb4-4df8-9dfa-4546f7c0d871" length="500" name="needle_altitude" type="Sim" typeParam="AutoPlay" typeParam2="needle_altitude"/>
<PartInfo>
<Name>needle_altitude</Name>
<AnimLength>500</AnimLength>
<Animation>
<Parameter>
<Code>(A:INDICATED ALTITUDE, meters)</Code>
</Parameter>
</Animation>
</PartInfo>
Mais non ..
Merci pour votre aide
Alex
Hors ligne
Bonsoir,
Tu as fait ton code pour quelle aiguille ?
Celle des centaines, des milliers ou de dizaines de milliers de mètres ?
Et pour quelle raison tu as créé une animation en 500 frames ?
MSI B250M Mortar, I7-7700K, 16Go 2400MHz, MSI RTX 4060 Ti 8Go, be quiet! Dark Rock TF, SSD Samsung 850 EVO, DD WD 1To, Oculus rift
Hors ligne
Très simple:
Tu télécharges le Ménestrel HN-433 et tu regardes les codes associés aux aiguilles de l'altimètre.
Pourquoi se casser la tête à pondre des codes XML pour des animations classiques sans valeur ajoutée ?
Un animation d'aiguille qui doit faire un tour entier de cadran devrait normalement se coder sur 100 ou 360 frames le cas échéant.
@+ Didier
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/members/53/P3Dv5HF-Reglages-A.jpg - MSFS Deluxe/STORE - X-Plane 12B
Hors ligne
Si je comprends bien la question
je souhaiterais connaitre le code à mettre dans le XML pour avoir l'altitude en fonction du sol
Nous avions ceci sous FsX, soit la distance avion/sol :
<Animation name="needle_radio_height" guid="910A4D4E-1DC8-4d7b-BC20-153E7FF4A121" length="360" type="Sim" typeParam2="needle_radio_height" typeParam="AutoPlay" />
<PartInfo>
<Name>needle_radio_height</Name>
<AnimLength>360</AnimLength>
<Animation>
<Parameter>
<Code>
(A:Radio Height, feet)
</Code>
</Parameter>
</Animation>
</PartInfo>
Valable pour un instrument à une seule aiguille (radio-altimètre), la valeur max et l'échelle des graduations étant fixés en fonction des besoins.
Maintenant rien n'empêche de créer plusieurs aiguilles.
Dernière modification par bede40 (04-11-2021 23:34:20)
Blédina: "Essayer c'est grandir"
Hors ligne
Hello
merci pour vos réponses. Pour ce qui est de l'altitude cela est OK et cela fonctionne
Mais là en effet je cherche la hauteur par rapport au sol , le terme est mieux ... je me suis trompé tout à l'heure .
j'ai bien essayé le code de Bédé mais cela ne prend pas ...
Dans le SDK de FS2020 je ne vois pas de Needle-radio-height
Merci
Alex
Hors ligne
Dans l'exemple donné par Bernard, Needle-radio-height est une variable locale (L:) donc elle n'est pas dans le SDK mais elle peut être calculée via le biais d'autres variables standard (A:).
Désolé mais je suis à plus de 6 000 km de mon PC et il m'est difficile d'aller plus loin
@+ Didier
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/members/53/P3Dv5HF-Reglages-A.jpg - MSFS Deluxe/STORE - X-Plane 12B
Hors ligne
=8 Merci pour tes infos Didier
Je viens d'apprendre quelque chose sur les "A" et "L" ,
Apres en effet il y a souvent des trucs écris derrière le code : <Code>(A:INDICATED ALTITUDE, meters) XXXXXXXXXXXX </Code> c'est cela les calcules ?
Alex
Hors ligne
Désolé, j'ai corrigé le texte de l'animation. La variable "A:Radio Height, feet" existe bien.
Exemple MSFS:
<!-- Radio Height Needle -->
<UseTemplate Name="ASOBO_GT_Needle_Code">
<ANIM_NAME>INSTRUMENT_Needle_Radio_Height</ANIM_NAME>
<SIMVAR>RADIO HEIGHT</SIMVAR>
<UNITS>Feet</UNITS>
<!-- <Script>(P:Units of measure, enum) 2 == if{ (A:RADIO HEIGHT, meters) } els{ (A:RADIO HEIGHT, feet) }</Script> -->
<MIN_VALUE>0</MIN_VALUE>
<MAX_VALUE>3000</MAX_VALUE>
<NODE_ID>INSTRUMENT_Needle_Radio_Height</NODE_ID>
<!-- <HIGHLIGHT_NODE_ID>INSTRUMENT_Radio_Height</HIGHLIGHT_NODE_ID> -->
<OVERRIDE_ANIM_CODE>
(A:RADIO Height, feet) s0 3000 <
if{
l0 500 <
if{ (A:RADIO Height, feet) 10 / }
els{ (A:RADIO Height, feet) 500 / 10 * 40 + }
}
</OVERRIDE_ANIM_CODE>
</UseTemplate>
Blédina: "Essayer c'est grandir"
Hors ligne
hello Bernard, j'ai essayé d'introduire ton code là dedans mais cela ne fonctionne pas ...
<Animation name="needle_radio_height" guid="d179450e-1a02-4a51-a7fe-057dbab657c5" length="500" type="Sim" typeParam2="needle_radio_height" typeParam="AutoPlay" />
<!-- Radio Height Needle -->
<UseTemplate Name="ASOBO_GT_Needle_Code">
<ANIM_NAME>INSTRUMENT_Needle_Radio_Height</ANIM_NAME>
<SIMVAR>RADIO HEIGHT</SIMVAR>
<UNITS>Feet</UNITS>
<!-- <Script>(P:Units of measure, enum) 2 == if{ (A:RADIO HEIGHT, meters) } els{ (A:RADIO HEIGHT, feet) }</Script> -->
<MIN_VALUE>0</MIN_VALUE>
<MAX_VALUE>3000</MAX_VALUE>
<NODE_ID>INSTRUMENT_Needle_Radio_Height</NODE_ID>
<!-- <HIGHLIGHT_NODE_ID>INSTRUMENT_Radio_Height</HIGHLIGHT_NODE_ID> -->
<OVERRIDE_ANIM_CODE>
(A:RADIO Height, feet) s0 3000 <
if{
l0 500 <
if{ (A:RADIO Height, feet) 10 / }
els{ (A:RADIO Height, feet) 500 / 10 * 40 + }
}
</OVERRIDE_ANIM_CODE>
</UseTemplate>
je pense que j'ai pas fait ce quil fallait
Alex
Hors ligne
Bonjour,
Honnêtement je pense qu'une relecture complète du SDK te serait bénéfique et sans aucune arrière pensée de ma part.
Je m'explique :
- ce que t'a donné Bernard est un exemple de ModelBehaviour
- les deux premières lignes que tu as utilisé en plus de son code sont des lignes XML pour un Legacy code
En deux mots, tu as mélangé dees codes XML Legacy avec des informations de ModelBehaviours donc forcément cela ne peut pas fonctionner ensemble du moins comme tu l'as écris.
Si tu veux utiliser des instruction Legacy et du Model behaviour il faut respecter la syntaxe décrite dans le SDK:
De mémoire, parce que je ne suis pas devant mon PC de simu, cela doit se décomposer tel que:
<Modelinfo>
..... declaration du fichier GlTF
<Animation name="xxxx" guid="d179450e-1a02-4a51-a7fe-057dbab657c5" length="500" type="Sim" typeParam2="xxxx" typeParam="AutoPlay" />
<PartInfo>
<Name>xxxxn</Name>
<AnimLength>50</AnimLength>
<Animation>
<Parameter>
<Code>
(L:MYVAR, bool) 50 *
</Code>
<Lag>400</Lag>
</Parameter>
</Animation>
<MouseRect>
<Cursor>Hand</Cursor>
<TooltipText>Myvar display On</TooltipText>
<CallbackCode>
(L:MYVAR, bool) 0 == if{ (L:MYVAR, bool) ! (>L:MYVAR, bool) }
</CallbackCode>
</MouseRect>
</PartInfo><Behaviors>
<UseTemplate Name="ASOBO_GT_Needle_Code">
<ANIM_NAME>INSTRUMENT_Needle_Radio_Height</ANIM_NAME>
<SIMVAR>RADIO HEIGHT</SIMVAR>
<UNITS>Feet</UNITS><MIN_VALUE>0</MIN_VALUE>
<MAX_VALUE>3000</MAX_VALUE>
<NODE_ID>INSTRUMENT_Needle_Radio_Height</NODE_ID><OVERRIDE_ANIM_CODE>
(A:RADIO Height, feet) s0 3000 <
if{
l0 500 <
if{ (A:RADIO Height, feet) 10 / }
els{ (A:RADIO Height, feet) 500 / 10 * 40 + }
}
</OVERRIDE_ANIM_CODE>
</UseTemplate></Behaviors>
</Modelinfo>
Le code Legacy est en haut dans les balise modelinfo, le code Modelbehaviors est en gras dans les balises actuelles préconisées par Asobo (les balises ModelBehaviors sont deprecated)
Dernière modification par Woodstock (05-11-2021 19:19:36)
@+ Didier
Amicalement,
La connaissance ne sert, que si elle est partagée !
Hors ligne
Merci pour tes précisions , oui j'en étais sur que j'avais mélangé le truc .
je vais en effet voir à lire le SDK pour essayer de comprendre la philosophie de la construction .
Pour ces choses comme cela :
<OVERRIDE_ANIM_CODE>
(A:RADIO Height, feet) s0 3000 <
if{
l0 500 <
if{ (A:RADIO Height, feet) 10 / }
els{ (A:RADIO Height, feet) 500 / 10 * 40 + }
c'est expliqué aussi , ou là c'est une autre base de programmation ?
Merci
Alex
Dernière modification par faf010 (06-11-2021 08:43:28)
Hors ligne
Bien que ne perdant pas de temps à développer pour MSFS suite à ses mouvances chroniques, je veux bien décortiquer leur prose imposée.
D'abord il faut savoir que toutes les animations ASOBO en translation ou rotation sont basées sur 100 frames et pas autre chose, donc de 0 à 100 frames.
Si une animation est créée en mode LEGACY (animation FsX) sur 150 frames, ASOBO la convertit sur 100 frames lors de la compilation.
Dans le cas présent:
La rotation max correspond à 100 frames soit de 0 à 3000 feet.
De 0 à 50 nous affichons la valeur réelle de la hauteur au-dessus du sol.
De 50 à 100 nous affichons la valeur mise à l'échelle de la hauteur au-dessus du sol avec un maximum affichable de 3000 feet (aiguille bloquée à 3000 feet).
A savoir que < correspond au signe < (inférieur à )
(A:RADIO Height, feet) s0 3000 < la hauteur est-elle inférieure à 3000 feet ?
si oui
l0 500 < la hauteur est-elle inférieure à 500 feet ?
si oui
(A:RADIO Height, feet) 10 / la rotation de l'aiguille varie directement de 0 à 50 frames grâce à la division par 10
si non
(A:RADIO Height, feet) 500 / 10 * 40 + la rotation de l'aiguille varie de 50 à 100 frames avec mise à l'échelle (500 / 10 *) et recalage de la rotation de l'aiguille (40 +) pour aller au-delà de 50
.
Blédina: "Essayer c'est grandir"
Hors ligne
=W=W=W Merci pour toutes ces explications et traductions !!!!
Donc dans mon cas il faut que je remette une anim a 100 et non à 500 ?
<Animation name="needle_radio_height" guid="d179450e-1a02-4a51-a7fe-057dbab657c5" length="500" type="Sim" typeParam2="needle_radio_height" typeParam="AutoPlay" />
<PartInfo>
<Name>needle_radio_height</Name>
<AnimLength>500</AnimLength>
<Animation>
<Parameter>
<Code>(A:INDICATED ALTITUDE, feet) 10 / 100 % </Code>
</Parameter>
</Animation>
</PartInfo>
<Behaviors>
<UseTemplate Name="ASOBO_GT_Needle_Code">
<ANIM_NAME>INSTRUMENT_Needle_Radio_Height</ANIM_NAME>
<SIMVAR>RADIO HEIGHT</SIMVAR>
<UNITS>Feet</UNITS>
<MIN_VALUE>0</MIN_VALUE>
<MAX_VALUE>3000</MAX_VALUE>
<NODE_ID>INSTRUMENT_Needle_Radio_Height</NODE_ID>
<OVERRIDE_ANIM_CODE>
(A:RADIO Height, feet) s0 3000 <
if{
l0 500 <
if{ (A:RADIO Height, feet) 10 / }
els{ (A:RADIO Height, feet) 500 / 10 * 40 + }
}
</OVERRIDE_ANIM_CODE>
</UseTemplate>
Dernière modification par faf010 (06-11-2021 18:39:41)
Hors ligne
Non, tu n’as pas lu le SDK et tu fais une grossière erreur.
Le code que tu indiques donne deux interprétations de ton animation:
- une Legacy, la première
- l’autre de type ModelBehaviours
Une animation necessite un seul codage, Légacy ou ModelBehaviors a toi de choisir.
Si tu en mets deux, c’est incorrect et je pense que seul un codage sera pris … lequel ? Il se peut aussi qu’aucun des deux ne soit pris et que MSFS coince au chargement.
Mon conseil: étudies les freeware déjà livrés ou les payware en lisant leurs fichiers XML et surtout lis la totalité du SDK. La création ne s’improvise pas, surtout celle d’un avion 😎
@+ Didier
Amicalement,
La connaissance ne sert, que si elle est partagée !
Hors ligne