session 検証ツールを使う
この記事では、session 検証ツールを使って、エディタ上で session ワークフローをすばやく検証し、EIF ファイルを使ったシミュレーション実行を行う方法を説明します。
始める前に
シミュレーションでは EIF ファイルを入力として使うため、まず EIF ファイルを録画しておく必要があります。
- EIF ファイルの録画については EIF ファイルを録画する を参照してください
また、次の内容も理解しておく必要があります。
- EIF ファイルを録画してシミュレーションに使う の基本概念
- AR Session の基本概念、構成、ワークフロー
session 検証ツール
session 検証ツールは、Unity Editor 上で session ワークフローをすばやく検証し、EIF ファイルによるシミュレーション実行を行うための開発者向けツールです。
既定では、AR Session (EasyAR) オブジェクトの Inspector ウィンドウで session 検証ツールを確認できます。これは DiagnosticsController エディタの一部です。

ツール右上の ↗ ボタンをクリックすると、ツールを独立ウィンドウとして開けるので、確認や操作がしやすくなります。ウィンドウを閉じるか ↘ ボタンを押すと、ツールは再び Inspector ウィンドウに表示されます。

ツールの実行時の様子は次の動画のとおりです。
この動画は、Unity の play モードで録画した session 検証ツールの使用例です。動画上部の左側は
Hierarchyビュー、中央はSceneビュー、右側はGameビュー、下部が session 検証ツールです。Gameビューの内容は、現実世界でユーザーがスマートフォンで見る内容と同じです。ツール左上付近には EIF 再生の進捗バーが表示され、再生進捗に応じて変化します。ツール左下には現在の session 状態が表示されます。ツール右側には session のコンポーネントと利用可能な中心モードが表示されます。
シーン内では、3 つの AR 機能が同時に動作している様子が見えます。
- モーション追跡: frame player によって提供されます。青い球体が XR Origin で、青い円錐がユーザー位置を表します。
- 高密度空間マッピング: 視点の移動に合わせて半透明のメッシュモデルが継続的に生成されます。
- 高密度空間追跡: 動画ではクリスマスツリーが追跡され、重ねられた仮想物体は薄青の point cloud です。
ツールを起動する
ツール上部の ▶ ボタンをクリックするとツールを起動できます。このボタンを押したときの動作は、Unity ツールバー の ▶ ボタンを直接押した場合と同じです。

すでにツールが起動している場合、ボタンは ■ に変わるので、クリックするとツールを停止できます。
ツールを独立ウィンドウで表示している場合、▶ ボタンの右側にある選択欄でツールが使用する session オブジェクトを選べます。ウィンドウをリセットして session が失われた場合は、ここから再選択できます。
EIF 再生を制御する
ツールの EIF 再生機能を使うには、実行前にツールの Frame Player オプションにチェックを入れる必要があります。このとき、ツールは session の assemble 中に frame source の選択を管理し、AssembleOptions.FrameSource の値にかかわらず frame player コンポーネントが有効になります。

そのため、実行時には、現在の session で使われる frame source がツールによって管理されていることを示すダイアログが表示されます。

注記
ツールが frame source の選択を管理するのは Unity Editor 上での assemble 中のみです。ビルドしたアプリの実行時には、このオプションは何の影響もありません。
正常に動作しているとき、EIF 再生コントロールはツール上部の枠で示された部分に表示されます。

