#1 [↑][↓]  27-10-2020 12:21:37

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

[MSFS] Quelques codes pour animer vos scéneries sous MSFS

Bonjour,

Suite à quelques essais et recherches pour trouver des solutions aux soucis d'animations dans les scènes (SODE ne fonctionne plus), j'ai fini par écrire dans un coin quelques lignes pour me servir de résumé pour animer mes prochaines scènes.
Afin que le travail de collecte soit utilisable par le plus grand nombre, je mets en partage ces informations rzecueillies.

PS: Il va s'en dire que la connaissance du SDK et particulièrement des exemples fournis dans le SDK est un pré-requis.

Ajout d’un drapeau animé :
Prévoir de décomposer le drapeau » en deux parties : un mât (pole) et le drapeau « flag »
1 - Faire un duplicata d’un AssetGroup de type « SimObjects », en rajoutant ce qui suit dans le fichier  PackageDefinitions/project-name.xml :

XML:

<AssetGroup Name="SimObjects">
            <Type>SimObject</Type>
            <Flags>
                <FSXCompatibility>false</FSXCompatibility>
            </Flags>http://www.pilote-virtuel.com/img/puntoolbar/smooth/bt_ins.png
            <AssetDir>PackageSources\SimObjects\misc\Model_Name</AssetDir>
            <OutputDir>SimObjects\misc\Model_Name</OutputDir>
        </AssetGroup>

"Model_Name" doit être remplacé par le nom de ce que vous êtes en train de modéliser i.e., "ICAO_WindSock".
2 - Créez un répertoire SimObjects dans votre dossier PackageSources, et dans ce dossier créez un dossier nommé misc, puis dans ce dossier, créez un dossier nommé Model_Name.
3 - Dans le dossier Model_Name, créez un dossier supplémentaire model (littéralement) et si votre modèle a des textures, créez également un dossier nommé texture.
4 - Dans le dossier Model_Name, créez également un fichier nommé sim.cfg avec le contenu suivant :
Code:

[VERSION]
Major=1
Minor=0

[fltsim.0]
title=Model_Name
model=
texture=

[General]
category=StaticObject

De nouveau remplacez Model_Name par ce que vous êtes en train de réaliser.
5 - Exportez votre modèle comme d'habitude en utilisant Blender2MSFS dans le dossier Model_Name. Si votre modèle comporte des textures, n'oubliez pas de les copier dans le dossier texture.
6 - Dans le fichier XML du modèle, spécifiez l'animation comme vous le souhaitez (voir plus bas le § Animations sur 360 keyframes).
7 - Dans le dossier Model_Name, créez un fichier nommé model.cfg avec le contenu suivant :
Code:

[models]
normal=Model_Name.xml

Le champ doit être adapté en fonction du nom de votre fichier XML. À ce stade, la structure de votre fichier et de votre répertoire devrait ressembler à:
Code:

SimObjects
+- misc
  +- Model_Name
     +- model
     |  +- Model_Name.bin
     |  +- Model_Name.gltf
     |  +- Model_Name.xml
     |  +- model.CFG
     +- sim.cfg

8 - Ouvrez votre MSFS en DEV Mode, construisez la scène, fermez tout, copiez votre scène dans le dossier Community et ouvrez à nouveau la scène en DEV Mode. Si vous ouvrez maintenant l'éditeur de scènes, votre objet devrait être listé dans SimObjects et vous pouvez le placer dans la scène.
Le dossier texture doit être présent dans le dossier Model_Name même si le modèle n'a pas de texture du tout. De plus, le dossier texture doit contenir un fichier nommé "texture.cfg" avec le contenu suivant :

XML:

[fltsim]
fallback.1=..\..\..\..\scenery\global\scenery\Texture

Animation sur 360 keyframes
XML:

<?xml version="1.0" encoding="utf-8" ?>
<ModelInfo version="1.1" guid="{XXXGUID}">

    <LODS>
        <LOD MinSize="0" ModelFile="ModelName.gltf"/>
    </LODS>

    <Animation name="AnimationName" guid="YYYGUID" length="360" type="Sim" typeParam2="AnimationName" typeParam="AutoPlay"/>
   
    <PartInfo>
      <Name>AnimationName</Name>
      <AnimLength>360</AnimLength>
      <Animation>
        <Parameter>
          <Code>(A:AMBIENT WIND DIRECTION, Degrees)</Code>
        </Parameter>
      </Animation>
    </PartInfo>
</ModelInfo>

Si vous voulez avoir une “chaussette” dont l’animation dépend de la vitesse du vent:

XML:

