2.

UE5 の Lumen が暗い・反射しない|原因と確認ポイント

編集

この記事の要点

  • まず「Lumen が動いているか」を切り分ける。スケーラビリティ設定と Post Process Volume による上書きが二大原因。
  • Lumen は動的 GI なので、ライトの Mobility が Static のままだと間接光として期待どおりに働かない。
  • 距離フィールドが生成されていない、あるいは解像度が足りないメッシュは Lumen の世界に正しく載らず、暗さや光漏れの原因になる。
  • 半透明マテリアルや、極端に薄い・小さいオブジェクトは Surface Cache に載りにくく、エミッシブが GI に寄与しないことがある。
  • 反射が映らないときは、反射方式の設定・粗さの上限・画面外の情報が Lumen Scene にあるかの 3 点を確認する。

Lumen を有効にしたのに屋内が真っ暗になる、金属を置いても何も映り込まない、といった相談は非常に多いものです。原因は 1 つではありませんが、確認する順序を決めておくと切り分けは一気に楽になります。この記事では「設定 → ライト → メッシュ → マテリアル」の順に、上流から潰していく手順を整理します。

第 1 層 : プロジェクト設定・スケーラビリティ そもそも Lumen が有効か / 低スケーラビリティで無効化されていないか 第 2 層 : ライト Mobility / 強度と減衰半径 / スカイライトの有無 第 3 層 : メッシュ 距離フィールドの有無と解像度 / 厚み / Lumen Scene への取り込み 第 4 層 : マテリアル 半透明 / 両面 / ワールドポジションオフセット / エミッシブ強度 上の層が原因のまま下を触っても解決しない。必ず上から順に潰す。
Lumen のトラブルシュートは 4 つの層に分けて上から確認するのが効率的。

1まず Lumen が動いているかを確認する

「Lumen が暗い」と思っていたら、実は Lumen 自体が動作していなかった、というケースが相当な割合を占めます。次の 4 点を順に確認してください。

  1. プロジェクト設定の描画方式:「編集 → プロジェクト設定 → Engine → Rendering」を開き、Dynamic Global Illumination MethodReflection Method が Lumen になっているかを見ます。片方だけ Lumen という状態は珍しくありません。
  2. スケーラビリティ設定:エンジンのスケーラビリティでグローバルイルミネーションや反射の品質を最も低い段階に落とすと、Lumen は動作しません。負荷対策で一時的に下げたまま忘れている、という事故が起きやすい箇所です。
  3. Post Process Volume による上書き:レベル内の Post Process Volume は Global Illumination と Reflections の方式そのものを上書きできます。プロジェクト設定は Lumen なのに、ボリューム側でスクリーンスペース系や None に変えられていないか確認します。Infinite Extent(無限範囲)が有効なボリュームは、離れた場所に置かれていても効いてしまうので見落としやすいです。
  4. レンダリング構成:Lumen は遅延シェーディング(ディファード)が前提です。前方シェーディングを有効にした構成や、モバイル向けのレンダリングパスでは利用できません。VR 向けにテンプレートを組んだプロジェクトなどは、この設定が最初から前方シェーディングになっている場合があります。

ビューポートの表示モードにある Lumen 関連のビジュアライズ(Lumen Scene や Surface Cache)に切り替えると、Lumen がシーンをどう認識しているかを直接見られます。ここに何も映らない、あるいはビジュアライズ自体が選べないなら、上の 4 点のどれかで止まっている可能性が高いです。

2ライト側の確認

Lumen が動いていることを確認できたら、次は光源そのものを疑います。ライティング の基本設定が Lumen の前提と噛み合っていないパターンです。

確認項目症状対処
Mobility が Static直接光は出ているのに、まわりへの照り返しがまったく出ないMovable もしくは Stationary に変更する。Lumen は動的 GI なので、ベイク前提の Static ライトは想定外の組み合わせになる
スカイライトがない影の中や日陰が真っ黒に沈む。屋外なのに空の色が回り込まないSky Light を配置する。空の見た目に追従させたい場合は Real Time Capture を使う
減衰半径が小さいポイントライトのすぐ近くしか光らず、部屋全体が暗いAttenuation Radius を広げる。ただし広げるほど影響を受けるオブジェクトが増え、負荷も上がる
強度の単位の取り違え数値を上げても思ったほど明るくならない、逆に極端に飛ぶIntensity Units(カンデラ/ルーメンなど)を確認する。単位が違えば同じ数値でも意味が変わる
露出の自動調整実は Lumen ではなく露出のせいで暗く見えているPost Process Volume で露出を固定し、明るさの比較を同じ条件で行う

特に最後の露出は要注意です。オートエクスポージャーが効いていると、シーンの平均輝度に合わせて自動的に明るさが調整されるため、「設定を変えたのに変化がない」「別のレベルと比べられない」という状況が生まれます。ライティングを詰めるときは、まず露出を固定した状態で比較するのが鉄則です。

3メッシュ側の条件

