一組のフレームデータソースを追加する
ARセッションは複数のフレームデータソースコンポーネントを含むことができ、これらをフレームデータソースグループ(frame source group)と呼びます。実行時、セッションは現在のデバイスと有効なAR機能に基づいて、フレームデータソースグループから最適なフレームデータソースを選択して使用します。このドキュメントでは、フレームデータソースグループの使用方法と管理について説明します。
開始する前に
- フレームデータソースの基本概念、タイプ、および実行時の選択方法を理解してください。
プリセットARセッションのフレームデータソースグループを使用する
デフォルト設定で作成されたセッションには、あらかじめフレームデータソースグループが含まれており、単一のAR機能を使用する場合には一般的に十分です。
異なるプリセットセッションに含まれるフレームデータソースは異なります。
ARSessionFactory.ARSessionPreset.ImageTrackingプリセットまたは
AR Session (Image Tracking Preset)メニューで作成されたセッションには、単一のフレームデータソースのみが含まれます:
ARSessionFactory.ARSessionPreset.MegaBlock_MotionTracking_Inertialプリセットまたは
AR Session (Mega Block Default Preset)メニューで作成されたセッションには、複数のフレームデータソースコンポーネントを含むシーンレベルの構造が含まれます:
シーンで最初にプリセットを使用してセッションを作成した場合、他の機能を追加する際には、対応するframe filterコンポーネントを追加するだけでなく、必要に応じて適切なフレームデータソースコンポーネントを追加する必要があります。
重要
4.7以前のバージョンからアップグレードした場合、プリセットのフレームデータソースグループを使用するには、セッション全体を削除し、メニューまたはARSessionFactoryを介してセッションを再作成する必要があります。
以下に、すべてのプリセットAR機能デフォルト設定のフレームデータソースコンポーネントを列挙します。リスト内の順序はシーン内のフレームデータソースコンポーネントの順序と同一です:
| プリセット | フレームデータソースコンポーネント |
|---|---|
注記
プリセットで作成されたコンポーネントの順序は、すべての組み込みフレームデータソースがサポートするデバイスで最適なフレームデータソースが使用されることを保証します。
デフォルトのフレームデータソース設定を使用する
デフォルトパラメータを使用する場合、フレームデータソースの設定はデバイスと実行時に有効なAR機能に基づいて自動的に調整されます。
フレームデータソースのパラメータを手動で変更した場合、セッション内のAR機能が変化すると(例えば、画像追跡のみを含むセッションにモーショントラッキング機能を新たに追加した場合)、新しい機能要件に適応するためにフレームデータソースのパラメータを手動で調整する必要があり、すべてのAR機能が最適に動作するようになります。
重要
4.7以前のバージョンからアップグレードした場合、正しいデフォルトパラメータを使用するには、セッション全体を削除し、メニューまたはARSessionFactoryを介してセッションを再作成する必要があります。
フレームデータソースグループを追加する
Hierarchyビューで、AR Session (EasyAR) を選択し右クリックし、メニューEasyAR Sense > [ AR機能 ] > Frame Source : *を介して、その機能に適したframe sourceコンポーネントを追加できます。また、メニューEasyAR Sense > Frame Source by Transform Type > * Dof > Frame Source : *を介して必要なframe sourceコンポーネントを追加することもできます。
スクリプトでは、ARSessionFactory.AddFrameSource<Source>(GameObject, bool)を使用してframe sourceコンポーネントを追加できます。
例えば、メニューEasyAR Sense > Frame Source by Transform Type > 3 Dof Rot-Only > Frame Source : Three Dof Camera Deviceを使用すると、現在選択されているセッションにThreeDofCameraDeviceFrameSourceを追加できます。

対応するスクリプトコードは次のとおりです:
ARSessionFactory.AddFrameSource<ThreeDofCameraDeviceFrameSource>(session);
フレームデータソースのソート
セッションのアセンブル中、フレームデータソースグループから最終的に1つのフレームデータソースが選択されセッションに組み込まれます。選択ルールはAssembleOptions.FrameSourceSelectionプロパティの値によって決まります。デフォルト設定では、フレームデータソースグループ内の各コンポーネントの順序を調整することで、最終的に選択されるフレームデータソースに影響を与えることができます。
一般的には、Hierarchyビューでシーン内のオブジェクトをソートする方法を使用して、frame sourceオブジェクトを直接移動してソートできます。
スクリプトでは、Transform.SetSiblingIndex(int)を使用してオブジェクトの順序を調整できます。
例えば、MotionTrackerFrameSourceを他のフレームデータソースの前に配置するには、HierarchyビューでMotion Trackerオブジェクトを選択し、最上位にドラッグします。
同じ効果は、次のスクリプトコードでも実現できます:
motionTrackerFrameSource.transform.SetSiblingIndex(0);
さらに、いくつかの事前定義されたソート方法を使用できます。Hierarchyビューで、AR Session (EasyAR) を選択し右クリックし、メニューEasyAR Sense > Utility > Sort Frame Source : * > *を介して特定のフレームデータソースコンポーネントをソートできます。
スクリプトでは、ARSessionFactory.SortFrameSource(GameObject, ARSessionFactory.FrameSourceSortMethod)を使用して同じ効果を実現できます。
例えば、メニューEasyAR Sense > Utility > Sort Frame Source : Motion Tracker > System SLAMを使用すると、MotionTrackerFrameSourceをARCoreFrameSource、ARCoreARFoundationFrameSource、ARKitFrameSource、ARKitARFoundationFrameSource、およびAREngineFrameSourceの前に配置できます。

対応するスクリプトコードは次のとおりです:
ARSessionFactory.SortFrameSource(session, new ARSessionFactory.FrameSourceSortMethod { MotionTracker = ARSessionFactory.FrameSourceSortMethod.MotionTrackerSortMethod.PreferEasyAR });
上記のソート後、シーン階層構造は次のようになります:

関連トピック
- ヘッドセット用のフレームデータソースを追加および設定する方法を学ぶ
- 実行時に使用中のフレームデータソースを取得する方法を試す
