Evolution/Kinematic update and forceが重いケースの対処方法について

お世話になっております。

設定のご確認および詳細な情報のご共有、誠にありがとうございます。

ご報告いただいた状況から推察するに、先日ご共有いただいた「負荷グラフのギザギザ」​は、物理の非同期処理の影響によるものと考えられます。

(AccelerationStructureCacheOverlappingLeavesが1に設定されている場合に呼び出される、今回の主な負荷要因であるCacheOverlappingLeaves()は物理Tickごとに実行されます。そのため、Insights上のゲームフレームごとの負荷表示としてはバラつきやすく、特にゲームのフレームレートが低下している状況では、ギザギザとしたパターンが顕著に現れるようです)

社内の関係者によると、​CacheOverlappingLeaves()の処理負荷はシーン内の動的オブジェクトの数に比例するとのことでした。また、ある大きなコリジョンが、より小さなコリジョンを包含するような配置が行われている場合、CacheOverlappingLeaves()の仕事が複雑になり、パフォーマンスに影響を与える可能性があります。

対処法としましては、

・キャッシュ作成のコストが、キャッシュから得られる効率性と不釣り合いであるとして、p.chaos.AccelerationStructureCacheOverlappingLeaves = 0の設定を採用する

・不要なMoveable可動性オブジェクトを削減するなど、シーン構成を見直す

といったものが考えられます。​

また、もし「動く床」の上に多数の装飾品などのオブジェクトがアタッチされて一緒に動いている場合、シーン内の「動的オブジェクト」の数が実際には非常に多くなっている可能性もあります。この場合、初回の投稿で示唆されていた「コリジョンが不要なオブジェクトをNo Collisionに設定する」という対策は、効果的であると考えられます。一方、Use Attach Parent Boundsが今回のようなシナリオで(負荷削減に)期待通りの効果を発揮するかどうかについては、こちらでも引き続き詳細を確認させていただきます。

以上、よろしくお願いいたします。​