Session のフロー制御
Session の実行中、時には session コンポーネントを変更する必要があり、その場合には session を停止してから再起動する必要があります。また、session の特定の出力を停止する必要がある場合もあります。本稿では、session の実行フローを制御する方法について説明します。
開始する前に
- ARSession の概要 を参照し、session の基本概念、構成、およびワークフローを理解してください
- session の作成 方法を理解してください
Session の組み立て
通常、session の起動時に組み立てプロセスが自動的にトリガーされます。
以下のコードは暗黙的に組み立てプロセスを実行します。
Session.StartSession();
可用性とデバイスサポートの判断 を事前に行う必要がある場合など、Assemble() を使用して手動で session 組み立てプロセスをトリガーすることもできます。
StartCoroutine(Session.Assemble());
注記
Assemble() はコルーチンを返すため、StartCoroutine(IEnumerator) を使用して開始する必要があります。
Session の起動
AutoStart は session の自動起動を制御します。AutoStart が true(デフォルト値)の場合、MonoBehaviour.Start() 時に session は自動的に起動します。
session を手動で起動することも可能で、そのためには事前に AutoStart を false に変更する必要があります。その後、StartSession() を使用して session を起動できます。
Session.StartSession();
Session の停止
StopSession(bool) を使用して session を停止できます。
Session.StopSession(keepLastFrame);
パラメータ keepLastFrame を使用して、session 停止後に最終フレームの物理カメラ画像を保持するかどうかを制御できます。これは異なる session を切り替える場合に便利で、画面のチラつきを回避できます。
注記
keepLastFrame は EasyAR による画面描画が行われる session のみ制御可能です。一般的に、AR Foundation またはヘッドマウントディスプレイを使用する場合、このパラメータは無効です。
Session 出力の停止
session 実行中、enabled を使用して session の出力を制御できます。
以下のコードは session のすべての出力を停止します。この状態では session は依然として実行中ですが、すべてのコンテンツ(EasyAR によって描画される物理カメラ画像や、EasyAR によって制御されるすべてのノードの transform など)が更新されません。
Session.enabled = false;
Session による物理カメラ画像の描画停止
ARAssembly.CameraImageRenderer を使用して物理カメラ画像の描画を制御できます。
以下のコードは物理カメラ画像の描画を停止します。
if (Session.Assembly != null && Session.Assembly.CameraImageRenderer.OnSome)
{
Session.Assembly.CameraImageRenderer.Value.enabled = false;
}
ここで注意すべきは、ARAssembly.CameraImageRenderer が存在するかどうかを最初に確認する必要がある点です。
注記
ARAssembly.CameraImageRenderer は EasyAR による画面描画が行われる session でのみ有効です。一般的に、AR Foundation またはヘッドマウントディスプレイ SDK を使用する場合は無効であり、物理カメラ画像の描画は AR Foundation またはヘッドマウントディスプレイ SDK によって行われます。
次のステップ
- AR 機能コンポーネントへのアクセス を試し、AR 機能の制御方法をさらに学びます
- session の実行結果の取得 方法を理解します
- 可用性とデバイスサポートの判断 方法を理解します