<Animation name="LFFQ_Windsock_Speed_00" guid="65EEB9F1-259C-44CE-954D-69C2420B3431" type="Standard"/>
    <Animation name="LFFQ_Windsock_Speed_05" guid="4D419C72-7949-4C72-A81F-03BB969ED86D" type="Standard"/>
    <Animation name="LFFQ_Windsock_Speed_10" guid="1FB42441-63DD-4EBC-9241-3393D378B869" type="Standard"/>
    <Animation name="LFFQ_Windsock_Speed_15" guid="C1800E30-EF34-444D-93FC-6D5ABE2AAA92" type="Standard"/>
    <Animation name="LFFQ_Windsock_Speed_20" guid="6C39D52C-E70F-4054-8E9C-1A55EC704574" type="Standard"/>
    <Animation name="LFFQ_Windsock_Speed_25" guid="64C096E1-67C1-4204-B262-E8425AC8B8F8" type="Standard"/>   

    <AnimGraph>     
        <DefaultState name="LFFQ_Windsock_Blend"/>       
        <BlendTreeState name="LFFQ_Windsock_Blend">
          <Animations>
            <Animation guid="65EEB9F1-259C-44CE-954D-69C2420B3431" loop ="True" speed="1" threshold="0"/>
            <Animation guid="4D419C72-7949-4C72-A81F-03BB969ED86D" loop ="True" speed="1" threshold="5"/>
            <Animation guid="1FB42441-63DD-4EBC-9241-3393D378B869" loop ="True" speed="1" threshold="10"/>
            <Animation guid="C1800E30-EF34-444D-93FC-6D5ABE2AAA92" loop ="True" speed="1" threshold="15"/>
            <Animation guid="6C39D52C-E70F-4054-8E9C-1A55EC704574" loop ="True" speed="1" threshold="20"/>
            <Animation guid="64C096E1-67C1-4204-B262-E8425AC8B8F8" loop ="True" speed="1" threshold="25"/>
          </Animations>
          <Value>(A:AMBIENT WIND VELOCITY, KNOTS)</Value>
        </BlendTreeState>
     </AnimGraph>

Ajout d’une pendule animé :
Si vous voulez avoir une « pendule » animée en tant qu’objet:

Code:

<?xml version="1.0" encoding="utf-8" ?>
<ModelInfo version="1.1" guid="{59589256-fb71-4d94-99d8-953dc12312be}">

   <LODS>
      <LOD MinSize="0" ModelFile="edle_analog_uhr.gltf"></LOD>
   </LODS>

<Animation name="mh_tower_stunde" guid="e8fc23f9-02fa-47ad-8ad0-491a299a3247" typeParam2="mh_tower_stunde" length="120" type="Sim" typeParam="AutoPlay" />

<Animation name="mh_tower_minute" guid="b1febb79-6e28-4c49-a9d9-2ac42fa7b251" typeParam2="mh_tower_minute" length="60" type="Sim" typeParam="AutoPlay" />

<PartInfo>
<Name>mh_tower_stunde</Name>
   <AnimLength>120</AnimLength>
      <Animation>
         <Parameter>
         <Code>(E:LOCAL TIME, hour) 12 % 10 *</Code>
         </Parameter>
     </Animation>
</PartInfo>

<PartInfo>
<Name>mh_tower_minute</Name>
   <AnimLength>60</AnimLength>
      <Animation>
         <Parameter>
         <Code>(E:LOCAL TIME, minutes) flr 60 %</Code>
         </Parameter>
      </Animation>
</PartInfo>
</ModelInfo>

Affichage selon des conditions :
Ce parasol devrait être sur la terrasse en été. En revanche, le parasol ne doit pas être visible en hiver.
Voici le contenu d’un ancien fichier XML :

<?xml version="1.0" encoding="utf-8" ?>
<ModelInfo version="1.1" guid="{e0c85e87-f282-4a4d-9f09-6c995c95a776}">

   <LODS>
      <LOD MinSize="0" ModelFile="edle_sonnenschirm.gltf"></LOD>
   </LODS>

<PartInfo>
<Name>edle_sonnenschirm_sommer</Name>
      <Visibility>
            <Parameter>
            <Code>
(E:ZULU MONTH OF YEAR, number) 6.0 &gt;= (E:ZULU MONTH OF YEAR, number) 8.0 &lt;= and if{ 1 } els{ 0 }
            </Code>
            </Parameter>
      </Visibility>
</PartInfo>

</ModelInfo>


MSFS fonctionne désormais avec un schéma appelé «Behaviours models" et les anciennes recettes de P3D avec un fichier modeldef.xml ne fonctionnent plus. Désormais, la structure du code est légèrement différente dans le cas des «Behaviours models" .
1 - Tout d'abord, le code personnalisé de tout objet simulé doit être placé dans une balise <ModelBehaviours> distincte dans le fichier XML et non dans la balise <ModelInfo>.
2 - Deuxièmement, il manque le nom du "node" qui définit exactement quelle partie utilisera le code.

Le code devrait donc ressembler à :
XML:

<?xml version="1.0" encoding="utf-8" ?>
<ModelInfo version="1.1" guid="{e0c85e87-f282-4a4d-9f09-6c995c95a776}">

<LODS>
    <LOD MinSize="0" ModelFile="LFFQ_parasol.gltf"/>
</LODS>
</ModelInfo>

