MSFSのシーナリーにライト/照明を追加する方法

また、これらの合わせ技として、Blenderのライトオブジェクトを部品として書き出して、MSFS SDK内でこれを大量に設置するという方法もあります。
Show this page in English
もくじ
各種ツール類のインストール
マイクロソフトフライトシミュレーター用のアドオンコンテンツを作るには、まず各種ツール類をパソコンにインストールしてください。詳しくは、下記のページをご参照ください。
パッケージの命名とプロジェクトの作成
作成するシーナリーのパッケージ名を考えてください。 MSFS SDKでは、パッケージの命名規則が厳密に決められています。 規則に従った正しいパッケージ名を考えてください。パッケージ名が決まったら、中身が空のプロジェクトを作成します。
詳しくは、下記のページをご参照ください。
MSFS SDKでシーナリーにライト/照明を追加する
MSFS SDKを使うと、MSFSに標準で準備されているライトオブジェクトを、シーナリーに簡単に追加することができます。




するとMSFSに標準搭載されているライトオブジェクトが見つかります。 最もポピュラーなライトは"Light_Cold", "Light_Warm"の2つです。 "Light_Cold"は白色のライト(昼光色)です。 "Light_Warm"はややオレンジが混じった色のライト(電球色)です。
その他にもいろいろなライトオブジェクトが準備されています。試してみてください。
ライトオブジェクトを選択したら、画面左下の[Add]ボタンをクリックします。


しかしこの中にはMSFSに標準搭載されていない(他のユーザーは持っていないかもしれない)ライトオブジェクトや、そもそもライトではないオブジェクトも含まれます。 この中からオブジェクトを選択するときは注意してください。


つづいて座標軸の横の緑色の四角形をドラッグすると、ライトを水平面上だけで移動できます。 高度を調整したり、水平面上で移動したりを繰り返して、ライトを好きな場所に設置してください。
あとはひたすら上の手順を繰り返し、ライトを設置していきます。 時々Scenery Editor画面の[Save Scenery]ボタンをクリックして、シーナリーを保存しながら作業を進めてください。

なお、MSFSのライトを設置しただけでは、光源そのもの(電球や蛍光灯)はレンダリングされません。 光源を設置した周囲が明るくなるだけです。 光源そのものを見えるようにするには、光源を3Dモデルとして作成し、"発光"マテリアルを設定するなどの作業が必要です。 しかしGoogleMapのシーナリーは、通常上空の高いところから眺めるので、光源そのものが見えなくても十分楽しめます。


ライトの明るさは、シーナリーオブジェクトからの距離で調整します。 この例では、高層ビル(Act Tower)には、こちら側と反対側に、"Light_Cold"を2つずつ配置しています。
ライトオブジェクトの保存される場所
上の手順でシーナリーに追加したライトの情報は、"PackageSources\scene"フォルダーの下にある"objects.xml"ファイルに追記・保存されていきます。
Blenderでシーナリーにライト/照明を追加する・メッシュを編集する
無料の3Dモデリングソフト:Blenderと「glTF-Blender-IO-MSFS」エクスポータープラグインを使うと、Blenderで作成したオブジェクトやGoogle Earth Decoderで生成したMSFSシーナリーに、ライト/照明を追加したり、そのメッシュを編集することができます。 Blenderに準備されている4種類のライト:スポットライト、点光源、太陽、面光源を追加できます。 また色や明度も自由に設定可能。点滅するライトも追加できます。ただしGoogle Earth Decoderで生成したシーナリーを編集対象にする場合は、シーナリー全体を一気に加工することはできません。 各タイルごと、LODごとにライトの追加やメッシュの編集を行う必要があります。 作業にはとても手間がかかるので、シーナリーの中で特に目立つランドマークに限って処理すると良いと思います。
注意: 「glTF-Blender-IO-MSFS」エクスポータープラグインは、Blenderバージョン3.3または3.6で使用してください。

ここで各LODのメッシュを加工してエクスポートすれば、シーナリーを変形することができます。
なお、Blenderにインポートする前には シーナリーデーターの最適化 を済ませておいてください。 シーナリーをBlenderで加工してしまうと、Google Earth Decoder Optimization Tools (GEDOT)で最適化したときにエラーが発生します。
BlenderとMSFSの間で3Dデータのエクスポート・インポートを行うglTF-Blender-IO-MSFSの使い方
シーナリーデーターを最適化する











上に並ぶ[Point][Sun][Spot][Area]をクリックすると、ライトの種類を切り替えることができます。 "Color"欄をクリックすると、ライトの色が選択できます。 "Power"欄で、ライトの明るさが選択できます。 街灯は20~30W程度、店舗の照明などは50W程度、ビル頂上の赤色点滅灯(航空障害灯)は30W程度、ランドマークのライトアップに使うスポットライトは300W程度にするといいかもしれません。
MSFSにエクスポートすると、ライトはBlenderの画面で見るより明るく見えるようです。


編集したいライトが選択されていなかったときは、プロパティ画面の最上部にあるドロップダウンリストから、編集したいライトを選択します。

