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 またはヘッドセットを使用する場合は無効です。この場合、物理カメラ画像の描画は AR Foundation またはヘッドセット SDK によって行われます。

次のステップ