• 記事をシェア
  •  
  •  
  •  
  • B! 
  •  

BlenderのアニメーションオブジェクトをMSFS用にエクスポートする方法

Blenderで、回転や拡大縮小などアニメーションをする3Dオブジェクトを作り、それを マイクロソフトフライトシミュレーター(MSFS) のシーナリーに取り込む方法を紹介します。 そのためにBlenderからMSFS用の3Dデータがエクスポートできるプラグイン、 glTF-Blender-IO-MSFS を使います。 ゲームの中でレーダーアンテナや灯台のライト、風車などを回転させたり、拡大縮小を使ってライト(発光オブジェクト)を点滅させたりすることができます。

Blender用のプラグイン glTF-Blender-IO-MSFS のインストール

マイクロソフトフライトシミュレーター用のアドオンコンテンツを作るには、Blender用のプラグイン glTF-Blender-IO-MSFS をはじめ、各種ツール類をパソコンにインストールしてください。
詳しくは、下記のページをご参照ください。

Blenderでアニメーションする3Dオブジェクトを作る

シンプルなアニメーション(アクション)を持つ3Dオブジェクトの作り方を解説します。
PC ここではこのようなオブジェクトをアニメーションさせます。 円柱の上に置いた円錐を、レーダーや灯台のライトのように水平方向(Z軸周り)に回転させます。
まずアニメーションのフレーム数を決めます。 図の矢印で示した部分をクリックして、フレーム数を入力します。
ここでは180フレームのアニメーションを定義することとします。 Blenderのアニメーションの再生速度は約22.5fpsなので、180フレームを指定すると約8秒間のアニメーションになります。
PC 円錐のパーツに、Z軸周り(水平方向)に360度回転する「Action」を定義します。 このためには、1コマ目と最後のコマに「キーフレーム」を定義します。
最初に画面右上で、アニメーションさせたいパーツ"Cone"をクリックして選択します。 次に画面左下のタイムラインで青い四角を左右にドラッグして、1(フレーム)を選択します。 最後に画面右下で (Object) アイコンをクリックしたうえで"Transform"欄を開きます。 そして"Rotation"のZ軸欄に、1フレーム目の角度となる"0°"を入力し、その右端にある「・」マークをクリックします。
ここで"Location"欄の値を操作すれば移動アニメーションが、また"Scale"欄の値を操作すれば拡大縮小アニメーションが定義できます。 "Rotation", "Location","Transform"欄のすべてを同時に操作することも可能です。 すると回転しながら移動しながら拡大・縮小するアニメーションが設定できます。
ただし、"Scale"欄については、どの軸を指定しても、MSFSに取り込むと全ての軸の方向への等倍拡大・縮小となります。 "Scale"欄を使ってオブジェクトの形を変えることはできません。 "Scale"欄を使うときは、どれか1つの軸だけを指定すれば十分です。
PC すると画面右上には、"Cone"コレクションの下に"Animation"というノードが生成され、さらにその下に"ConeAction"というノードが生成されます。 ここにキーフレーム/アニメーションの情報が格納されます。
また画面左下のタイムラインの1フレーム目には、キーフレームが設定されたことを示すオレンジ色の点が現れます。 画面右下の"Transform"-"Rotation"のZ軸欄の色が黄色っぽい色に変わり、右端の「・」マークが「◆」マークに変わります。
なお、生成された"ConeAction"というノード名は、クリックすると変更することができます。 右クリックメニューで"Clear Animation Data"を選ぶと、このアニメーションを削除することができます。
PC 次に最後のキーフレームを定義します。 画面左下のタイムラインで青い四角を左右にドラッグして、180(フレーム)を選択します。 そして画面右下の"Transform"-"Rotation"のZ軸欄に、180フレーム目の角度となる"359°"を入力し、その右端にある「◇」マークをクリックします。
PC すると画面左下のタイムラインの180フレーム目に、キーフレームが設定されたことを示すオレンジ色の点が現れます。 また画面右下の"Transform"-"Rotation"のZ軸欄の色が黄色っぽい色に変わり、右端の「◇」マークが「◆」マークに変わります。
ここで画面中央下にある「▶」ボタンをクリックしてみてください。 円錐のパーツが約8秒間に1回の割合で、360度回転するはずです。 また画面左下のタイムラインで青い四角を左右にドラッグすると、円錐のパーツが回転する様子が確認できます。
しかし回転の動きをよく見ると、回転速度は一定ではなく、最初と最後で回転スピードが遅くなっています。 デフォルトでは、アクションの開始と終了の時点で速度が変化する(ベジエ曲線)アニメーションが生成されます。 アニメーションが一定の速度で「リニア」に動くようにするには、タイムラインに追加の設定を行います。
PC 画面左下のタイムライン上のどこでも良いのでマウスを右クリックすると、このようなメニューが表示されます。 [Interpolation Mode]-[Linear]を選択します。 そして画面中央下にある「▶」ボタンをクリックしてみてください。 今度は最初から最後まで一定の速度で回転するようになったはずです。
しかしこの設定は必須ではありません。 例えばドアの開閉アニメーションなどは、ベジエ曲線アニメーションのほうが向いているかもしれません。

BlenderのアニメーションをMSFS向けに設定する