"Has symmetry"欄にチェックを入れると、ライトが対称になります。ライトの向く方向の反対側にもライトコーンが生成されます。スポットライトの場合に効果があります。 しかし筆者はまだ効果を確認できていません。
"Day/Night cycle"欄にチェックを入れると、そのライトは夜になったときだけ点灯します。
その他のパラメーターは、ライトの点滅と回転に関するパラメーターです。 下記の表をご覧ください。
Keyword | description |
---|---|
Flash frequency (点滅回数) | 1分間にライトが「点滅」する回数。 例えばここに6を指定すると、ライトは10秒(= 60 sec / 6 times )に1回点灯します。 これを0に設定するとライトは点滅しません(点灯したまま)。 |
Flash duration (点灯時間) | 1回の点灯の持続時間(秒)。 "Flash frequency"が0の時は、このパラメータは意味を持ちません。 |
Flash phase (点灯位相) | これは、シミュレーターでモデルが生成されてから、最初の点滅が行われるまでの時間(秒)です。 このパラメーターは、同じ *.gltf 内の複数のライトを同期または非同期で点滅させるのに使います。 "Flash frequency"が0の時は、このパラメータは意味を持ちません。 |
rotation speed | ライトの1分あたりの回転数。 この値は、ライトの角度が 360°未満(スポットライト)の場合にのみ意味を持ちます。 |
これらパラメータの詳細については、MSFS SDKドキュメントの LIGHTS のページで読めます。
LIGHTS (MSFS SDK Documentation)


新しくライトを設置するたびに、その色や明るさに加えて、MSFSエクスポーター向けのプロパティも設定することを忘れないでください。

まずはライトが格納されたコレクションを、各LODのコレクションにコピーします。 ライトの原本を格納したコレクションを選択し、右クリックメニューで"Copy"を選びます。




この作業をすべてのLODに対して行います。

ただし、ライトをエクスポートするには、オプションの設定が必要です。 「glTF-Blender-IO-MSFS」エクスポータープラグインの"Settings"画面を開きます。
テクスチャはすでにプロジェクトに存在していると思います。 今回新たに出力する必要はないので、ダミーの出力先フォルダを作り、"Textures"欄に指定します。
また、"Include"-"Data"欄の"Punctual Lights"欄にチェックを入れます。

一方、ライトの原本が格納されているコレクションは、すべてチェックを外して、出力しないようにしておきます。
そして最後に一番下の"Export"ボタンをクリックします。

また、".gltf"ファイルをテキストエディタで開き、文字列"ASOBO_macro_light"を検索すると、追加したライトのパラメータが反映されているのが確認できます。

なお、Blenderのライトを設置しただけでは、光源そのもの(電球や蛍光灯)はレンダリングされません。 光源を設置した周囲が明るくなるだけです。 光源そのものを見えるようにするには、光源を3Dモデルとして作成し、"発光"マテリアルを設定するなどの作業が必要です。 しかしGoogleMapのシーナリーは、通常上空の高いところから眺めるので、光源そのものが見えなくても十分楽しめます。

画面左のお城(浜松城)は、白色のスポットライトで4方向からライトアップしました。
お城の敷地には、街灯として、黄色い点光源をいくつか配置しました。
画面中央下部の広場には、全体を照らすように白い点光源を1つ、周囲の建物の前にも黄色い点光源を5つ配置しました。
その奥の駐車場の左にある小さな建物(スターバックスコーヒー浜松城公園店)にも点光源を一つ。
さらにその後ろの高層ビル(ホテル)のてっぺん4隅には、赤色点滅灯(航空障害灯)を点滅させました。
ゲーム画面でプロジェクトのビルド結果を確認する
ライトオブジェクトの保存される場所
上の手順でシーナリーに追加したライトの情報は、"PackageSources\[シーナリー名]-modelLib"フォルダーの下にある"[タイル名]_LODnn.gltf"ファイルの中に、テキストデータで保存されます。 "ASOBO_macro_light"を検索すると、ライトオブジェクトを見つけることができます。 テキストエディタを使って、ライトオブジェクトのパラメーターを修正することができます。
Blenderで作成したライトオブジェクトをMSFSシーナリーに設置する
Blenderで作成したライトは、建物などのオブジェクトと同じように、部品としてMSFSシーナリーに設置することができます。 MSFS SDKには準備されていない、いろいろな色のライト、点滅するライト、スポットライトなどを部品として作成しておくと便利です。
そして球と同じメッシュ内、原点から300mほど下に200x200x400mほどの大きな直方体を置きました。 地表に現れない部分に巨大な直方体を作りこむことで、ある程度遠くからでもゲーム内にライトオブジェクトが表示されるようにしています。




エクスポータープラグインの使い方と、オブジェクトをMSFSのシーナリーに設置する方法は、 BlenderとMSFSの間で3Dデータのエクスポート・インポートを行うglTF-Blender-IO-MSFSの使い方 のページをご覧ください。



