Table of Contents

Session のフロー制御

Session の実行中、時には session コンポーネントを変更する必要があり、その場合には session を停止してから再起動する必要があります。また、session の特定の出力を停止する必要がある場合もあります。本稿では、session の実行フローを制御する方法について説明します。

開始する前に

Session の組み立て

通常、session の起動時に組み立てプロセスが自動的にトリガーされます。

以下のコードは暗黙的に組み立てプロセスを実行します。

Session.StartSession();

可用性とデバイスサポートの判断 を事前に行う必要がある場合など、Assemble() を使用して手動で session 組み立てプロセスをトリガーすることもできます。

StartCoroutine(Session.Assemble());
注記

Assemble() はコルーチンを返すため、StartCoroutine(IEnumerator) を使用して開始する必要があります。

Session の起動

AutoStart は session の自動起動を制御します。AutoStarttrue(デフォルト値)の場合、MonoBehaviour.Start() 時に session は自動的に起動します。

session を手動で起動することも可能で、そのためには事前に AutoStartfalse に変更する必要があります。その後、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 によって行われます。

次のステップ