メインコンテンツまでスキップ

Inspector

Inspectorは、実行中のPlayCanvasアプリケーション用のデバッグパネルです。キャンバスの横にドッキングし、アプリケーションのシーン、GPUリソース、描画されたフレームを現在の状態で表示します。選択したもののプロパティは、下のビューでリアルタイムに更新されます。

実行中のアプリケーションの横にドッキングしたInspectorパネル。ヒエラルキーでエンティティを選択しています

次のような疑問を解決するのに役立ちます。

  • エンティティが表示されないのはなぜか、そのコンポーネントは今どのように設定されているか。
  • メッシュはどのマテリアルとシェーダーで描画され、どのテクスチャを使っているか。
  • フレームは何を、どのパスで、どの順序で描画しているか。
  • ビデオメモリはどこで使われているか。

Inspectorはアプリケーションを読み取るだけです。変更を加えるのは、ユーザーが指示した場合に限られます。エンティティのオン・オフ、アプリケーションの一時停止とコマ送り、そして表示だけに関わる上書き(レンダーモード、ワイヤーフレーム、飛行またはオービットするカメラ)です。これらはInspectorを閉じると元に戻ります。

Inspectorの追加​

Inspectorは@playcanvas/inspectorパッケージとして公開されており、エンジン2.23以降が必要です。

npm install @playcanvas/inspector

アプリケーションに対して作成します。

import { Inspector } from '@playcanvas/inspector';

const inspector = new Inspector(app, { dock: 'left', width: 480 });

playcanvasはこのパッケージのpeer dependencyです。Inspectorはアプリケーション自身のエンジン上で動作するため、アプリケーションがimportしているものと同じplaycanvasパッケージである必要があります。削除するにはinspector.destroy()を呼び出します。

専用のエンティティにScriptとして追加し、シーンに組み込むこともできます。

import { EntityInspector } from '@playcanvas/inspector';

const entity = new Entity('inspector');
entity.addComponent('script');
entity.script.create(EntityInspector, { properties: { dock: 'left' } });
app.root.addChild(entity);

オプション​

オプション既定値説明
visibletrueパネルを表示した状態で開始するかどうか。
dock'right'パネルをドッキングするキャンバスの側。'left'または'right'。
width420パネルの幅(CSSピクセル)。
top0他のオーバーレイと重ならないように、パネルの上に空ける間隔(CSSピクセル)。
toggleKey'Backquote'パネルの表示・非表示を切り替えるキー。
pauseKey'F9'アプリケーションを一時停止・再開するキー。
stepKey'F10'一時停止中に1フレーム進めるキー。
storageKey'pc-inspector'アクティブなタブやパネルの幅など、パネルの設定を保存するローカルストレージのキー。nullの場合は何も保存しません。

ツールバー​

ボタン説明
Pause / Resume(F9)アプリケーションを一時停止します。描画は続きますが、時間は止まります。
Step(F10)一時停止中に1フレーム進めます。
Pickビューの上にポインターを置くとその下のエンティティの輪郭を表示し、クリックすると選択します。
Flyアプリケーション自身のカメラを動かさずに、マウスとWASDでカメラを飛行させます。
Orbit選択したエンティティの周りでカメラをオービットさせます。ドラッグで回転、右ドラッグでパン、ホイールでズームします。
Pop outパネルを専用のウィンドウに移し、キャンバスを隠さないようにします。
Hide(`)パネルを非表示にします。

Escキーで、ピック、飛行、オービットを終了します。

タブ​

各タブは1種類のオブジェクトを一覧表示し、その下のプロパティビューに選択したオブジェクトを表示します。マテリアルのテクスチャやパスのレンダーターゲットなど、他のオブジェクトを参照する値はリンクになっており、そのオブジェクトをそれぞれのタブで選択します。

タブ説明
Hierarchyエンティティのツリー。エンティティ名、コンポーネント、Script名で絞り込めます。プロパティビューには、選択したエンティティのトランスフォーム、すべてのコンポーネント、属性を含むすべてのScriptが表示され、エンティティはビュー上で輪郭表示されます。各行のチェックボックスでエンティティのオン・オフを切り替えます。
Cameras描画順のカメラと、それぞれの描画先。レンダーモードを使うと、最終的な画像の代わりにアルベド、ワールド法線、ライティングなどのシーンのマテリアル入力を、1つのカメラまたはすべてのカメラで表示できます。シーンをワイヤーフレームで描画することもできます。
Assetsレジストリ内のすべてのアセットと、そのファイル、読み込み状態、使用箇所。
Frame graph直前のフレームを描画したパスを順に表示し、それぞれのレイヤー、描画、レンダーターゲットを示します。GPU timingsはデバイスが計測できる場合に各パスのGPU時間を表示し、Freezeはアプリケーションの実行中も現在のフレームを表示し続け、Previewは選択したパスのレンダーターゲットをビューの上に描画します。
Render targetsデバイス上のレンダーターゲットと、そこに描画したパス、選択したアタッチメントのライブプレビュー。
Texturesデバイス上のテクスチャを大きい順に表示し、ライブプレビューと表示するチャンネルの選択を提供します。
Meshesアプリケーションのメッシュを大きい順に表示し、そのジオメトリと使用箇所を示します。
Materialsアプリケーションのマテリアルを使用数の多い順に表示し、テクスチャ、コンパイル済みのシェーダーバリアント、使用箇所を示します。
ScriptsアプリケーションのScriptクラスと、それを使うエンティティ、属性、ソース。
Memoryリソースの種類別のビデオメモリと、デバイス上のすべての頂点、インデックス、ユニフォーム、ストレージバッファ。
Shadersコンパイル済みのシェーダーとそのソース。
Physics物理ワールドの剛体とジョイント、そしてワールドをシーンの上に描画するオプション。
フォワードパスを選択し、そのレンダーターゲットをビューの上にプレビューしているFrame graphタブ

フレームのステップ実行​

Frame graphタブでは、フレームをドローコール1つずつ描画できます。画像がどのように組み上がり、どの描画が画面に何を描くのかを確認できます。

  1. Frame graphタブを開き、フォワードパス、またはWorldレイヤーの不透明メッシュなど、そのレイヤーステップの1つを選択します。
  2. Debug frameをオンにします。アプリケーションが一時停止し、パスは選択した描画までだけを描画します。ビューにはその描画までのフレームが表示されます。
  3. 上下の矢印キーで、描画を1つずつ戻ったり進めたりします。プロパティビューには描画されたメッシュインスタンスが一覧表示され、現在のものが強調表示されます。ビューではその輪郭が表示され、ステータスバーにはdraw 8 of 12 · World opaqueのようにその番号が表示されます。項目を展開すると、メッシュやマテリアルなどの詳細を確認できます。
  4. Debug frameをオフにすると、再びフレーム全体が描画されます。
Worldレイヤーの描画を1つずつ進めている様子
注記

描画のステップ実行にはエンジンのデバッグビルドが必要で、他のビルドではこのオプションは無効になります。Viteなどのバンドラーは、開発時にplaycanvasパッケージのdevelopmentエクスポート条件によってデバッグビルドを選択します。

サンプル​

エンティティインスペクターのサンプルでは、ライト、物理ボディ、Script、アニメーションするキャラクターを含む小さなシーンでInspectorを開きます。ヒエラルキーでエンティティを選択するか、ビューでピックし、カメラを飛行またはオービットさせ、他のタブも確認してください。`キーでパネルの表示・非表示を切り替えます。

エンティティインスペクターのサンプル