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空間内で移動しないオブジェクトまたはその親ノードを表します。Origin、Camera、または特定の`target`である可能性があります。`Target`はTargetControllerまたはBlockRootControllerコンポーネントを含むオブジェクトです。疎な空間マップとEasyAR Megaを使用する場合、実際のセンターGameObjectはrootノード下で特定されたmapまたはblockオブジェクトであり、CenterObjectはその親オブジェクトです。詳細はARSession.ARCenterModeの説明を参照してください。
public GameObject CenterObject { get; }
Diagnostics
セッション診断コンポーネント。
public DiagnosticsController Diagnostics { get; }
Origin
モーショントラッキング機能が動作している際のセッション原点。
シーンから自動的に選択され、存在しない場合はEasyARまたはサードパーティのframe source拡張によって作成されます。組み込みframe source使用時、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; }
メソッド
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