Table of Contents

Class ARSession

名前空間
easyar
アセンブリ
EasyAR.Sense.dll

シーン内でARセッションを制御するMonoBehaviour。セッションはARAssemblyに組み立てられたコンポーネント群を含み、ライフサイクル全体のデータフローを制御します。このコンポーネントはARのエントリーポイントです。複数のアクティブインスタンスを同時に存在させることは許可されていません。

EasyARコンポーネントの全機能はStartSession()の後にのみ使用可能です。

Cameraと一部のARコンポーネント間の相対的なtransformはセッションによって制御され、そのうちの1つのオブジェクトはCenterObjectと呼ばれ、シーン内で移動せず、他のオブジェクトはこのCenterObjectに対して動きます。このオブジェクトはCenterModeの値に基づいて選択されます。詳細はARSession.ARCenterModeの説明を参照してください。

[DefaultExecutionOrder(-2147483648)]
[DisallowMultipleComponent]
[RequireComponent(typeof(EasyARController), typeof(DiagnosticsController))]
[RequireComponent(typeof(FrameRecorder), typeof(FramePlayer), typeof(CameraImageRenderer))]
public class ARSession : MonoBehaviour
継承
ARSession

フィールド

AutoStart

MonoBehaviour.Start時にセッションを自動起動します。falseに設定した場合、StartSession()を手動で呼び出してセッションを起動する必要があります。

[SerializeField]
[HideInInspector]
public bool AutoStart

CenterMode

ARセンターのモード。いつでも変更可能で即時反映されます。指定されたモードが利用できない場合、利用可能なモードに自動的に変更されます。

[SerializeField]
[HideInInspector]
public ARSession.ARCenterMode CenterMode

HorizontalFlip

水平ミラーリングレンダリングモード。いつでも変更可能で即時反映されます。イメージまたはオブジェクトトラッキング使用時のみ利用可能です。

[SerializeField]
[HideInInspector]
public ARSession.FlipOptions HorizontalFlip

プロパティ

AssembleOptions

セッションのアセンブリオプション。Assemble()(以前に呼び出されていない場合、StartSession()が暗黙的に呼び出す)の前に設定する必要があります。

public AssembleOptions AssembleOptions { get; }

Assembly

ARコンポーネントのアセンブリ。

public ARAssembly Assembly { get; }

AvailableCenterMode

現在のセッションで利用可能なセンターのモード。

public IReadOnlyList<ARSession.ARCenterMode> AvailableCenterMode { get; }

CenterObject

このセッションが現在のフレームで使用しているセンターオブジェクト。

このオブジェクトはUnity空間内で動かないオブジェクト、またはその親ノードを表します。OriginCamera、または特定の`target`である可能性があります。`Target`はTargetControllerまたはBlockRootControllerコンポーネントを含むオブジェクトです。疎空間マップとEasyAR Megaを使用する場合、実際のセンターGameObjectはrootノード下で位置特定されたmapまたはblockオブジェクトであり、CenterObjectはその親オブジェクトです。詳細はARSession.ARCenterModeの説明を参照してください。

public GameObject CenterObject { get; }

Diagnostics

セッション診断コンポーネント。

public DiagnosticsController Diagnostics { get; }

Origin

モーショントラッキング機能のいずれかが動作している際のセッション原点。

シーンから自動的に選択され、存在しない場合はEasyARまたはサードパーティのフレームソース拡張によって作成されます。組み込みフレームソースを使用する場合、Unity XRフレームワークのXROriginが存在する場合はそれが選択されます。AR Foundationパッケージが存在せず、デフォルトのツリー構造のXR Originが維持されている場合にのみ選択されます。

public GameObject Origin { get; }

Report

セッションレポート。アセンブリ完了後に利用可能になり、セッション状態が変更されると更新されます。セッションの破損の詳細やコンポーネントの可用性などの詳細を確認するために使用されます。

public SessionReport Report { get; }

SpecificTargetCenter

手動で指定されたセンターオブジェクト。CenterMode == SpecificTargetの場合、CenterObjectはこのオブジェクトに設定されます。いつでも変更可能で即時反映されます。

このオブジェクトはTargetControllerまたはBlockRootControllerコンポーネントを含んでいる必要があります。

public GameObject SpecificTargetCenter { get; set; }

State

現在のセッションの状態。

public ARSession.SessionState State { get; }

TrackingStatus

モーショントラッキング機能のいずれかが動作している際のモーショントラッキングの状態。

public Optional<MotionTrackingStatus> TrackingStatus { get; }

enabled

セッション実行中の出力を有効化/無効化します。無効状態では、セッションは出力せず、カメラ画像(EasyARによって制御されている場合)とすべてのセッションオブジェクトのtransformは更新されません。

public bool enabled { get; set; }

メソッド

Assemble()

AssembleOptionsを使用してセッションをアセンブルします。呼び出された場合、StartSession()の中で自動的に呼び出されます。

public IEnumerator Assemble()

ImageCoordinatesFromScreenCoordinates(Vector2)

スクリーン座標系([0, 1]^2)から画像座標系([0, 1]^2)への変換。pointInViewは[0, 1]^2に正規化されている必要があります。ヘッドマウントディスプレイでは利用できません。

public Optional<Vector2> ImageCoordinatesFromScreenCoordinates(Vector2 pointInView)

パラメーター

pointInView

StartSession()

セッションを起動します。AutoStartがtrueの場合、MonoBehaviour.Startで自動的に呼び出されます。

public void StartSession()

StopSession(bool)

起動中のセッションを停止します。すべてのtransform更新と画像レンダリング更新は停止します。停止時に最終フレームの画像を保持するオプションがありますが、これはEasyARが画像レンダリングを制御している場合にのみ有効です(AR Foundationやヘッドマウントディスプレイなどでは無効)。

public void StopSession(bool keepLastFrame)

パラメーター

keepLastFrame

イベント

AssembleUpdate

セッションのAssemble()更新イベント。1回のAssemble()(以前に呼び出されていない場合、StartSession()が暗黙的に呼び出す)でこのイベントは1~2回トリガーされます。最初はAssembleが完了した時です。Assemble完了時にデバイスリストの更新が完了している場合は2回目の呼び出しはありません。それ以外の場合は、デバイスリストの更新が完了した時に2回目の呼び出しが発生します。

public event Action<SessionReport.AvailabilityReport> AssembleUpdate

InputFrameUpdate

入力フレーム更新イベント。セッションが表示するInputFrameに変化があった場合のみトリガーされます。ヘッドマウントディスプレイではこのイベントは受信されず、透過画像が存在する場合、そのレンダリングはデバイスによって行われます。

public event Action<InputFrame> InputFrameUpdate

PostSessionUpdate

セッション更新完了イベント。このイベントの頻度はMonoBehaviour.Updateの頻度と同じです(ヘッドマウントディスプレイでは拡張機能の作者が正しく実装する必要があります)。このイベントがトリガーされる時点で、フレーム内のEasyARによって制御されるすべてのtransformの変更が完了しています。

public event Action PostSessionUpdate

StateChanged

セッションのStateが変更されたイベント。

public event Action<ARSession.SessionState> StateChanged