基本的にライトマップは直接光間接光ともにはStatic(動かない)なメッシュにしかベイクできません。 つまり、Movable(動く)なStaticMeshはStationary LightかMovable Lightで直接光を当てないと真っ暗になるはずです。しかし、ライティングのビルド時に生成されるVolumeLightingSamples(間接ライティング キャッシュ)によって、簡易的な間接光が反映されるので真っ暗にはなりません。公式ドキュメントによると以下のようになります。
引用元 https://docs.unrealengine.com/latest/JPN/Engine/Rendering/LightingAndShadows/IndirectLightingCache/index.html 見難いですが下の画像の赤丸で囲った黒っぽい点がVolumeLightingSamplesです。ライティングのビルド時に計算してくれます。 ちなみにこれはエディタの「表示」の中の「VolumeLightingSamples」にチェックを入れると可視化できます。 しかしながら「VolumeLightingSamples」の間接光だけでは困ることがありました。 さっきもチラ見えしていましたが以下の画像です。 画像の突き当り上部にStaticSpotLightがあります。 向かい合ったドアは同じマテリアルですが左は暗いので違ったマテリアルが設定してあるように見えます。右はStaticなドア、左はMovableなドアです。 左のドアはライトマップがベイクされないため、直接光は無視されVolumeLightingSamplesによる間接光のみでライティングされているので随分と暗く見えます。 PC出力想定の場合StationarySpotLightかMovableSpotLightを使うことで直接光だけは左のドアにも反映できますのでここまで暗く見えず目立ちませんが、このプロジェクトはモバイル出力想定のものだったためStaticSpotLightしか使えません。 制作当時散々解決方法を探っていたのですが情報が見つからず、ライティングを書き込んだテクスチャをエミッシブにつないだマテリアルぐらいしか方法が思い浮かばず半ばあきらめていました。 解決策は全く違う情報を探していた時に偶然見つけたました。 上の画像は解決したものです。やり方は簡単でした。ライトマップをベイクしたいMovableなStaticMeshを選択した状態で「詳細」から、「Lighting」下部の三角をクリックした中にある「Light as if Static」をチェックするだけです。 しかし万能というわけではありません。あくまでライティングのビルド時の状態をベイクするのでこのアニメーションの様に動かすとシェーディングも一緒に動いてしまいます。ご注意ください。
1 コメント
|