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

BlenderとMSFSの間で3Dデータのエクスポート・インポートを行うglTF-Blender-IO-MSFSの使い方

BlenderとMSFSの間で、3Dデータのエクスポート・インポートを行うことができるプラグイン、glTF-Blender-IO-MSFSの使い方を解説します。 またMSFSのシーナリーに、Blenderで作成した3Dモデルを設置する方法を解説します。

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

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

BlenderでMSFSの3Dモデル(glTF)をインポートする

BlenderでMSFSの3Dモデル(glTF)、特に Google Earth Decoder でダウンロードされたGoogle Mapのデータを読み込む方法を解説します。
Google Mapデータのメッシュを編集する場合は、先にGoogle Earth Decoder Optimization Tools (GEDOT)での「最適化」を終えてください。 GEDOTは、Google Earth Decoderの出力を扱うことに特化されており、それ以外、例えばBlender用エクスポーターで生成されたデータを扱うことはできません。
PC Blender(3.3.x LTS または 3.6.x LTS)を起動したら、まずデフォルトで準備されているキューブとカメラ、ライトを削除します。 "Collection"を右クリックすると表示されるメニューから"Delete Hierarchy"を選びます。 するとこれらがまとめて削除できます。
PC まずはLOD0のデータを読み込むためのコレクションを作ります。 右クリックすると表示されるメニューから"New Collection"を選びます。
PC 生成された新しいコレクションの名前をダブルクリックして変更します。
LOD別のデータを格納したコレクションの名前には、後ろに"_LODn"、または前に"xn_"を付加する必要があります(nは0から始まる整数)。 これはプラグイン「glTF-Blender-IO-MSFS」の仕様です。
PC [File]-[Import]-[glTF 2.0 (.glb/.gltf)]メニューを選びます。
PC するとファイル選択のダイアログボックスが開きます。 [Ctrl]キーを押しながら、LOD0の".gltf"ファイルをすべて選択します。 つづいて画面右下の[Import glTF 2.0]ボタンをクリックします。
Google Earth DecoderでダウンロードされたGoogle Mapのデータの場合は、".gltf"ファイルは"modelLib"フォルダーの下に格納されています。
PC するとLOD0のデータが読み込まれます。 データー量やディスクのスピードにもよりますが、読み込みには数十秒から数分かかります。
読み込みが完了したら、これらをすべて選択して、先ほど作ったLOD0用のコレクションにドラッグ&ドロップします。
PC LOD0用のコレクションは、左端にある▲マークをクリックして畳んでおきましょう。 つづいてLOD1用のコレクションを作ります。
PC そして[File]-[Import]-[glTF 2.0 (.glb/.gltf)]メニューから、LOD1の".gltf"ファイルをすべて読み込み、LOD1用のコレクションにドラッグ&ドロップします。 同様にして、全てのLODのデータを読み込んで、コレクションに分類します。
PC ".gltf"ファイルの読み込みが終わったら、テクスチャのフォルダーを指定します。 [File]-[External Data]-[Find missing files]メニューを選びます。
PC するとファイル選択のダイアログボックスが開きます。 テクスチャの保存されているフォルダーを開き、画面右下の[Find Missing Files]ボタンをクリックします。
Google Earth DecoderでダウンロードされたGoogle Mapのデータの場合は、テクスチャファイルは"modelLib\texture"フォルダーの下に格納されています。
PC そして画面右上にある アイコンをクリックします。 すると読み込んだオブジェクトに、テクスチャーが貼り付けられます。
PC Blenderはデフォルトでカメラから0.01m~1,000mの範囲しか表示されません。 広大なシーナリーを表示するには、表示範囲を大きくする必要があります。 右図の矢印が示す位置にある"<"アイコンをクリックします。
PC すると右図のようなパネルがせり出してきます。 パネル右端のメニューから"View"を選び、"End"欄の数値を変更します。 今回の例では、5,000mを指定したら全景が表示できました。
PC 右図の矢印が示す位置にある目玉アイコンをクリックするたびに、LOD別にオブジェクトを表示/非表示にすることができます。
PC Google Earth DecoderでダウンロードされたGoogle Mapのデータの場合は、各LOD別コレクションの下に、さらに各タイル別(.xml形式ファイル別)のコレクションに分類します。 するとBlenderでメッシュを編集した後に「glTF-Blender-IO-MSFS」でエクスポートするときに便利です。 元データの"modelLib"フォルダの中身を参考にして、同じ名前のコレクションを作ります。
PC [File]-[Save]メニューを選んで、Blender形式(".blend")で保存しましょう。
PC Google Earth Decoder Optimization Tools (GEDOT)で「最適化」済みのシーナリーを読み込むと、すべてのタイルがXY座標(0,0)に揃えられるので、タイルが原点に重なって表示されます。 ポリゴンを加工するときは、各タイル別のコレクションに分類し、タイルごとに表示をON/OFFして編集してください。

