デフォルト設定では
SkyLightをオンオフ(ワールドアウトライナの目アイコンにて)切り替えても、更新されません。
また、関連するスカイドームやディレクショナルライトを変更してもやはりSkyLightは更新されません。
必要な時はSkyLightのDetailの中のチェックボックスを触って更新させています。
これだと気が付くと間違ったライティングのまま作業を続けてしまっていることが多いのですが、
何か自動更新を掛ける方法はあるでしょうか?
※自動更新がかからない理由はないのでバグだと考えています。
ただいま確認を急いでおります。お時間頂き恐縮ですが、今しばらくお待ち頂ければ幸いです。
お世話になっております。こちらでも同様の挙動を確認いたしましたので、データベースに登録させていただきました。
UE-66870: Visibility of World Outliner doesn’t affect skylight
公開設定にしましたので、いずれIssueから本問題をトラッキングできるかと思います。
エディターでの作業のため致命的ではないかもしれませんが、もしも修正をしたい場合は、Engine\Source\Runtime\Engine\Private\Components\SkyLightComponent.cpp内部のUSkyLightComponent::CreateRenderState_Concurrent()の内部の一行を以下のように変更することで、本問題を修正することができます。
void USkyLightComponent::CreateRenderState_Concurrent()
{
Super::CreateRenderState_Concurrent();
bool bHidden = false;
#if WITH_EDITORONLY_DATA
// bHidden = GetOwner() ? GetOwner()->bHiddenEdLevel : false; // <--- これを
bHidden = GetOwner() ? GetOwner()->IsTemporarilyHiddenInEditor() || GetOwner()->bHiddenEdLevel : false; <--- こっちに
#endif // WITH_EDITORONLY_DATA
ご参考になれば幸いです。
ご対応ありがとうございます。
試してみましたところワールドアウトライナでのオンオフについては操作可能となりましたが 更新されない問題に関してはそのままでした。
少々冗長で申し訳ありませんが 確認手順のキャプチャ画面を添付してレポートいたします。
かのうであれば自動更新、無理であればワールドアウトライナでのSkyLightのオンオフ時に更新されてくれればなとおもいます。
1操作開始前→正常
2スカイスフィアをオフにした状態。→SkyLightには反映されず
3AffectsWorldをオンオフして反映させた状態→正常
4スカイスフィアをオンにした状態。→SkyLightには反映されず
残念ながら、手動でのキャプチャーの更新は仕様となっており、オフィシャルドキュメントにもその記載がございます。
Reflection Captureなどもですが、シーンの全ての変化に対して動的に対応するためには、毎フレームでキャプチャーを行う必要がございます。その確認、もしくは更新の負荷がかかるため、デフォルトではオフになっております。もしもアップデートを常に行うことがエディタ操作時の負荷とならないようでしたら、以下のコマンドを1にすることで、毎フレームのアップデートが可能となります。
r.SkylightUpdateEveryFrame
4.18を使用していることを見過ごしておりました。大変失礼いたしました。SkylightUpdateEveryFrameは4.20から採用されたものです。必要でしたらマージを試みて頂ければと思います。
ご回答解ありがとうございます。
ドキュメントを拝読いたしました。確かにRecapture Skyが呼び出されるタイミングの記述にワールドアウトライナは含まれていませんね。視覚にかかわるDetail操作とワールドアウトライナの操作とを差別化する必要がないと思うので若干納得がいかないですが了解しました。
r.SkylightUpdateEveryFrameを試してみたいのですが、もしかしてUE4.18では未対応なのでしょうか?リストアップされなかったのですが。。