<ModelBehaviors>
<Include Path="Asobo\Misc\SimObjects.xml"/>
    <Component ID="LFFQ_parasol_ete" Node="LFFQ_parasol">
        <Visibility>
            <Parameter>
                <Code>(E:LOCAL MONTH OF YEAR, Number) 4 == if{ 1 } els{ 0 }</Code>
            </Parameter>
        </Visibility>
    </Component>
</ModelBehaviors>

Pour avoir quelque chose de visible entre 10 et 18h chaque jour, on devrait coder:

<Visibility>
   <Parameter>
      <Code>(E:LOCAL TIME, Seconds) 36000 &gt;= (E:LOCAL TIME, Seconds) 64800 &lt;= and if{ 1 } els{ 0 }</Code>
   </Parameter>
</Visibility>

Pour les saisons il faudra mettre ce genre de conditions:

(E:ZULU MONTH OF YEAR, number) 4.0 &gt;= (E:ZULU MONTH OF YEAR, number) 10.0 &lt;= and if{ 1 } els{ 0 }


@+ 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

 

#2 [↑][↓]  27-10-2020 12:22:40

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

Re: [MSFS] Quelques codes pour animer vos scéneries sous MSFS

(réservé pour des futurs exemples)


@+ 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 [↑][↓]  27-10-2020 12:47:05

Taiaut57
Copilote
Lieu: LFLB
Date d'inscription: 17-03-2008

Re: [MSFS] Quelques codes pour animer vos scéneries sous MSFS

Bonjour à tous,
vraiment super Lagaffe, tout ce que tu nous apprends.
Tonio


WIN11 - i7-8700 CPU @ 3.20GHz - 32,0 Go - Vega56 - MSFS version DVD - 3 écrans de 27" - 2 écrans de 17"

Hors ligne

 

#4 [↑][↓]  27-10-2020 14:30:44

D5Turbi
Commandant de bord
Lieu: BA 103 - Classe 69/4
Date d'inscription: 14-12-2014
Renommée :   10 

Re: [MSFS] Quelques codes pour animer vos scéneries sous MSFS

Hé bé, je ne suis pas près d'y arriver... mad2_gif

Merci Lagaffe.


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
http://www.pilote-virtuel.com/img/members/9921/RFN.jpg  http://www.pilote-virtuel.com/img/members/9921/BA103.jpg http://www.pilote-virtuel.com/img/members/9921/RVT.jpg http://www.pilote-virtuel.com/img/members/9921/Turbi.jpeg

Hors ligne

 

#5 [↑][↓]  27-10-2020 14:46:41

Lejerm
Copilote
Lieu: LSMP
Date d'inscription: 24-07-2009
Renommée :   
Site web

Re: [MSFS] Quelques codes pour animer vos scéneries sous MSFS

Merci, cela nous ouvre quelques perspectives!
A quand un SODE-like pour MSFS, Lagaffe? wink


http://www.pilote-virtuel.com/img/members/2286/logo-sms-0444x0100-text-r.png
Redonnons vie à l’histoire de l’aviation militaire Suisse!
_________________________________________________
Intel Core i7-12700KF / RTX 3080 10 Go / 32 Go RAM / 3x SSD 1000 Go / Ecran incurvé 3440x1440 G-SYNC / Meta Quest 3

Hors ligne

 

#6 [↑][↓]  27-10-2020 15:35:24

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

Re: [MSFS] Quelques codes pour animer vos scéneries sous MSFS

Le SODE-Like ... il est déjà présent, sauf la doc qui elle n'est pas à jour solv_gif


@+ 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

 

#7 [↑][↓]  28-10-2020 15:08:12

dutrla
Copilote
Lieu: LFOH
Date d'inscription: 21-10-2008
Renommée :   

Re: [MSFS] Quelques codes pour animer vos scéneries sous MSFS

Concernant les drapeaux  allez voir sur l'aéroport de Donegal Irlande du Nord, la scène est native  avec de nombreux détails dont les drapeaux devant l'entrée de l'aéroport.

Ils sont fixes pour le moment, peut être lors d'une future mise à jour seront ils flottant au gré du vent ?


http://nsm04.casimages.com/img/2010/10/14/101014050748906476922015.gif                                                                                                           FAN DE -->
I9900 RTX 2080 Ti  W11  HP G2 Reverb

Hors ligne

 

#8 [↑][↓]  28-10-2020 22:09:14

WhiteNouNOurs
Copilote
Lieu: Vélizy-Villacoublay
Date d'inscription: 05-04-2008
Renommée :   

Re: [MSFS] Quelques codes pour animer vos scéneries sous MSFS

Encore une fois merci Didier.
Respect pour le boulot de recherche et de synthèse avec un partage au bout. Et ce dernier point est encore plus respectable


Pascal

id MSFS : WhiteOurson. Core i7 6700K 4.GHz, RAM 32Go, GeForce GTX 1070 8Go, OS Win10-64b sur SSD 250Go + SSD 1To (simus) + HDD 3To pour le reste / Fibre Optique Bouygues 1Giga / MSFS DVD

Hors ligne

 

Pied de page des forums

Maintenance informatique Lausanne