Table of Contents

Session のフロー制御

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

開始する前に

  • ARSession の概要 を参照し、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;

物理カメラ画像描画の停止

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 によって行われます。

次のステップ