Blenderで編集したGoogle Earth DecoderのモデルをMSFS用(glTF)にエクスポートする

Blenderで編集したMSFSの3Dモデル、特に Google Earth Decoder のデータをglTF形式で書き出す方法を解説します。
PC 右図の矢印が示す位置にある"<"アイコンをクリックします。
PC すると右図のようなパネルがせり出してきます。 パネル右端のメニューから"Multi-Export glTF 2.0"を選びます。 画面右上のコレクション一覧から、ルートのコレクションを選びます。 つづいて"Reload LODs"ボタンをクリックします。
PC シーンの各メッシュデータが認識され、一覧表示されます。 "Grouped by collections"にチェックを入れます。
PC 正しくタイル別、LOD別にコレクションが作成されていると、右図のようになります。 タイル別に一覧表示されます。
各タイルについて、オプションを設定していきます。
"Genete XML"にチェックを入れると"(タイル名).xml"ファイルが生成されます。 ここにチェックを入れると"Overwrite GUID"欄が表示されます。 GUIDを更新したい場合は、ここにチェックを入れます。 Google Earth Decoderのデータを書き出す場合は、すでにXMLファイルは存在しているので、"Genete XML"にチェックは不要です。
"Export Path"欄には、.glTFファイルの書き出し先フォルダーを指定します。 Google Earth Decoderのデータを書き出す場合は、元データの保存されていたフォルダを指定します。
その下に並ぶ、各LOD名の左のチェックボックスをチェックすると、そのLODのデータが.glTFファイルに含まれます。 基本的にはすべてのLODにチェックを入れます。
PC 全ての設定が完了したら、一番下にある"Export"ボタンをクリックすると、書き出しが行われます。
Google Earth Decoderのデータを書き出す場合は、元データの保存されていたフォルダを書き出し先として指定すれば、Blenderでの編集結果がシーンに反映されます。 あとはMSFSに読み込んで、シーナリーを"Build All"すれば完成です。
オリジナルの3DモデルをMSFSに取り込む方法については Blenderで作成したオリジナルの3DモデルをMSFSに取り込む をご覧ください。

Blenderで作成したオリジナルの3DモデルをMSFSに取り込む

Blenderで作成したオリジナルの3DモデルをglTF形式で書き出し、MSFSのシーナリーに取り込む方法を解説します。

オブジェクトの書き出し

PC このようなモデルをMSFSのシーナリーに取り込んでみます。 Blenderにデフォルトで準備されているsphereオブジェクトです。 スケーリング機能で10m四方程度の大きさに拡大しました。 また、"vertex paint"機能で、すべての頂点カラーをオレンジ色に指定してみました。 なお、LOD別のモデルは準備していません。
このままではBlenderのレンダリング画面では頂点カラーは反映されませんが、MSFSに取り込むと、ちゃんと反映されます。
PC パネル右端のメニューから"Multi-Export glTF 2.0"を選びます。 今回プラグインの設定は特に変更していません。 頂点カラーをMSFSに反映させるには、[Settings]画面の[Mesh]-[Vertex Colors]欄にチェックが入っていることを確認してください。
PC プラグインの[Objects]画面を開き、"Reload LODs"ボタンをクリックします。 するとこのような画面になります。
今回出力するモデルは"Sphere"のみなので、"Sphere"の欄の"Sphere"にチェックを入れます。 また、新しいオリジナルモデルなので、MSFS用のXMLファイルの出力も必要です。 "Generate XML"にもチェックを入れます。
作成済みモデルをBlenderで編集して再出力する場合は、MSFS用のXMLファイルの出力は不要です。 前回生成したXMLファイルをそのまま使います。
[Export Path]欄に、任意の出力先フォルダを指定して、一番下にある[Export]ボタンをクリックします。
PC すると、指定したフォルダに".bin", ".gltf", ".xml"の3つのファイルが生成されます。 もしモデルにテクスチャを貼り付けていた場合は、同じフォルダにテクスチャの画像ファイルも出力されます。
ファイルのサイズをチェック!
ここで、生成された3つのファイルのサイズを確認してください。 ほんの数KBしかなかった場合は、おそらく正しくオブジェクトが出力されていません。 Blenderの設定などを見直してください。
一つの.blendファイルに、複数のオブジェクトをコレクション分けして作成すると、エクスポーターで正しく出力できないことがあるようです。 この場合は、.blendファイルをコピーして、オブジェクトごとに別ファイルにしてみてください。
モデリングのヒント
PC プラグインのSettings画面には、とても多くのオプション設定があります。 3Dモデルが期待通りにエクスポートできないときは、これらのオプションを試してみてください。
例えばBlenderのModifier機能を使ってモデリングした場合は、[Mesh]-[Apply Modifires]にチェックを入れる必要があります。 そうでない場合は、エクスポートする前に"Apply"して、ポリゴンに最終形状を反映しておく必要があります。
また、エクスポート対象コレクションの中の子コレクションは、無効にしてもポリゴンに出力されてしまう場合があります。 プラグインのSettings画面には、出力するオブジェクトを制限する機能がありますが、うまく動作しないことがあるようです。 不要なコレクションやオブジェクトは、エクスポートする前に別のコレクションに移動しておくことをお勧めします。

