BlenderのアニメーションオブジェクトをMSFS用にエクスポートする方法
Blenderで、回転や拡大縮小などアニメーションをする3Dオブジェクトを作り、それを マイクロソフトフライトシミュレーター(MSFS) のシーナリーに取り込む方法を紹介します。 そのためにBlenderからMSFS用の3Dデータがエクスポートできるプラグイン、 glTF-Blender-IO-MSFS を使います。 ゲームの中でレーダーアンテナや灯台のライト、風車などを回転させたり、拡大縮小を使ってライト(発光オブジェクト)を点滅させたりすることができます。
Show this page in English
もくじ
Blender用のプラグイン glTF-Blender-IO-MSFS のインストール
マイクロソフトフライトシミュレーター用のアドオンコンテンツを作るには、Blender用のプラグイン glTF-Blender-IO-MSFS をはじめ、各種ツール類をパソコンにインストールしてください。詳しくは、下記のページをご参照ください。
Blenderでアニメーションする3Dオブジェクトを作る
シンプルなアニメーション(アクション)を持つ3Dオブジェクトの作り方を解説します。
まずアニメーションのフレーム数を決めます。 図の矢印で示した部分をクリックして、フレーム数を入力します。
ここでは180フレームのアニメーションを定義することとします。 Blenderのアニメーションの再生速度は約22.5fpsなので、180フレームを指定すると約8秒間のアニメーションになります。

最初に画面右上で、アニメーションさせたいパーツ"Cone"をクリックして選択します。 次に画面左下のタイムラインで青い四角を左右にドラッグして、1(フレーム)を選択します。 最後に画面右下で

ただし、"Scale"欄については、どの軸を指定しても、MSFSに取り込むと全ての軸の方向への等倍拡大・縮小となります。 "Scale"欄を使ってオブジェクトの形を変えることはできません。 "Scale"欄を使うときは、どれか1つの軸だけを指定すれば十分です。

また画面左下のタイムラインの1フレーム目には、キーフレームが設定されたことを示すオレンジ色の点が現れます。 画面右下の"Transform"-"Rotation"のZ軸欄の色が黄色っぽい色に変わり、右端の「・」マークが「◆」マークに変わります。
なお、生成された"ConeAction"というノード名は、クリックすると変更することができます。 右クリックメニューで"Clear Animation Data"を選ぶと、このアニメーションを削除することができます。


ここで画面中央下にある「▶」ボタンをクリックしてみてください。 円錐のパーツが約8秒間に1回の割合で、360度回転するはずです。 また画面左下のタイムラインで青い四角を左右にドラッグすると、円錐のパーツが回転する様子が確認できます。

しかしこの設定は必須ではありません。 例えばドアの開閉アニメーションなどは、ベジエ曲線アニメーションのほうが向いているかもしれません。
BlenderのアニメーションをMSFS向けに設定する
ここから先はMSFS用の設定です。 生成したアクションを、NLA(NonLinear Animation)スタックに追加する、という作業を行います。 しかしこの意味を理解する必要はありません(笑)[技術解説]
個別のアクションを、NLAスタックの一番上にある新しいNLAストリップ(トラック)に変換します。 するとNLAエディターを使って、複数のアニメーションを同時に編集することが可能となります。 NLAスタックを使うと、ひとつのオブジェクトに対して、複数のアクションを割り当て・管理することが可能になります。






以上でアニメーションオブジェクトの準備は完了です。 プラグインglTF-Blender-IO-MSFSを使ってエクスポート してください。



アニメーションオブジェクトをMSFS向けのglTF形式ファイルに出力する
プラグイン glTF-Blender-IO-MSFS を使って、作成したアニメーションオブジェクトをMSFS向けのglTF形式ファイルに出力します。 glTF-Blender-IO-MSFSの使い方については BlenderとMSFSの間で3Dデータのエクスポート・インポートを行うglTF-Blender-IO-MSFSの使い方 のページをご覧ください。
BlenderとMSFSの間で3Dデータのエクスポート・インポートを行うglTF-Blender-IO-MSFSの使い方

「Object」タブで、出力するオブジェクトの指定を行います。 画面右上のコレクション一覧から、出力したいコレクションを選びます。 つづいて"Reload LODs"ボタンをクリックします。 するとシーンの各メッシュデータが認識され、一覧表示されます。 "Grouped by collections"にチェックを入れます。
初めてエクスポートするときは"Genete XML"にチェックを入れます。 モデルの修正などのため、2回目以降のエクスポートの場合は"Genete XML"のチェックを外します。
"Export Path"欄には、.glTFファイルの書き出し先フォルダーを指定します。
その下の欄で、出力するコレクションの名前(ここでは"tower")を選択します。

この図は、Blenderバージョン3.3の例です。
「Animation」欄の設定は、この図のようにチェックを入れてください。 デフォルトでは「Always Sample Animations」のチェックが入っていません。 ここは手動でチェックを入れてください。 ここにチェックが入っていないと、ゲーム内でアニメーションが正しく動作しません。

