見出し画像

UE5プロジェクトへのNanite&Lumen導入時メモ【Lighting in Unreal Engine 5 for Beginners】

下記の動画を参考にすると、UE5内で作成したプロジェクトにLumen,Nanite等の機能を使ったライティングを簡単に導入することが出来ます。

この記事では、動画と同様にプロジェクトへのNanite,Lumen導入→球体やライトを使ったテスト→サンプルモデルをNaniteでレンダリングの順に行っています。

基本的に動画通りに手元で実行すると、大体は上手く導入出来るので詳しくは動画を見て下さい。

ただし、動画通りに作業しても同じような結果が得られなかった箇所がいくつか見られたので、この記事ではその時の対処法をメモとして残しています。

こんな感じの環境が作れます

Nanite導入・プロジェクト設定

新規プロジェクトを作成したゲームエンジンのバージョンは5.1.1です。
プロジェクト設定のDynamiteGI Illumination Method→Lumenに設定する所はデフォルトですでに設定されていました。

動画を参考に、手動で設定したプロジェクト設定は「ハードウェアレイトレーシングをサポートする」と、Lumenの「可能な場合ハードウェアレイトレーシングを使用」で、これらにチェックを入れて再起動しました。

DynamiteGI Illumination Method→Lumenにする
Lumenの「可能な場合ハードウェアレイトレーシングを使用」

再起動後に、シャドウマップメソッドをVirtualShadowMapsに変更、「ハードウェアレイトレーシングをサポートする」にチェックを入れて、Naniteを使用するプロジェクトの準備が出来ました。

シャドウマップメソッドをVirtualShadowMapsに変更
「ハードウェアレイトレーシングをサポートする」にもチェックを入れる

ノイズへの対処

動画の3:18~周辺でライティングの基礎を解説しています。
ディレクショナルライトなど、UEで扱えるライトの種類やライティング範囲の設定などを覚えられます。基本的に動画に従えば、問題なく手元でも再現出来ますが、自分の環境ではライトが当たった球体や四角にカメラが近づくとノイズが目立ちました。

ライトが当たった物体がノイズだらけになる

このノイズは、ライトの設定からSample Per Pixelの値を変更することで減少します。値を大きくするとパフォーマンスに影響するので注意が必要です。

ライトのSample Per Pixelを4ぐらいに設定するとノイズが減少する
ノイズが修正された。
値を大きくするとパフォーマンスに影響するので注意

また、Poly Havenで配布されているのHDRI画像を使い、全天球カメラで撮影した画像を3D空間に配置し光源として使う、バックドロップというライティング方法を動画では紹介しています。

このバックドロップを設定する際に、3D空間上に球体を配置して映り込みを確認する工程がありますが、自分の環境では動画と同じ様に「球体にHDRI画像からの照り返しのみ表示されている」状態になりませんでした。

下半分が真っ黒になる
(レンダリング結果としては正しいがHDRI画像が球面として映って欲しい)

この現象はマテリアルではなく、ライトの設定から修正する事ができました。

ライトの設定の「Lower hemisphere is solid color」にチェックを入れる
球体にHDRI画像の映り込みが表示される

Nanite導入

ここからは3Dモデルを実際にライティングするために、プロジェクトに無料アセットをインポートし、3DモデルをNaniteに対応するように切り替えます。
無料の良質なモデルはMegascansと検索するとマーケットプレイスから入手出来ます。

無料の良質なモデルはMegascansと検索するとマーケットプレイスから入手出来ます

Lumenの設定は最初に済んでいるので、3Dモデルが配置されたレベルを開いて、配置されたモデルのメッシュをNaniteへ対応させていきます。

Nanite導入前
コンテンツブラウザからメッシュを選択してNaniteを有効化する

動画で言及が有ったかは怪しいですが、自分の環境では追加で、「Platforms → Windows → D3D12 Target Shader Formats -> SM6 Windows with D3D12上でチェック」という設定が必要でした。
下の記事でも同様の操作を行っていたので、レンダリング等が上手く行かない人は参考にして下さい。

環境光ミキサー

自然なライティングのために環境光ミキサー機能を導入します。初期設定の際に地平線以下が真っ黒になる場合は、「アクタを配置」からExponentialHightFogを追加して対応します。

環境光ミキサー機能を使ってライティング
ExponentialHightFogを追加

環境光ミキサーについてはEpicGames公式がチュートリアルが用意しているので参考にするのが良いでしょう。

マニュアル露出設定

基本的にカメラ露出は自動が良いのですが、パラメータからマニュアル露出にも出来ます。

マニュアル露出設定
マニュアル露出設定の例

ベイクドされたライトを消す

Lumenで正しくレンダリングするために、事前にベイクドされたライトが残っている場合は消します。
「World Settings」タブから「Force No Precomputed Lighting」にチェックを入れ、Build Lighting Onlyを選択するとベイクドされた情報は消えます。

ここにチェックを入れる

以上の設定で、モデルのメッシュにNaniteが正しく設定されている状態で「Nanite ビジュアリゼーション」からオーバードローを確認すると、下画像のようにメッシュが表示されます。Naniteが設定されていないメッシュは、画面には表示されません(真っ黒になる)。

ヒートマップが表示される
赤い所は高負荷?
レンダリング例

出来なかった点

ボリューメトリックフォグを出そうとしたが出ない

動画の33:49周辺のゴッドレイを出す作業を行っても、動画のようにならなかったので他の動画や講座を調べる必要がありそうです。ゴッドレイ関係の設定はライトやExponentialHightFogなどのパラメーターが関わっていて少し複雑になっていました。

微弱ながらゴッドレイは表現出来ている
(カメラを動かすと光の筋が見える。静止画だと分かりにくい)

記事の執筆中にUE5.2と5.3が公開されていますが、この記事の内容はプロジェクトのアップデートに対応出来る範囲だと思います。

まとめ

ここまで色々書きましたが、最初の動画はかなり参考になるのでオススメです。記事内で扱った公式のリファレンスも、詳しく見て行くと新しい発見がある気がするのでオススメです。

過去の記事で取り扱ったUnityのトゥーンシェーダーも進化しているっぽいです。

仕事が多そうなUnityを色々調べてみたい気持ちもありますが、UEは最近見た目やプロシージャ技術の発展が目立つので、VRMモデリングやVRM4Uと合わせてUEを扱っていくと、更に新しい物が作れるのではないかと思います。

感謝します