プロジェクトに新しいオブジェクトを追加する

PC つづいて事前に作成したMSFSのプロジェクトに、今回準備した新しいオブジェクトを格納するためのフォルダを作ります。 これにはMSFS SDKを使います。
MSFSで新しいオブジェクトを取り込むプロジェクトを開きます。 そしてProject Editor画面で、青文字のプロジェクト名をクリックし、Inspector画面で[Add asset group]ボタンをクリックします。 各オブジェクトは、それぞれ独立した"Asset group"として、シーナリーに取り込みます。
MSFS SDKのプロジェクトの作り方と、プロジェクトの詳細については、下記のリンクをクリックしてください。
PC するとこのようなウインドウが表示されます。 [Custom]をクリックします。
PC つづいて[Next]をクリックします。
PC するとこのようなウインドウが表示されます。
[Asset group name]欄には、新しいオブジェクトの名前を考えて、入力します。 ここに入力した名前は、他のユーザーからも見えます。
[Asset type]欄は、"ModelLib"を選びます。
そして一番下にある[Create]をクリックします。
PC Project Editor画面には、新しいModelLibが追加されているのが確認できます。 これを選んだうえでInspector画面を開くと、"AssetDir"欄に、3Dデータの格納先フォルダ名が表示されています。 格納先フォルダは "[プロジェクト名]\PackageSources\Scenery\[プロジェクト名]\[Asset group name]" です。
PC 上の画面で指定された3Dデータの格納先フォルダに、Blenderから書き出した3Dデータをコピーします。 ".bin", ".gltf", ".xml"の3つのファイルをすべてコピーします。 テクスチャーがある場合は、"texture"フォルダを作り、すべてのテクスチャーファイルをそこに格納します。
MSFSは起動したままで構いません。
PC Project Editor画面で"Build All"をクリックしてプロジェクトをビルドします。 ビルド結果が"0 failed"で終了することを確認します。 すると新しいオブジェクトがMSFSのプロジェクトに"部品"として組み込まれました。 つぎにこの"部品"をシーンに設置します。

新しいオブジェクトをシーンに設置する

PC Scenery Editor画面から[View]-[Objects]画面を開きます。 Objects画面の"Object type"欄で"Scenery"を選び、"Packages"欄で、新しいオブジェクトを組み込んだプロジェクト/パッケージ名を選びます。 すると"Objects"欄に、そのプロジェクト/パッケージに含まれているオブジェクトの名前が表示されます。 (ビルド後にパッケージ一覧が表示されるまでしばらく時間がかかります。) シーンに追加したいオブジェクト(この例では"Sphere")を選択したうえで、画面左下の"Add"をクリックします。
PC なお、Blendarからエクスポートしたオブジェクトは、ゲーム画面に設置すると、水平方向に180度回転してしまうことがあるようです。 "Add"をクリックする前に、右図に示した"Default rotation"欄を左右にドラッグして"180 deg"を指定しておくと、Blendarの編集画面と同じ方向に設置できます。
PC するとScenery Editor画面に、新しいオブジェクトが追加されます。 またMSFSのゲーム画面に新しいオブジェクトが表示されます。 ただし、追加したオブジェクトの"Snap to ground(地面に貼り付ける)"パラメーターが有効になっているため、オブジェクトは地面に埋まっています。
PC Scenery Editor画面で、追加したオブジェクトを右クリックしてProperties画面を開き、"Snap to ground(地面に貼り付ける)"のチェックを外します。 するとオブジェクトが好きな高さに移動できます。
オブジェクトが好きな場所に設置できたら、Scenery Editor画面で、左下にある"Save Scenery"ボタンをクリックして、シーナリーを保存します。 そしてProject Editor画面で"Build All"をクリックしてプロジェクトをビルドします。 以上で、新しいオブジェクトの設置が完了しました。
PC オブジェクトの位置、方向、大きさを調整したいときは、Scenery Editor画面でオブジェクトを選択したうえで、Scenery Editor画面のメニューから[View]-[Gizmo]画面を開きます。 "Translate"をクリックすると、ゲーム画面の中でオブジェクトの位置が調整できます。 同様に"Rotate"をクリックすると方向を、"Scale"クリックすると大きさを調整することができます。
PC "部品"として組み込まれたオブジェクトは、Objects画面で繰り返し"Add"をクリックすれば、いくつでもシーナリーに追加することができます。

