Frames
  • Home
  • Work
  • About
  • Library
  • Contact

ムーバブルなStaticMeshにStaricLightでライトマップをベイクする

5/28/2015

1 コメント

 
基本的にライトマップは直接光間接光ともには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 コメント
Bianca link
11/22/2020 10:25:01 pm

Grateful forr sharing this

返信



返信を残す

    Archives

    11 月 2015
    5 月 2015

    Categories

    すべて

    RSS フィード

Frames ,Tokyo
  • Home
  • Work
  • About
  • Library
  • Contact