お世話になっております。
UE5.7.3 を利用しておりますが、
ハードウェアレイトレーシングを有効にしているときに、
通常シーンでは画面外にいるMassを利用したキャラクターのアニメーションが適応されず
Aスタンスの状態で表示がされております。
<br/>
UMassVisualizationComponentを利用して
特に画面外でアプリ実装側では特別なことをしていない認識です。
Aスタンスになるぐらいなら反射描画からも消えてほしいところなのですが、
そのように動作させる方法はあるでしょうか?
<br/>
[Attachment Removed]
エンジン改造にはなりますが
MassVisualizationComponent 内で
直接レイトレーシングオフにすることで
とりあえずすべてのケースで映り込まないようにはできましたので
もし他によさそうな方法がなさそうであれば それで対応しようとは予定しております。
[Attachment Removed]
ご質問の問題を再現しようとしています。
MassVisualizationComponentが使われているということはCitySampleと同じようにLODRepresentationでStaticMeshInstanceが指定されており、CustomDataを経由してVATアニメーションを適用しているが、そのアニメーションがAスタンスのポーズになっている(VATアニメーションが適用されていない)ということでよろしいでしょうか?
なお通常のHighResTemplateActorを用いたSkeletalMeshComponentを用いた描画がなされている状態ではアニメーションの問題を確認できませんでした。
バグ登録可能か検討するために再現プロジェクトや具体的な再現方法があると大変ありがたいのですがございますでしょうか?
[Attachment Removed]
> LODRepresentationでStaticMeshInstanceが指定されており、CustomDataを経由してVATアニメーションを適用している
構造としてはその認識です
通常シーンでカメラ内で見えるケースでは問題なくアニメーションが適応されております
ただし 通常シーンでカメラ外でクリップされているケースで ハードウェアレイトレーシングによって鏡面に映り込んだものが Aスタンスのポーズになっている(アニメーションが適応されていないように見える)というものです
RepresentationLOD距離設定を調整して、近距離でVATが描画される状態にすれば、
(Massの実装・挙動については)CitySampleにてそのまま再現できるのではないかと予想してますが、すぐには確認できそうになく 来週中には確認できる見込みです
確認次第ご連絡いたします
[Attachment Removed]
CitySampleで確認した所スクリーンショットのようにミラーの向こう側でマテリアルが適用されていない状態で通行人のメッシュ描画が行われているような挙動が見受けられました。
マテリアルが適用されていないためにAポーズが表示されているようです。
起こっている現象としてはこれで間違いないでしょうか?
[Image Removed]
[Attachment Removed]
MassVisualizationComponent内のStaticMeshInstanceの描画はInstancedStaticMeshComponentで行われます。
レイトレーシングに投入するかどうかをスタティックメッシュのSupportRayTracingフラグで、
WPOが評価されるかが r.RayTracing.Geometry.InstancedStaticMeshes.EvaluateWPO のコンソール変数によって動作が変ります。
r.RayTracing.Geometry.InstancedStaticMeshes.EvaluateWPOの設定値は0のままでしょうか?
0であればr.RayTracing.Geometry.InstancedStaticMeshes.EvaluateWPOの設定値を1にしてWPOの評価を強制して動作が改善されるかをご確認いただきたいです。
[Attachment Removed]
> r.RayTracing.Geometry.InstancedStaticMeshes.EvaluateWPO=1 にして確認してみましたが 動作はかわりませんでした。
承知しました。Aポーズが出ているということはまだWPOが無効になっているようです。
CitySampleでは r.RayTracing.Geometry.InstancedStaticMeshes を 1に設定し、合わせてr.RayTracing.Geometry.InstancedStaticMeshes.EvaluateWPO
に1を設定することでISMで描画されるStaticMeshにWPOが適用できています。
WPOが有効になるとDynamicRayTracingInstanceとして収集されるようになるはずです。
確認のためにFInstancedStaticMeshSceneProxy::GetDynamicRayTracingInstances関数で、
bDynamicRayTracingGeometryまたはbDynamicRayTracingInstancesが有効になっておりインスタンスがレンダラーに投入されているかご確認いただくことは可能でしょうか?
[Attachment Removed]
r.RayTracing.Geometry.InstancedStaticMeshes
r.RayTracing.Geometry.InstancedStaticMeshes.EvaluateWPO
をゲーム実行中 コマンド実行してログから 1 になっていることを 念のために確認しました
あわせて FInstancedStaticMeshSceneProxy::GetDynamicRayTracingInstances 関数にて
bDynamicRayTracingGeometry : false
bDynamicRayTracingInstances : true
となっており レンダラーに投入されているようでした
[Attachment Removed]
失礼しました。検証中に私の手元のエンジンに一部改変を入れていることに気付きました。
デフォルトではISMCのbEvaluateWorldPositionOffsetInRayTracingがoffのためWPOが評価されていないません。
こちらを有効化することで挙動が改善するかと思われます。
void UMassVisualizationComponent::ConstructStaticMeshComponents()
{
...
ISMC->SetCullDistances(0, 1000000); // [Content removed] either LOD or cull distances.
ISMC->SetupAttachment(ActorOwner->GetRootComponent());
ISMC->SetCanEverAffectNavigation(false);
ISMC->SetCollisionProfileName(UCollisionProfile::NoCollision_ProfileName);
ISMC->SetCastShadow(MeshDesc.bCastShadows);
ISMC->Mobility = MeshDesc.Mobility;
ISMC->SetReceivesDecals(false);
ISMC->RegisterComponent();
ISMC->bEvaluateWorldPositionOffsetInRayTracing = true; //追加
ただWPOの有効化はパフォーマンスへの影響もあるためお手元で確認いただいた通り、メッシュ側のSupportRayTracingを落としたりr.RayTracing.Culling.*のカリング用パラメータなどを調整いただくなどの方法でレイトレーシングのASへの投入を制御していただくことも有用かと存じます。
[Attachment Removed]
念のため確認させていただきたいのですが、
レイトレーシング空間内でVAT制御のWPOの動作を確認できた上で、パフォーマンスを念頭に調整されるというということでよろしいでしょうか?
[Attachment Removed]
こちら CitySample で RepresentationLOD距離設定を調整して、近距離でVATが描画される状態 確認したのですが
CitySampleですとハードウェアレイトレの描画結果に反映されませんでした
(r.lumen.visualize 1 の表示でも中央の反射対象が描画されている?空間に存在しませんでした)
そのためSSRのみがかかり大きな違和感はない見た目となっていました。
同じMassの仕組みのはずなのですが、
開発中のタイトルですと、
VATのスタティックメッシュの状態でも
反射対象として描画されてしまっています。
正直特別な設定をしたような心当たりがないのですが、
そのように動作させるような設定などあるでしょうか?
[Attachment Removed]
一部だけAポーズになっている挙動はこちらと同様ですが
こちらではAポーズになっているものも、キャラクターのテクスチャなどは適応されているようでしたので マテリアルそのものは適応されていそうでした
[Attachment Removed]
DefaultEngine.ini に
r.RayTracing.Geometry.InstancedStaticMeshes.EvaluateWPO=1
にして確認してみましたが 動作はかわりませんでした。
(通常シーン視界外のVATキャラが反射でみえるとAポーズになる)
[Attachment Removed]
ご回答ありがとうございます! おっしゃるようにパフォーマンスの懸念もあるため
VAT制御のMassキャラクターはレイトレース対象外にする方向で実装したいとおもいます
[Attachment Removed]
回答おそくなってしまいもうしわけありません
いまのところはVAT描画はレイトレーシング描画の対象ではなくそうと考えています
[Attachment Removed]