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

また、これらの合わせ技として、Blenderのライトオブジェクトを部品として書き出して、MSFS SDK内でこれを大量に設置するという方法もあります。
Show this page in English
もくじ
MSFS2024との互換性
ここで紹介する手順で作成したライト/シーナリーは、MSFS2020/MSFS2024どちらでも使用可能です。 MSFS2020のSDKでビルドしたライト/シーナリーを、そのままMSFS2024のCommunityフォルダーにコピーして使用することができます。各種ツール類のインストール
マイクロソフトフライトシミュレーター用のアドオンコンテンツを作るには、まず各種ツール類をパソコンにインストールしてください。詳しくは、下記のページをご参照ください。
パッケージの命名とプロジェクトの作成
作成するシーナリーのパッケージ名を考えてください。 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 frequency = 60 / 点滅間隔(秒) |
Flash duration (点灯時間) | 1回の点灯の持続時間(秒)。 "Flash frequency"が0の時は、このパラメータは意味を持ちません。 |
Flash phase (点灯位相) | これは、シミュレーターでモデルが生成されてから、最初の点滅が行われるまでの時間(秒)です。 このパラメーターは、同じ *.gltf 内の複数のライトを同期または非同期で点滅させるのに使います。 "Flash frequency"が0の時は、このパラメータは意味を持ちません。 |
rotation speed | ライトの1分あたりの回転数。 この値は、ライトの角度が 360°未満(スポットライト)の場合にのみ意味を持ちます。 |
これらパラメータの詳細については、MSFS SDKドキュメントの下記のページで読めます。
LIGHTS (MSFS 2024 SDK Documentation)
LIGHTS (MSFS SDK Documentation)


新しくライトを設置するたびに、その色や明るさに加えて、MSFSエクスポーター向けのプロパティも設定することを忘れないでください。
ライトをメッシュオブジェクトのチャイルドにする
ここまででライトの設置は完了しましたが、このままオブジェクトをエクスポートしても、MSFSゲーム内ではライトは点灯しません。 Blenderで設置したすべてのライトは、いずれかのメッシュオブジェクトのチャイルドになっていなければいけません。
LODを持つオブジェクトの場合は、全てのLODにライトをコピーし、それを各LODのいずれかのメッシュオブジェクトのチャイルドにします。 LODを持たないオブジェクトの場合でも、設置したすべてのライトを、3Dモデル内のいずれかのメッシュオブジェクトのチャイルドにします。

まずはライトが格納されたコレクションを、各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には準備されていない、いろいろな色のライト、点滅するライト、スポットライトなどを部品として作成しておくと便利です。
点光源の出力は、設置する場所に合わせて使い分けられるよう、30W, 100W, 1000Wの3種類を作りました。
そして球と同じメッシュ内、原点から300mほど下に200x200x400mほどの大きな直方体を置きました。 地表に現れない部分に巨大な直方体を作りこむことで、ある程度遠くからでもゲーム内にライトオブジェクトが表示されるようにしています。




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


Blenderのモデリングによって建物の窓に明かりを灯す
Blenderで建物の窓に明かりを灯す、2つの方法を紹介します。窓の形のメッシュオブジェクトを配置する
既存の建物にあとから明かりを灯したいとき、あるいは窓の形が単純、あるいは窓の数が少ないときに有効な方法です。

右図でもわかる通り、夜の窓の色は、とても暗い色をセットするとちょうど良くなります。

発光テクスチャを使う
自分で新たに建物の3Dオブジェクトを自作する場合で、特に窓の形が複雑、あるいは窓の数が多いときに有効な方法です。


"Base Color"には日中のオブジェクトの色を指定します。 これは通常白(RGB=1.0, 1.0, 1.0)を指定します。
"Emissive Color"には夜間のオブジェクトの色を指定します。 これは発光テクスチャの色にもよりますが、グレーに設定すると良いと思います。 ここの例では(RGB=0.1, 0.1, 0.1)を指定しています。 ここに指定する明度で、窓(発光部分)の明るさが変化します。
"Day Night Cycle"にチェックを入れると、夜の時刻には発光テクスチャが使用されます。
ちなみに"Collision Material"にチェックを入れると、このオブジェクトは衝突判定の対象になります。