オブジェクトの色、質感を変える・発光させる/マテリアル設定を変更する

オブジェクトの色、質感を変えたり発光させるには「マテリアル」を設定・変更します。
PC オブジェクトの色、質感を変えたり発光させるには、オブジェクトにマテリアルを追加します。 コレクションウインドウで、マテリアルを追加したいオブジェクトを選択し、 (マテリアル) アイコンをクリックすると、このような画面になります。 「+ New」と書かれているところをクリックすると、オブジェクトに新しい「マテリアル」が追加されます。
PC このような、新しい「マテリアル」が表示されます。 MSFS用のパラメーターを設定するには、この画面をスクロールします。
PC すると「MSFS Material Params」という欄が現れるので、これをクリックして展開します。 そして「Type」欄のドロップダウンリストから「Standard」を選びます。
PC MSFS用のマテリアルパラメーター設定画面が現れます。 ここで各種設定ができます。 "Base Color"欄でオブジェクトの色が指定できます。
なお、MSFSで扱えるマテリアルの詳細については、MSFS SDKドキュメントの MATERIALS のページ で読めます。
PC オブジェクトを発光させるには、"Base Color"と"Emissive Color"をセットします。 "Base Color"欄でオブジェクトの色を、"Emissive Color"欄で発光する色を指定します。 太陽に照らされているときは、オブジェクトは主に"Base Color"に指定した色に見え、夜になると"Emissive Color"に指定した色に見えます。 両方とも同じ色を指定すると、より濃い色で発光しますが、明度が低下します。
"Day Night Cycle"にチェックを入れると、夜(日没以降)だけ発光します。
PC これは、上の設定を行ったオブジェクトをゲーム内で表示させた画像です。 少しでも太陽光が当たっているときには、オブジェクトはシェーディングされます(立体感がある)。 しかし太陽が沈むと、べた塗りでレンダリングされ、立体感はなくなります。
"Emissive Color"を指定しても、周りに光を放つわけではありません。 これとは別にライトオブジェクトを設置して、周囲を"Emissive Color"と同じ色で照らすと、よりリアルに発光しているように見えます。
PC これは、上の設定を行ったオブジェクトを日中のシーンで見た画像です。 オブジェクトに影ができて、立体感が出ているのがわかります。
いろいろなマテリアル設定を試したいときは、MSFSは起動したままにして、BlenderからのExportと".bin", ".gltf"ファイルのコピーをやり直します。 すると数秒後にはMSFSゲーム画面に新しいマテリアル設定が反映されます。 MSFSの再起動は不要です。
なかなか新しい設定が反映されないときは、MSFS SDKでシーナリーのビルドをやり直してください。

オブジェクトをアニメーションさせる

Animated 3D objects
Blenderで、回転や拡大縮小などアニメーションをする3Dオブジェクトを作り、それをMSFSに取り込むことができます。 ゲームの中でレーダーアンテナや灯台のライト、風車などを回転させたり、拡大縮小を使ってライト(発光オブジェクト)を点滅させたりすることができます。
この方法については、 BlenderのアニメーションオブジェクトをMSFS用にエクスポートする方法 のページをご覧ください。

シーナリーにライト・照明を置く

Scenery with Blender light objects
MSFS用シーナリーにライト・照明を置くには2つの方法があります。 一つ目は、3DモデルにBlenderのライトオブジェクトを設置して、それをMSFS用glTF形式で書き出す方法です。 そしてもう一つは、シーナリーをMSFS SDKに取り込んだ後に、MSFS SDKの持つライトオブジェクトを設置する方法です。
また、これらの合わせ技として、Blenderのライトオブジェクトを部品として書き出して、MSFS SDK内でこれを大量に設置するという方法もあります。
これらの方法については、 Google MapでMSFSのシーナリーが作れるGoogle Earth Decoderの使い方 のページの 「MSFS SDKでシーナリーにライト/照明を追加する」と「Blenderでシーナリーにライト/照明を追加する・メッシュを編集する」の章をご覧ください。

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

基礎編

応用編

便利なツール

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