お世話になっております。
UE5.5からUE5.7にアップデートをしてからキャラクターのLOD切り替え時の負荷が高い現象が発生しております。
バージョンアップ前はLOD切り替えに約9.1msだったのですが、バージョンアップ後から約45.6msかかるようになりました。
チェックに使用しているスケルトンのボーン数は951本で、ABPには5つのコントロールリグと2つのLinkしたABP、2つのアニメーションレイヤーと状態に応じたモーションの再生機能があります。
STAT_で調査したところFAnimNode_ControlRig::CacheBones_AnyThreadが37.57msと負荷の大半となっておりました。
その中のFControlRigPoseAdapter::PostLinkedで22.2msかかっており、PostLinkedで呼ばれているFRigHierarchyoseAdapter::RelinkTransformStorageが合計18264回呼び出され13.2msかかっていました。
1回のFControlRigPoseAdapter::PostLinkedの呼び出しでFRigHierarchyoseAdapter::RelinkTransformStorageは1596回呼び出され1.5msかかっておりました。
[Content removed]
症状として近いと感じた上記の対応を取り込んでみたのですが改善はされませんでした。
FAnimNode_ControlRig::CacheBones_AnyThread、FControlRigPoseAdapter::PostLinkedの負荷が高い状況なのですがこちら改善する方法等あればご教示いただけますでしょうか。
[Attachment Removed]
お世話になっております。
お問い合わせありがとうございます。
すでに同じ症状と思われるEPS投稿をチェックしていただいておりますが、
CVar ControlRig.EnableAnimNodePerformanceOptimizations を 0 に設定することはお試しいただいておりますでしょうか?
[ConsoleVariables]
ControlRig.EnableAnimNodePerformanceOptimizations=0
こちらを0に設定いただくことでコードパスが5.5に近いものになり、LOD切り替え時の処理負荷を抑制できるのではないかと考えております。
トレードオフとして、LOD切り替え時のヒッチが起こらなくなる代わりに、毎フレーム負荷がかかることになりますが、それも含めて5.5で許容範囲だったのでれば元に戻せるかと思います。
一度ご確認ください。
以上、よろしくお願いいたします。
[Attachment Removed]
ご返答ありがとうございます。
ControlRig.EnableAnimNodePerformanceOptimizations=0
上記設定でLOD切り替え時の負荷が5.5と同等になったのを確認できました。
ControlRig.EnableAnimNodePerformanceOptimizations 0
上記コマンドは試していたのですが、キャラクターの生成後に試していたので変化がなかったようでした。
生成前にコマンドを実行することで反映されているのが確認できました。
確認不足で申し訳ありません。
トレードオフになる件も承知いたしました。
また何か質問がありましたらお聞きしたいと思います。
ありがとうございました。
[Attachment Removed]
ご確認ありがとうございました。
症状が抑制できたと聞き、安心いたしました。
それでは本件は解決済みとしてCloseさせていただきます。
また何か不明点が発生した場合は、お気軽にEPSをご利用ください。
以上、よろしくお願いいたします。
[Attachment Removed]