忍者ブログ

非現実的な話

ゲーム、UnrealEngine4などの話題を取り扱います。取り扱う内容は個人の範囲で調べたものなのでご利用は自己責任でお願いします。

【UE4】LightRebuildErrorについて

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

【UE4】LightRebuildErrorについて


メモメモ。

これなんで出るん?



ライトビルド時間掛かるからできるだけやりたくない。
コンソールコマンドで消せるけど正しい状態を維持したい。
⇒正しいお作法を学べば回避できるじゃないか!

エラー条件

このエラーが出る操作は以下の通り。

・DirectionalLightのRotationが可変時
・SpotLight、PointLightのLocationが可変時
・SkyLightは影響しない
 ⇒SkyLightはLightだけど扱いが他Lightと異なる

・DirectionalLight、SpotLight、PointLightは "ALight" 継承のActor
・SkyLightは"AInfo"継承のActor
 ⇒"AInfo"は設定情報を持つだけのActor、GameModeやWorldSettingも"AInfo"継承
 ⇒全く別物のためSkyLightはエラー検出の対象外として考える






もうちょい突っ込むと

・エディタ起動だと出る
・Shipping、DebugTestでは出ない
・ライトの情報はレンダリングスレッドで常に更新
 ⇒PIE実行中でなくともチェック
・コンソールコマンド「DumpUnbuiltLightInterractions」でどのライトがエラーとなっているかを表示することができる。以下の例だと、"SpotLight 2"がエラー対象。Viewportには出ない。OutputLogに出る。



・コンソールコマンド「DisableAllScreenMessages」でエラー表示を消せる。
 ⇒全部消える&ライト異常には変わりないので意味がない!

ちょっとまとめ

・影に変更があった時ではなく、影を生成するものに変化があった時に出る
⇒正確にはライトの持つStaticShadowの情報、もしくはDynamicShadowの情報のいずれかに変化があった時
⇒それはそうだ。

=================================================

<追記>

レンダリング関連の情報は以下のドキュメントが参考になった。
https://docs.unrealengine.com/latest/INT/Programming/Rendering/index.html

 上記にも記載のある通り、ワールド上に存在する物体のレンダリング情報は、プレイヤーの動作などの制御とは別のクラスで行われ、UWorldに対応するレンダリングはFSceneクラスで行われる。エラー判定の基準となるLighting情報は、FPrimitiveSceneInfo、FPrimitiveSceneProxyクラスが持ち、これらの情報を元に判定が行われる(StaticLightか?とかDynamicLightを落としているか?など)。
 ただし、判定基準はLighting情報だけでなくWorld上に配置されたComponent(影を生成する物体)にも及び、これを全て正確に追うのはかなり膨大な作業である(Component毎に影の生成条件などが異なる)ため割愛。

結論:Lightを動かすとリビルドが求められる

「Lightを動かさなくともエラー」が出るという報告がAH上に幾つか見られたが、Ver4.7系だとそういった既知の不具合があるようだ。基本的には上記の内容で問題ないと思われる。

以上、覚え書き。

コメント

プロフィール

UnrealEngine4について調べる。
ゲームはそんなに得意ではない。

ブログ内検索

カレンダー

10 2017/11 12
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

リンク

  • [PR]
    PR