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 またはヘッドセットを使用する場合は無効です。この場合、物理カメラ画像の描画は AR Foundation またはヘッドセット SDK によって行われます。
次のステップ
- AR 機能コンポーネントへのアクセス を試し、AR 機能の制御方法をさらに理解します
- session の実行結果を取得する 方法を理解します
- 可用性とデバイスサポートを確認する 方法を理解します