Table of Contents

一組のフレームデータソースを追加する

ARセッションは複数のフレームデータソースコンポーネントを含むことができ、これらをフレームデータソースグループ(frame source group)と呼びます。実行時、セッションは現在のデバイスと有効なAR機能に基づいて、フレームデータソースグループから最適なフレームデータソースを選択して使用します。このドキュメントでは、フレームデータソースグループの使用方法と管理について説明します。

開始する前に

プリセットARセッションのフレームデータソースグループを使用する

デフォルト設定で作成されたセッションには、あらかじめフレームデータソースグループが含まれており、単一のAR機能を使用する場合には一般的に十分です。

異なるプリセットセッションに含まれるフレームデータソースは異なります。

ARSessionFactory.ARSessionPreset.ImageTrackingプリセットまたはAR Session (Image Tracking Preset)メニューで作成されたセッションには、単一のフレームデータソースのみが含まれます:

alt text

ARSessionFactory.ARSessionPreset.MegaBlock_MotionTracking_InertialプリセットまたはAR Session (Mega Block Default Preset)メニューで作成されたセッションには、複数のフレームデータソースコンポーネントを含むシーンレベルの構造が含まれます:

alt text

シーンで最初にプリセットを使用してセッションを作成した場合、他の機能を追加する際には、対応するframe filterコンポーネントを追加するだけでなく、必要に応じて適切なフレームデータソースコンポーネントを追加する必要があります。

重要

4.7以前のバージョンからアップグレードした場合、プリセットのフレームデータソースグループを使用するには、セッション全体を削除し、メニューまたはARSessionFactoryを介してセッションを再作成する必要があります。

以下に、すべてのプリセットAR機能デフォルト設定のフレームデータソースコンポーネントを列挙します。リスト内の順序はシーン内のフレームデータソースコンポーネントの順序と同一です:

プリセット フレームデータソースコンポーネント
  1. CameraDeviceFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  9. EditorCameraDeviceFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  9. InertialCameraDeviceFrameSource
  10. EditorCameraDeviceFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  9. InertialCameraDeviceFrameSource
  10. ThreeDofCameraDeviceFrameSource
  11. EditorCameraDeviceFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  9. InertialCameraDeviceFrameSource
  10. ThreeDofCameraDeviceFrameSource
  11. CameraDeviceFrameSource
  1. XREALFrameSource
  2. AREngineFrameSource
  3. ARCoreFrameSource
  4. ARCoreARFoundationFrameSource
  5. ARKitFrameSource
  6. ARKitARFoundationFrameSource
  7. VisionOSARKitFrameSource
  8. MotionTrackerFrameSource
  9. CameraDeviceFrameSource
注記

プリセットで作成されたコンポーネントの順序は、すべての組み込みフレームデータソースがサポートするデバイスで最適なフレームデータソースが使用されることを保証します。

デフォルトのフレームデータソース設定を使用する

デフォルトパラメータを使用する場合、フレームデータソースの設定はデバイスと実行時に有効な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を追加できます。

alt text

対応するスクリプトコードは次のとおりです:

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を使用すると、MotionTrackerFrameSourceARCoreFrameSourceARCoreARFoundationFrameSourceARKitFrameSourceARKitARFoundationFrameSource、およびAREngineFrameSourceの前に配置できます。

alt text

対応するスクリプトコードは次のとおりです:

ARSessionFactory.SortFrameSource(session, new ARSessionFactory.FrameSourceSortMethod { MotionTracker = ARSessionFactory.FrameSourceSortMethod.MotionTrackerSortMethod.PreferEasyAR });

上記のソート後、シーン階層構造は次のようになります:

alt text

関連トピック