Table of Contents

Unity のカメラと入力フレームデータのソース —— フレームデータソース(Frame Source)

フレームデータソースは、Unity におけるカメラおよび入力フレームデータの提供者です。このドキュメントでは、フレームデータソースの基本概念、タイプ、および実行時の選択方法について説明します。

開始する前に

フレームデータソースとは

フレームデータソース(FrameSource)は、入力フレーム(InputFrame)の提供者であり、カメラおよびその他の入力フレームデータを提供するデバイスや機能を抽象化します。

以下の図は、セッション内でのフレームデータソースの位置を示しています:

flowchart LR
  F[Frame Source]
  A((Input Frame))
  B[Session]
  C([Camera])
  O([Origin])
  T([Target])
  F --> A
  A --> B
  B -. transform .-> C
  B -. transform .-> O
  B -. transform .-> T

  style F fill:#6e6ce6,stroke:#333,color:#fff

フレームデータソースは、単にデータを下流のAR機能に提供するだけの場合もあれば、それ自体がモーション追跡などのAR機能を実装している場合もあります。一部のフレームデータソースは、カメラデバイスの制御インターフェースを提供し、ユーザーが解像度やフォーカスモードなどのカメラパラメータを選択できるようにします。

フレームデータソースのタイプ

フレームデータソースを提供するUnityパッケージによって、フレームデータソースは大きく2つのカテゴリに分けられます:

  • ビルトインフレームデータソース:EasyAR Sense Unityプラグインパッケージによって提供されるフレームデータソースで、通常、ほとんどの一般的な使用シナリオと一部のヘッドセットをサポートします。
  • 外部フレームデータソース:EasyAR Sense Unityプラグイン拡張パッケージによって提供されるフレームデータソースで、通常、特定のヘッドセットデバイスをサポートするために使用されます。多くの場合、外部フレームデータソースはヘッドセットメーカーまたはサードパーティの開発者によって提供されます。

外部フレームデータソースとは区別して、カスタムカメラ は必ずしも外部から提供されるとは限らず、ビルトインフレームデータソースにもカスタムカメラの一部が含まれています。

フレームデータソースは、異なる自由度のモーションデータを提供できます:0DoF、3DoF、5DoF、6DoFです。同じフレームデータソースでも、異なる動作状態では異なる自由度のモーションデータを提供する可能性があります。

以下の表は、EasyARによって提供されるフレームデータソースの一覧です:

名称 ビルトイン カスタムカメラ モーションデータ 説明
CameraDeviceFrameSource はい いいえ なし(0DoF) 通常のカメラ、フロントとリアカメラおよびPCをサポート
EditorCameraDeviceFrameSource はい いいえ なし(0DoF) 通常のカメラ、エディタでのデバッグ使用のみをサポート
FramePlayer はい いいえ ファイル再生によって決定 EIFファイルを再生し、シミュレーション実行を実現
ThreeDofCameraDeviceFrameSource はい いいえ 3DoF 3DoF追跡能力を提供
InertialCameraDeviceFrameSource はい いいえ 5DoF 慣性ナビゲーション能力を提供
MotionTrackerFrameSource はい いいえ 6DoF EasyARが実装したモーション追跡を提供
ARCoreFrameSource はい いいえ 6DoF ARCoreのモーション追跡を提供
ARKitFrameSource はい いいえ 6DoF ARKitのモーション追跡を提供
AREngineFrameSource はい はい 6DoF AR Engineのモーション追跡を提供
VisionOSARKitFrameSource はい はい 6DoF VisionOS ARKitのモーション追跡を提供 1
XREALFrameSource はい はい 6DoF XREALデバイスのモーション追跡を提供 1
ARCoreARFoundationFrameSource はい はい 6DoF ARFoundationに対応するARCoreのモーション追跡を提供
ARKitARFoundationFrameSource はい はい 6DoF ARFoundationに対応するARKitのモーション追跡を提供
PicoFrameSource いいえ はい 6DoF Picoデバイスのモーション追跡を提供 1
RokidFrameSource いいえ はい 6DoF Rokidデバイスのモーション追跡を提供 1

実行時のフレームデータソース選択

セッションのシーンレイヤー構造には、1つ以上のフレームデータソースコンポーネントが含まれています。セッション実行時には、すべてのフレームデータソースコンポーネントが使用されるわけではありません。

以下のスクリーンショットは、単一のフレームデータソースコンポーネントを持つシーンレイヤー構造を示しています:

alt text

以下のスクリーンショットは、複数のフレームデータソースコンポーネントを含むシーンレイヤー構造を示しています:

alt text

各フレームデータソースの機能は異なり、それによって適切な使用シナリオやデバイスも決まります。セッションのアセンブリ時、これらのコンポーネントから1つだけがセッションのフレームデータソースとして選択されます。

AssembleOptions.FrameSourceSelection プロパティは、セッション実行時のフレームデータソース選択方法を定義します:

名前 方法
Auto(デフォルト) 自動選択。transform順序で最初に利用可能かつアクティブな子ノードを選択します。
Manual 手動指定。セッションの子ノードのみを指定できます。
FramePlayer FramePlayer を使用します。
ヒント

Unityオブジェクトのtransform順序は、Transform.GetSiblingIndex() で確認するか、Hierarchyビュー内のオブジェクトの並び順で判断できます(ただし以下のオプションを無効にする必要があります。デフォルトでは無効です): Edit > Preferences > General > Enable Alphanumeric Sorting。

セッションのアセンブリプロセス中、フレームデータソースは以下の手順を経て選択されます:

  1. セッションは子ノードを走査し、transform順序で全てのアクティブなフレームデータソースコンポーネントを収集します。
  2. AssembleOptions 内のソース選択ポリシー(AssembleOptions.FrameSource)に基づき候補リストをフィルタリングします:
    • Auto(デフォルト):全ての候補を保持します。
    • Manual:手動で指定されたフレームデータソースのみを保持します。
    • FramePlayer:候補リストを FramePlayer に置き換えます。
  3. 候補リストを再度フィルタリングし、以下のコンポーネントを除外します:
    • コンポーネント自身によって無効化されているもの。
    • カスタムカメラが無効(AssembleOptions.EnableCustomCamera が false)の場合の全てのカスタムカメラコンポーネント。
  4. (Androidプラットフォーム)AssembleOptions.DeviceList のタイムアウト設定が0より大きく、かつ候補リストに MotionTrackerFrameSourceARCoreFrameSource、または AREngineFrameSource が含まれている場合、対応する最新のデバイスサポートリストのダウンロードを試みます。ダウンロード/更新後、これらのフレームデータソースの可用性が変化する可能性があります。ダウンロード完了またはタイムアウト後、次の手順に進みます。
  5. リスト順に残りの候補コンポーネントの可用性を確認します(FrameSource.CheckAvailability() を呼び出し、FrameSource.IsAvailable にアクセスします)。
  6. 確認結果が利用可能な最初のフレームデータソースを選択します。

コンポーネント自身の無効化条件はコンポーネント内部で定義されており、一般的には以下のような状況があります:

最終的にいずれのフレームデータソースも選択されなかった場合、セッションは Broken 状態になり、セッションレポート内の BrokenReason フィールドの値は NoAvailabileFrameSource になります。

注記

端末リストの更新が完了した後、端末リストが変更された場合、フレームデータソースの可用性も変化する可能性があります。この時のセッションの動作については、端末サポートとセッションレポート を参照してください。

次のステップ

関連トピック


  1. デバイスのサポート状況については、EasyARのヘッドセットサポート を参照してください。