「Animation」欄の設定は、この図のようにチェックを入れてください。 「Animation Mode」は「NLA Tracks」を選んでください。 また、デフォルトでは「Sampling Animations」のチェックが入っていません。 ここは手動でチェックを入れてください。 ここにチェックが入っていないと、ゲーム内でアニメーションが正しく動作しません。


なお、Blenderで[Interpolation Mode]-[Linear]を指定していなくても、ここには"LINEAR"がセットされます。 その場合、アニメーションはベジエ曲線の動作が生成されます。
"animations":[
{
"channels":[
{
"sampler":0,
"target":{
"node":1,
"path":"rotation"
}
}
],
"name":"ConeAction",
"samplers":[
{
"input":8,
"interpolation":"LINEAR",
"output":9
}
]
}
],
xmlファイルにアニメーションタグを追加する
BlenderでエクスポートしたアニメーションをMSFSのゲーム内で動作させるには、エクスポータープラグインで自動生成された".xml"ファイルに、アニメーションタグを追加する必要があります。 これは最初に1回だけ行います。 モデルの修正などでエクスポートしなおしたときは再度追加する必要はありません。 その代わり前回追加済みのxmlファイルをそのまま利用します。 エクスポート時にこのxmlファイルを上書きしてしまわないよう注意してください。なお、3Dモデルを定義するxmlファイルとアニメーションタグの詳細については、下記のページで読めます。
MODEL DEFINITIONS (MSFS SDK docs)
MODEL ANIMATION DEFINITIONS (MSFS SDK docs)
エクスポータープラグインで自動生成されるxmlファイルの内容は、以下のいずれかのようになっています。
<?xml version="1.0" encoding="utf-8"?>
<ModelInfo guid="{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" version="1.1">
<LODS>
<LOD minSize="0" ModelFile="tower.gltf"/>
</LODS>
</ModelInfo>
あるいは
<?xml version="1.0" encoding="utf-8"?>
<ModelInfo guid="{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" version="1.1"/>
これにアニメーションタグ
<Animation name="ConeAction" guid="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" type="Standard" typeParam="Autoplay"/>
という行を追加します。
name="ConeAction" 欄には、あなたがBlenderで組み込んだアニメーションのアクションの名前(NlaTrackのトラック名)を記述します。
guid="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" 欄には、世界で一意のGUIDを入手して記述します。
GUIDの入手方法
GUIDを生成するツールはいくつか存在し、ソフトウェア開発ツール Microsoft Visual Studio にも含まれています。 ここではオンラインで無料で使える Online GUID / UUID Generator を使います。

"Format:"欄で、出力されるフォーマットを指定することができます。 "Hyphens"にチェックを入れます。
"Encording:"欄で、エンコード形式を指定することができます。 特にチェックを入れる必要はありません。
そして[Generate some GUIDs!]ボタンをクリックします。

GUIDs (MSFS SDK docs)
xmlファイルの完成形
アニメーションタグを追記して完成したxmlファイルの内容は、次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<ModelInfo guid="{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" version="1.1">
<LODS>
<LOD minSize="0" ModelFile="tower.gltf"/>
</LODS>
<Animation name="ConeAction" guid="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" type="Standard" typeParam="Autoplay"/>
</ModelInfo>
あるいは
<?xml version="1.0" encoding="utf-8"?>
<ModelInfo guid="{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" version="1.1">
<Animation name="ConeAction" guid="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" type="Standard" typeParam="Autoplay"/>
</ModelInfo>
ひとつのモデルに複数のアニメーションを設定したときは、アニメーションタグも複数行記述します。
なお、もともとModelInfoの行の最後が"/>"であった場合は、この"/"を削除することを忘れないでください。
ゲーム内でアニメーションオブジェクトを確認する

BlenderとMSFSの間で3Dデータのエクスポート・インポートを行うglTF-Blender-IO-MSFSの使い方
アニメーションが動作しないとき
アニメーションが動作しないときは、以下の2点を確認してください。エクスポータープラグインの「Settings」タブ
エクスポータープラグインの「Settings」タブにある「Sampling Animations」または「Always Sample Animations」オプションにチェックが入っていることを確認してください。

xmlファイルのアニメーションタグ
xmlファイルのアニメーションタグの"name="欄に、あなたがBlenderで組み込んだアニメーションのアクションの名前(NlaTrackのトラック名)が正しく記述されていることを確認してください。 ここにスペルミスがあると、アニメーションは動作しません。
Blenderでアニメーションの削除(Clear Animation Data)と再設定を行うと、アクションの名前の後ろに".001"といった通し番号が追加されます。 この場合は、アクションをNLAスタックに追加する前に、コレクションの画面でアクションの名前を変更(通し番号を削除)します。 あるいはxmlファイルのアニメーションタグを修正します。