フレームデータソースのグループを追加する
1 つの AR Session には複数のフレームデータソースコンポーネントを含めることができ、これを frame source group と呼びます。runtime では、session は現在のデバイスと有効な AR 機能に基づいて、frame source group から最も適切なフレームデータソースを選択して使用します。この記事では、frame source group の使用と管理方法を紹介します。
開始する前に
- frame source の基本概念、種類、および runtime での選択方法を理解します。
preset AR Session の frame source group を使用する
デフォルト設定で作成された session にはフレームデータソースのグループが付属しており、単一の AR 機能を使用する場合は通常これで十分です。
preset session によって含まれるフレームデータソースは異なります。
ARSessionFactory.ARSessionPreset.ImageTracking preset または
AR Session (Image Tracking Preset)メニューで作成された session には、単一のフレームデータソースだけがあります:
ARSessionFactory.ARSessionPreset.MegaBlock_MotionTracking_Inertial preset または
AR Session (Mega Block Default Preset)メニューで作成された session の scene hierarchy には、複数のフレームデータソースコンポーネントが含まれます:
scene 内で最初にある preset を使用して session を作成した場合、反復中に他の機能を追加するときは、対応する frame filter コンポーネントを追加するだけでなく、必要に応じて適切なフレームデータソースコンポーネントも追加する必要があります。
重要
バージョン 4.7 以前からアップグレードした後、preset の frame source group を使用するには、session 全体を削除してから、メニューまたは ARSessionFactory で session を再作成する必要があります。
以下に、すべてのプリセット AR 機能でデフォルト設定されるフレームデータソースコンポーネントを示します。リスト内の順序は、シーン内のフレームデータソースのコンポーネント順序と同じです。
| プリセット | フレームデータソースグループ |
|---|---|
注記
preset で作成されるコンポーネントの順序により、built-in frame source がサポートするすべてのデバイスで最適なフレームデータソースが使用されます。
デフォルトの frame source 設定を使用する
デフォルトパラメータを使用する場合、frame source の設定はデバイスと runtime で有効な AR 機能に基づいて自動的に調整されます。
frame source のパラメータを手動で変更したことがある場合、session 内の AR 機能が変化したとき(例えば、もともと image tracking だけを含む session に motion tracking 機能を追加した場合)、新しい機能要件に合わせるために frame source のパラメータを手動で調整する必要がある場合があります。これにより、すべての AR 機能が最適な効果で動作できます。
重要
バージョン 4.7 以前からアップグレードした後、正しいデフォルトパラメータを使用するには、session 全体を削除してから、メニューまたは ARSessionFactory で session を再作成する必要があります。
frame source group を追加する
Hierarchy ビューで AR Session (EasyAR) を選択して右クリックし、メニュー EasyAR Sense > [ AR Feature ] > Frame Source : * から、その機能に適した frame source コンポーネントを追加できます。また、メニュー EasyAR Sense > Frame Source by Transform Type > * Dof > Frame Source : * から、必要な frame source コンポーネントを追加することもできます。
script では、ARSessionFactory.AddFrameSource<Source>(GameObject, bool) を使用して frame source コンポーネントを追加できます。
例えば、メニュー EasyAR Sense > Frame Source by Transform Type > 3 Dof Rot-Only > Frame Source : Three Dof Camera Device から、現在選択している session に ThreeDofCameraDeviceFrameSource を追加できます。

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

対応する script code は次のとおりです:
ARSessionFactory.SortFrameSource(session, new ARSessionFactory.FrameSourceSortMethod { MotionTracker = ARSessionFactory.FrameSourceSortMethod.MotionTrackerSortMethod.PreferEasyAR });
上記の並べ替え後、scene hierarchy は次のようになります:

関連トピック
- ヘッドセット用の frame source を追加および設定する方法を理解する
- runtime で 使用中の frame source を取得することを試す