次のボタンで EIF ファイルの再生を制御できます。
▶: 再生、停止または一時停止から再開▮▮: 一時停止■: 停止▮◀: 5 秒前へ移動(ファイルが対応している場合)◀◀: 再生速度を下げる(ファイルが対応している場合)▶▶: 再生速度を上げる(ファイルが対応している場合)▶▮: 5 秒先へ移動(ファイルが対応している場合)▲: ファイルを開く- 進捗バー: クリックすると再生位置を移動できます(ファイルが対応している場合)
再生しながらシーンの内容やインタラクションのロジックを調整できるため、開発作業の大部分を PC 上で進めつつ、結果を直感的に確認できます。
注記
新しいデータを再生したり、再生位置を移動したりしても、シーン内の元のデータは消去されません。AR コンポーネントの状態もリセットされず、カメラデータが突然前のフレームから新しいデータに切り替わったように振る舞います。
これは一部の機能にはあまり影響しませんが、モーション追跡に依存する機能(たとえば高密度空間マッピング、Mega など)では、機能状態が異常になる可能性があり、実行結果に影響します。
session ワークフローを制御する
ツールの session ワークフロー制御機能を使うには、実行前にツールの Session Workflow オプションにチェックを入れる必要があります。これは既定で有効です。

正常に動作しているとき、session ワークフロー制御機能はツールの再生コントロールの下にある枠で示された部分に表示されます。

この領域の上部には EasyARController.IsReady と ARSession.State の 2 つの状態情報が表示されます。
領域の下部には、session ワークフローを制御するための次のボタンがあります。
Initialize: session を初期化します。Project Settingsで設定した license key を使うか、手動で license key を入力できますAssemble: session を組み立てるが起動はしないStartSession (Assembled): すでに組み立て済みの session を起動するStartSession: session を組み立てて起動するStopSession: session を停止するStopSession (keep image): session を停止するが画像背景は保持するDeinitialize: session を非初期化する
注記
これらの制御機能は ARSession と EasyARController の関連メソッドを直接呼び出すため、これらのボタンで session 状態の変化が内容に与える影響を検証できます。同時に、アプリのスクリプトでも同様のメソッドを呼び出している場合、アプリの実行フローがアプリ本来の想定を超える可能性があります。
session コンポーネントを制御する
ツールの session コンポーネント制御機能を使うには、実行前にツールの Session Workflow オプションにチェックを入れる必要があります。これは既定で有効です。

正常に動作しているとき、session コンポーネント制御はツールの下側または右側の枠で示された部分に表示されます。具体的な位置はウィンドウ幅によって変わります。

この領域に表示される内容は session の構成によって異なります。たとえば上の画像で使われている session には、画像追跡、高密度空間マッピング、高密度空間追跡の 3 つの機能コンポーネントが含まれているため、ツールにはこれら 3 つの機能の制御チェックボックスが表示されます。
一般に、この領域には session 内の利用可能なすべての AR 機能コンポーネントが表示され、それらの有効/無効(enabled)を制御できます。対象は次のとおりです。
- AR Session: session 自体の有効/無効を制御
- Image Renderer: 実カメラ画像の描画の有効/無効を制御
- Camera: 仮想カメラの有効/無効を制御
- Frame Source: frame source の有効/無効を制御。frame player が有効でない場合のみ制御可能で、frame player が有効なときは機能制御が EIF 再生制御に置き換わる
- Frame Filter: 個々の AR 機能の有効/無効を制御
- Frame Recorder: EIF 録画コンポーネントの有効/無効を制御。frame player が有効でない場合のみ表示され、frame player が有効なときはこのコンポーネントは session に組み込まれない
この領域には、session で利用可能な中心モードと session レポート も表示されます。
注記
ツールに表示される利用可能な中心モードと session レポートはエディタ上での実行結果であり、実機では異なります。
Mega 機能を使う場合、ツールには Mega 機能コンポーネント制御 が表示されます。
関連トピック
- EIF ファイルを使ってシミュレーション実行する を試して、スクリプトから EIF 再生を制御してみてください
- session 実行を制御する をスクリプトから試してみてください
- AR 機能コンポーネントにアクセスする をスクリプトから試してみてください
- session の実行結果を取得する をスクリプトから試してみてください
- 初期化する をスクリプトから試してみてください
- session レポートを取得してデバイス対応を判定する をスクリプトから試してみてください
- session 検証ツールの Mega 制御リファレンス
- session 検証ツールの Mega Go 制御リファレンス