Physics (物理演算) プロファイラーはシーンで物理エンジンが処理する物理演算に関する統計を表示します。この情報は、シーンにおける物理特性に関連するパフォーマンスの問題や予期せぬ矛盾を診断し解決するのに役立ちます。
Physics Debug Visualization も参照してください。
プロパティ | 機能 |
---|---|
Active Dynamic | スリープ状態ではない Kinematic 以外の Rigidbody コンポーネントの数 |
Active Kinematic | スリープ状態ではない Kinematic な Rigidbody コンポーネントの数。ジョイントが設定された Kinematic な Rigidbody コンポーネントは、フレームにつき複数回処理されることがあり、これは表示回数に反映されます。Kinematic な Rigidbody は、MovePosition または MoveRotation がフレームで呼び出されると有効になり、次のフレームでも有効に保たれます。 |
Static Colliders | それ自体、またはその親に Rigidbody コンポーネントがアタッチされていないゲームオブジェクトの Collider コンポーネントの数。そのゲームオブジェクト、またはその親が Rigidbody コンポーネントを持つ場合は、コライダーを Static Collider としてではなく複合コライダーとして数えます。このようにすることによって、同じゲームオブジェクトに設定されたすべてのコライダーを Rigidbody コンポーネントとするよりも、1 つにまとめた複数のコライダーを便利に設定することができます。 |
Rigidbody | 物理演算エンジンが処理する Rigidbody コンポーネントの数。コンポーネントのスリープ状態には関係ありません。 |
Trigger Overlaps | 重複するトリガーの数 (ペアの数) |
Active Constraints | 物理演算エンジンが処理するプリミティブな制約の数。制約は、衝突の反応と同様、ジョイントの構成ブロックとして使用されます。例えば、ConfigurableJoint の線状や回転の自由になる度数を制限するのに、制限ごとのプリミティブな制約がかかわっています。 |
Contacts | トリガーが重複しているペアの数も含めて、シーン内のすべてのコライダーの接触ペアの総数。コライダーのペアの間の距離が特定の制限値 (ユーザーが設定可能) を下回ると、コライダーのペアごとに接触ペアが作成されます。そのため、まだ接触または重複していなくても、Rigidbody コンポーネントに対して接触が発生することがあります。 詳細については、Collider.contactOffset およびContactPoint.separation を参照してください。 |
ノート
数値は、シーン内で Physics コンポーネントを持つゲームオブジェクトの正確な数と一致していない可能性があります。これは、Physics コンポーネントの中には、それに影響する他のコンポーネント (アタッチした Joint コンポーネントなど) に応じて異なる速度で処理されるものがあるためです。特定の Physics コンポーネントがアタッチしたゲームオブジェクトの正確な数を計算するには、FindObjectsOfType 関数を使ってカスタムスクリプトを書きます。
Physics プロファイラーには、スリープ中の Rigidbody コンポーネント数は表示されません。これらは、物理エンジンに関与していないコンポーネントであるため、Physics プロファイラーによって処理されません。Rigidbody コンポーネントのスリープに関する詳細は リジッドボディの概要:スリープ を参照してください。
物理シミュレーションは、メインロジックの更新ループとは別の固定周波数更新サイクルで実行され、呼び出しごとに Time.fixedDeltaTime を通してのみ時間を進めることができます。これは Update と FixedUpdate の違いに似ています (詳細は Time ウィンドウのドキュメントを参照してください)。
負荷の高いロジックやグラフィックスフレームが多く使用され処理に時間がかかる場合、Physics Profiler はフレームごとに物理シミュレーションを複数回、呼び出さなくてはなりません。つまり、リソースに荷重がかかっているフレームにさらに時間とリソースが消費され、Maximum Allowed Timestep 値 (Edit > Project Settings に移動し Time で設定) のために、物理シミュレーションが一時的に停止する原因となります。
CPU Usage プロファイラー を選択して、 Overview で Physics.Processing や Physics.Simulate の呼び出し数を確認することによって、プロジェクト内でこの問題を検知できます。
この図では、Calls の列の数値 1 は、物理演算のシミュレーションが最近の論理フレームで 1 回呼び出されたのを表しています。
呼び出し回数が 10 に近いと問題を示唆している場合があります。最初の解決策として、物理演算シミュレーションの頻度を減らします。問題が続く場合は、Physics Profiler がゲーム時間に追いつくためにそれほど多くのシミュレーションの呼び出しをする直前の、負荷の高いフレームの原因を確認します。ときには、シーンで負荷の高いグラフィックスフレームがあると、後に物理演算シミュレーションがより多く呼び出される原因になることがあります。
シーンの物理演算シミュレーションのさらに詳しい情報を得るには、上のスクリーンショットに表示されているように、三角の矢印をクリックして Physics.Processing を広げます。こうすると、シーンを更新するために実行された物理エンジンの実際のタスク名が表示されます。最もよく見かける名前は以下の 2つです。
Pxs ‘PhysX solver’ を短縮した名称。重なったボディーの接触の解除も含め、ジョイントに必要な物理エンジンタスクです。
ScScene ブロードフェーズとナローフェーズを実行し、ボディーを統合するなど (力と衝動で空中にボディーを移動)、シーンの更新に必要なタスクに使用されます。2フェーズ衝突の検知に関する定義に関しては、Steven M. LaValle’s work on Planning Algorithms を参照してください。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.