« FlightGearの機体開発#12:FDMの作成④ | メイン | FlightGearの機体開発#14:アニメーションの順番 »

2019年12月10日 (火)

FlightGearの機体開発#13:3Dモデルのアニメーション


FDMが作れましたので早速Flightgear上で表示させて見ましょう。

テキストエディタで下図のように記述して
modelsフォルダに"FA-200-160.xml"のファイル名で保存します。

Ws000003_3

Blenderで作成しエクスポートした.acファイルもmodelsフォルダに保存します。

Flighgearを起動して機体選択画面にFA-200-160があることを確認します。
リストに表示されない場合はファイルの記述に何らかの不備があると判断して
記述を確認します。このときFlightgearランチャーの設定でデバッグコンソールの
表示をONにしておくと原因が判りやすいです。
リストから選択して実行すれば下図のように表示されます。
機体外観のチェックや重量配分の調整を行ないます。
YMF-5D流用であればエンジン始動して飛行することができます。
アニメーションを設定していないので機体の動きはありませんが、これだけでも
しばらくは飛び続けて見入ってしまうのです。なにせ自作ですから。


Fgfs20191209113520_2

さて、楽しいフライトもほどほどにFA-200-160.xml"ファイルに3Dモデルへの
アニメーションを加えていきます。

ちなみにFA-200-160.xmlのファイル名がマルチプレイ時のマップサーバーにて機体名として
表示されますのでファイル名の付け方には考慮が必要です。

以下に主なタグを説明します。

・modelタグ

Ws000003_8

別ファイルで作成した.acファイルまたは.acファイルを参照する記述の.xmlファイルを配置します。
<name>****</name>を追加することでオブジェクト名として設定されます。
x,y,z座標を指示しない場合は原点合わせで配置されます。

Ws000005

<roll-deg><pitch-deg><heading-deg>を追記すれば傾けて配置できます。

【注意】<model>及び<animation>タグのx,y,zの座標はBlenderモデリングの座標系を指示

・animationタグ

Ws000003
<name>
複数のオブジェクトをひとまとめにした名前を付与します。

Ws000004

<type>:アニメーションの種類を設定します。動作に関する種類は以下のものがあります。
       translate:平行移動 rotate:回転移動 spin:軸回転

<object-name>:対象となるオブジェクト名
<property>:数値のソース(プロパティ参照先)
<interpolation>:ソースの数値変化に対して返す値を変更する際に記述する。
         例では変化値0.0~1.0のとき出力値0.0~0.7となる。
         translateは距離(m)、rotateは角度(deg)、spinは回転数(rpm)
<axis>移動する軸方向を指定。

Ws000006

<axis>は2点指示で与えることも可能。2点を結ぶ直線が軸方向となる。
<type>でよく使うものにselectがあります。

Ws000003_3

selectは条件に応じてオブジェクトの表示をON/OFFする際に使用します。
<condition>に条件式を記述します。
例では
・nav-light=1(true)
・dragchute/position-norm=1(true)でない
の2つの条件を満たすときTail-Lightを表示するという記述になります。

このような記述を追加していき3Dモデルに動きを与えていきます。