[UE4]UE4でPhysX Visual Debuggerを使う

UE4の物理ライブラリにはPhysXが用いられています。PhysXにはPhysXのSceneをフレーム単位で記録・再現できるPhysX Visual Debugger(PVDと略します)と呼ばれるツールがあり、今回はこれをUE4で使う方法について紹介します。

PhysX Visual Debuggerの導入

まず、PVDをインストールする必要があります。図1のように、ダウンロードセンターのリストの中からPVDを探し、プラットフォームを選んでダウンロードします。ダウンロードするときは、NVIDIA Developer Programに登録する必要があることに注意してください。
図1 PVDのダウンロード

PhysX Visual DebuggerとUE4を連携させる

UE4と連携する前に、少しだけ準備(座標系の設定)が必要です。PVDを起動し、図2のようにPVDの右下にあるUp AxisをZ+に、ChiralityをLeft-Handedに変更します。この設定は起動する度に初期化されるので、起動の度に毎回行う必要があります。
図2 座標系の変更

次に、UE4をPVDに接続します。UE4をPVDに接続するには、コンソールコマンドで「pvd connect」を実行します(余談ですが、UE4とPVDの接続を切断するには、「pvd disconnect」を実行します)。今回はレベル開始後に即実行してほしいので、Execute Console Commandを使います。レベルブループリントで図3のようにノードを繋ぎました。
図3 Execute Console Commandでpvd connectを実行

最後に、物理アクターの配置をします。図4のように適当なアクターをレベル上に配置し、MobilityをMovableにし、Simulate Physicsのチェックを有効にします。このようにしてゲームを実行すると、重力によって物理アクターが落下し、他の物理アクターと衝突しながら床を転がる様子が確認できるかと思います。
図4 物理アクターの配置

ゲームを実行後、起動しておいたPVDを確認すると、図5のように、UE4で作ったレベルに相当するPhysXのSceneがPVD上に再現されています。これで、UE4とPVDを連携させることができました。
図5 PVDでの表示

PhysX Visual Debuggerの使い方

 PVDの基本的な使い方を紹介します。詳細な使い方は、メニューバーにある[Help][Manual]から参照することができます。

PVDのカメラ操作について

マウスの右・左ボタンを押したままマウスを動かすと、カメラの向きを変更することができ、マウスホイールを回転させると、カメラを前進・後退できます。また、キーボードのA・S・D・W・Q・Eを使ってカメラの移動をすることもできます。カメラの移動速度は、図6のように、PVD右上のCamera speed scaleで変更することができます。もしカメラを移動させすぎてしまった場合は、図7のように、メニューバーの[Camera][Reset camera]をクリックすれば、初期位置に戻すことができます。
図6 Camera speed scale

図7 Reset Camera

確認したいフレームを変更する

PVDは、接続が確立されてから切断されるまでのフレームを記録しています。メニューバーの下にあるボタンやスライダーを操作すると、確認したいフレームを変更することができます。これを使うことで、物理シミュレーションがどのような挙動を示したかを調べたり、特定のフレームにおけるPhysX Actorの詳細を調べることができます。
図8 フレームを変更する

PhysX Actorの詳細を調べる

図9のように、PVDの左側にはPhysXのSceneやActor、Material(ここでは物理マテリアルのこと)のリストを確認することができます。例えばRigidStaticsには、デフォルトのレベルに配置されているPlayerStartやFloorが格納されており、RigidDynamicsには、図4あたりの説明で配置した物理アクターが格納されています。ここでPhysX Actorを選択すると、リストの下にPhysX Actorの詳細が表示されます。この詳細には、選択したフレームにおけるPhysX Actorの質量や速度、座標等の情報が表示されます。
図9 PhysX Actorの詳細

PhysX Actorの色分けについて

PhysX Actorは赤や緑、黄などに色分けされています。これらの色分けの意味はメニューバーの[Commands][Settings]から確認・変更することができます。デフォルトでは、赤色は静的アクター、緑は現在動いている動的アクター、黄は現在動いていない(Sleep状態の)動的アクターを示しています。
図10 PhysX Actorの色分け

 おわりに

今回はPVDの使い方の簡単な紹介をしました。PVDには他にも機能があるのですが、私も全てを把握できていないので、ここでは取り扱いません。PVDはPhysXによる物理シミュレーションを用いるゲームで有用なツールなので、積極的に利用していきたいと思います。


この記事は次のバージョンで作成されました。
Unreal Editor(4.16.1-3466753+++UE4+Release-4.16)
PhysX Visual Debugger(Version 3.2016.12.21494747)

コメント