Lumen はシーンをそのままトレースしているわけではなく、距離フィールドと Surface Cache で構成された簡略表現をトレースしています。ここに正しく載っていない メッシュ は、光を受けも返しもしません。

  1. 距離フィールドが生成されているか:プロジェクト設定の Generate Mesh Distance Fields がオフだと、ソフトウェアレイトレーシングは頼るデータがなくなります。この設定を変えるとシェーダの再ビルドとエディタ再起動が必要です。
  2. 個々のメッシュで無効化されていないか:スタティックメッシュ側の設定やアクタのライティング設定で、距離フィールドの生成や距離フィールドライティングへの影響を切っている場合があります。特定のオブジェクトだけ影が出ない・光を返さないときはここを見ます。
  3. 距離フィールドの解像度が足りているか:スタティックメッシュエディタの Distance Field Resolution Scale を上げると、より細かい形状が距離フィールドに反映されます。細い柱や複雑な造作が「無いもの」として扱われている場合に有効です。上げるとメモリを消費するので、必要なアセットだけに適用します。
  4. 形状に厚みがあるか:距離フィールドは形状を近似するため、紙のように薄い板は表現しきれず、光が壁を突き抜ける「ライトリーク(光漏れ)」の主因になります。壁や床は、面ではなく厚みのあるボックスとして作るのが Lumen 前提のモデリングにおける基本方針です。
  5. Lumen Scene に取り込まれているか:小さすぎるオブジェクトは、負荷とのバランスから Lumen Scene に載らないことがあります。小物からの照り返しが必要なら Lumen Scene Detail を上げますが、負荷は増えます。
  6. 遠すぎないか:Lumen Scene View Distance や Max Trace Distance を超えた先のジオメトリは、間接光の供給源になりません。広大な屋外で遠景からの反射光が届かないときはこの値を見直します。

大規模レベルでは、ストリーミングやレベルオブディテールの状態も絡んできます。関連する事象として 古いHLODアクタを検出、HLODをリビルドする必要があります のような警告が出ている場合、遠景の表示状態そのものが想定と違っている可能性があるため、あわせて解消しておくと切り分けが楽になります。

4マテリアル側の条件

マテリアル の作りも Lumen の見え方に直結します。特に次の 4 つは、知らないと原因にたどり着けない類の落とし穴です。

△ 半透明マテリアル
半透明のブレンドモードは Surface Cache に載らないため、間接光を受けたり返したりする挙動が不透明マテリアルとは異なります。窓ガラスやエフェクトを半透明で作ったうえで「そこから光が漏れてこない」と悩むケースが典型例です。光源として機能させたい部分は、不透明メッシュに置き換えるか、実際のライトを併用します。
△ エミッシブの寄与
エミッシブによる間接光は Surface Cache 経由で計算されるため、対象が Lumen Scene に載っていること、そしてある程度の面積と強度があることが条件になります。小さなランプの発光を GI で頼りにするのは不安定で、実際のポイントライトを併置するほうが確実です。
△ 両面(Two Sided)
両面マテリアルは、距離フィールドの生成や Surface Cache のキャプチャと相性が悪く、自己遮蔽や不自然な暗さの原因になることがあります。葉や布の表現で多用しがちなので、暗さが局所的に出ている場合は疑ってみてください。
△ ワールドポジションオフセット
頂点シェーダで形を動かす表現は、距離フィールドには反映されません。風で揺れる草木や、頂点アニメーションで変形させたメッシュは、Lumen 側では元の位置にある扱いになり、影や照り返しの位置がずれます。

5反射だけが映らないとき

GI は出ているのに反射だけおかしい場合は、確認するポイントが少し変わります。

症状考えられる原因確認すること
何も映り込まない反射方式が Lumen になっていないプロジェクト設定の Reflection Method と、Post Process Volume での上書きの両方
画面外のものが映らないスクリーントレースに依存している状態映したい対象が Lumen Scene に含まれているか。距離フィールドの有無、Lumen Scene View Distance
ざらついた面に反射が出ない粗さの上限で打ち切られているMax Roughness To Trace の値を上げる
鏡のような面がぼやけるソフトウェアトレースと Surface Cache の精度限界ハードウェアレイトレーシングとヒットライティングの併用を検討する
反射がざらつく・ちらつくトレース品質が不足しているReflection Quality を上げる。カメラが速く動く場面ほど目立つ
特定のオブジェクトだけ映らないそのメッシュが Lumen Scene に載っていないSurface Cache のビジュアライズで、対象が正しく表示されているかを見る

Lumen の反射は、まず画面内の情報を使い、足りない部分を Lumen Scene から補う構造です。そのため「カメラを振ると映り込みが変わる」「画面の端で反射が切れる」といった挙動は、仕組み上ある程度避けられません。厳密な鏡面表現が必要なら、ハードウェアレイトレーシングや平面反射のような別手段を局所的に併用する判断も必要です。

6切り分けのチェックリスト

最後に、実務で使える順序をまとめます。上から順に確認し、原因が見つかった時点で止めてください。下の層から手を付けると、上の層の問題が残ったまま無駄な調整を重ねることになります。

  1. 露出を固定して、明るさを同じ条件で比較できる状態にする
  2. プロジェクト設定で GI と反射の方式が Lumen になっているか
  3. スケーラビリティが低すぎないか
  4. Post Process Volume が方式を上書きしていないか
  5. ライトの Mobility が Static になっていないか
  6. スカイライトが配置されているか
  7. Generate Mesh Distance Fields が有効か
  8. Lumen Scene / Surface Cache のビジュアライズで、対象オブジェクトが正しく載っているか
  9. 壁や床に厚みがあるか(光漏れ対策)
  10. 問題の面が半透明・両面・ワールドポジションオフセットを使っていないか
  11. Max Trace Distance や Lumen Scene View Distance がシーン規模に対して足りているか

この順序で確認すれば、Lumen 起因の暗さ・反射不良の大半は原因を特定できます。解決しない場合は、新規レベルに問題のメッシュだけを置いた最小構成で再現するのが確実です。レベル固有の設定なのかアセット固有の問題なのかが一目で分かります。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. Lumen とは?リアルタイムGIの仕組みと有効化
  2. Lumen が暗い・反射しない時の確認ポイント
  3. ライトの種類と使い分け(Directional / Point / Spot / Rect)