ここから先はMSFS用の設定です。 生成したアクションを、NLA(NonLinear Animation)スタックに追加する、という作業を行います。 しかしこの意味を理解する必要はありません(笑)
[技術解説]
個別のアクションを、NLAスタックの一番上にある新しいNLAストリップ(トラック)に変換します。 するとNLAエディターを使って、複数のアニメーションを同時に編集することが可能となります。 NLAスタックを使うと、ひとつのオブジェクトに対して、複数のアクションを割り当て・管理することが可能になります。
PC 画面左下の (Timeline) アイコンをクリックすると、このようなメニューが表示されます。 「Dope Sheet」を選びます。
PC するとタイムラインの部分がこのように変わります。 (Timeline) アイコンが (Dope Sheet) アイコンに変わり、その右に「Action Editor」と表示されています。 「Action Editor」になっていなかったときは、ドロップダウンリストで「Action Editor」に切り替えてください。 そして画面中央下にある「Push Down(ストリップ化)」ボタンをクリックします。
PC すると画面右上にあった"CoreAction"が、"NLA Tracks"-"NlaTrack"の下に移動します。
以上でアニメーションオブジェクトの準備は完了です。 プラグインglTF-Blender-IO-MSFSを使ってエクスポート してください。
PC ちなみに、ここで画面左下の (Dope Sheet) アイコンをクリックして「Nonlinear Animation」を選ぶと...
PC タイムラインの部分がこのように変わります(NLAエディター)。 矢印で示した青い四角を左右にドラッグすると、円錐のパーツが回転する様子が確認できます。

アニメーションオブジェクトをMSFS向けのglTF形式ファイルに出力する

プラグイン glTF-Blender-IO-MSFS を使って、作成したアニメーションオブジェクトをMSFS向けのglTF形式ファイルに出力します。 glTF-Blender-IO-MSFSの使い方については BlenderとMSFSの間で3Dデータのエクスポート・インポートを行うglTF-Blender-IO-MSFSの使い方 のページをご覧ください。
PC プラグイン glTF-Blender-IO-MSFS (Multi-Export glTF 2.0) の画面を開きます。
「Object」タブで、出力するオブジェクトの指定を行います。 画面右上のコレクション一覧から、出力したいコレクションを選びます。 つづいて"Reload LODs"ボタンをクリックします。 するとシーンの各メッシュデータが認識され、一覧表示されます。 "Grouped by collections"にチェックを入れます。
初めてエクスポートするときは"Genete XML"にチェックを入れます。 モデルの修正などのため、2回目以降のエクスポートの場合は"Genete XML"のチェックを外します。
"Export Path"欄には、.glTFファイルの書き出し先フォルダーを指定します。
その下の欄で、出力するコレクションの名前(ここでは"tower")を選択します。
PC 「Settings」タブでは、出力方法の設定を行います。 この画面は、同じglTF-Blender-IO-MSFSでも、Blenderのバージョンによって変化します。
この図は、Blenderバージョン3.3の例です。
「Animation」欄の設定は、この図のようにチェックを入れてください。 デフォルトでは「Always Sample Animations」のチェックが入っていません。 ここは手動でチェックを入れてください。 ここにチェックが入っていないと、ゲーム内でアニメーションが正しく動作しません。
PC この図は、Blenderバージョン3.6の「Animation」欄の例です。
「Animation」欄の設定は、この図のようにチェックを入れてください。 「Animation Mode」は「NLA Tracks」を選んでください。 また、デフォルトでは「Sampling Animations」のチェックが入っていません。 ここは手動でチェックを入れてください。 ここにチェックが入っていないと、ゲーム内でアニメーションが正しく動作しません。
PC 最後に「Object」タブで「Export」ボタンをクリックします。
PC すると、指定したフォルダに".bin", ".gltf", ".xml"の3つのファイルが生成されます。 もしモデルにテクスチャを貼り付けていた場合は、同じフォルダにテクスチャの画像ファイルも出力されます。 これをMSFSのプロジェクトに取り込みます。
出力された".gltf"ファイルをテキストエディタなどで開いて、"animations"を検索してみてください。 アニメーション設定に関する情報が書き込まれているのが確認できます。 そして"interpolation"欄が"LINEAR"となっていることを確認してください。 "LINEAR"になっていないと、ゲーム中でアニメーションが動作しません。
なお、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ファイルとアニメーションタグの詳細については、下記のページで読めます。
エクスポータープラグインで自動生成される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 を使います。
PC ブラウザで Online GUID / UUID Generator を開くと、このような画面になります。
"Format:"欄で、出力されるフォーマットを指定することができます。 "Hyphens"にチェックを入れます。
"Encording:"欄で、エンコード形式を指定することができます。 特にチェックを入れる必要はありません。
そして[Generate some GUIDs!]ボタンをクリックします。
PC すると"Results:"欄にGUIDが生成されます。 [Copy to Clipbord]ボタンをクリックすると、クリップボードにコピーされます。 これをアニメーションタグの guid="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" 欄に埋め込みます。 GUIDの前後の中カッコは、あってもなくても構いません。
GUIDについては下記のページで読めます。

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の行の最後が"/>"であった場合は、この"/"を削除することを忘れないでください。

ゲーム内でアニメーションオブジェクトを確認する

Animated 3D objects
完成した".bin", ".gltf", ".xml"の3つのファイルを、MSFS SDkを使ってあなたのシーナリープロジェクトに組み込んで、ビルドしてください。 この手順については BlenderとMSFSの間で3Dデータのエクスポート・インポートを行うglTF-Blender-IO-MSFSの使い方 のページの「Blenderで作成したオリジナルの3DモデルをMSFSに取り込む」の章をご覧ください。

アニメーションが動作しないとき

アニメーションが動作しないときは、以下の2点を確認してください。

エクスポータープラグインの「Settings」タブ


エクスポータープラグインの「Settings」タブにある「Sampling Animations」または「Always Sample Animations」オプションにチェックが入っていることを確認してください。
Rename the action (remove the sequence number) on the Collection screen

xmlファイルのアニメーションタグ


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

マイクロソフトフライトシミュレーターの楽しみ方

基礎編

応用編

便利なツール

アドオンシーナリーの開発