SODEによるオブジェクトの配置方法
SODEの使い方やオブジェクトの配置方法などについて、今のところ日本語での情報は見つけられませんでしたので、書いておこうと思います。
需要があるかわかりませんが。。
SODEを使ったオブジェクトの配置方法はDeveloper Guideに書かれています。
Developer Guideだけではなかなかとっつきにくい感じがありますが、こちらのsimFlight.comの記事が参考になりました。
なお、現在Developer GuideはVersion 1.2.1ベースの情報のため少々古くなっているのですが、DownloadsページにあるSODE Migration GuideにV1.2.XからV1.3.Xの変更点が記載されています。
なお、この記事はV1.3.2の情報をベースに書いています。
それでは解説をしていきます。
SODEで配置するオブジェクトはSimObjectコンテナに格納して指定されたフォルダに配置しておく必要があります。
SimObjectを配置するフォルダはV1.3.Xでは下記のフォルダに変更になっています。
C:\ProgramData\12bPilot\SODE\SimObjects\
SimObjectコンテナのフォルダ構成は機体データのフォルダ構成とほぼ同様で、以下のようになります。
sim.cfgファイルでSimObjectのタイトルなどを定義しますが、タイトルはほかのオブジェクトと重複しないようにする必要があるため、’MyCompanyName_ProjectName_’ 等のような命名規則を決めておくことが推奨されています。
modelフォルダには以下のようにMDLファイルの他にmodel.cfgというファイルにMDLファイルのファイル名(拡張子は除く)を記載する必要があります。
model.cfgに列挙すれば複数のMDLファイルを配置することもできるのではないかと思います。(未確認)
あえて言うまでもありませんが、textureフォルダにはテクスチャファイルを入れておきます。音が不要であればsoundフォルダはなくてもOKです。
次のような感じでmodelフォルダやtextureフォルダを複数用意することもできます。
この辺はリペイントをされる方はおなじみなのではないでしょうか。
作成したSimObjectをどのようにFSXに出現させるかはXMLファイルに記述します。
XMLファイルの置き場所は
C:\ProgramData\12bPilot\SODE\SimObjects\xml\
です。
このフォルダもV1.3.Xで変更になっています。
ファイル名は何でもOKですが、当然重複は不可です。
XMLファイルの記述の例を以下に記載します。
この記述例は上記のsimFlight.comの記事にあったものですが、V1.3.Xで変更になっている部分を1か所だけ変更してあります。
<SODE>
<!-- Data Probe serving its clients-->
<SimObject Name="6666 Ranch">
<Placement Lat="33.640732504" Lon="-100.345903337" Alt="1775" Hdg="0.0"/>
<Model SimTitle="12bPilot_SODE_Environmental_Data_Probe">
<EnvironmentalDataProbe ClientList="Wind Sock"/>
</Model>
</SimObject>
<!-- Windspeed range dependent display of different model animations -->
<!-- Wind Direction driven rotation -->
<SimObject Name="Wind Sock">
<Placement Lat="33.640889849" Lon="-100.346381762" Alt="0#AGL" Hdg="0.0"/>
<Model SimTitle="Windsock Slow">
<VariableDrivenRotation Variable="WindDirection" Axis="HEADING" Animated="No"/>
<ConditionalVisibility Variable="WindSpeed" Value="0-14"/>
</Model>
<Model SimTitle="Windsock Medium Speed">
<VariableDrivenRotation Variable="WindDirection" Axis="HEADING" Animated="No"/>
<ConditionalVisibility Variable="WindSpeed" Value="15-28"/>
</Model>
<Model SimTitle="Windsock Fast">
<VariableDrivenRotation Variable="WindDirection" Axis="HEADING" Animated="No"/>
<ConditionalVisibility Variable="WindSpeed" Value="29-60"/>
</Model>
</SimObject>
<!-- Triggerable Animation and Visibility user induced -->
<SimObject Name="Animated Hangar 2">
<Placement Lat="33.638944660" Lon="-100.349746689" Alt="0#AGL" Hdg="108"/>
<Model SimTitle="Hangar 2">
<TriggerableVisibility Input="TextMenu" Action="Show,Hide" VisibleOnLoad="Yes"/>
<TriggerableAnimation Input="TextMenu" Action="Open,Close" StartKF="0" EndKF="100" Duration="4">
<Sound FileName="HangarDoor.wav" Loop="Yes" MinDistance="20" MaxDistance="800"/>
</TriggerableAnimation>
</Model>
</SimObject>
</SODE>