Table of Contents

EasyAR Unityヘッドマウントディスプレイ拡張パッケージ

このドキュメントでは、EasyAR Unityヘッドマウントディスプレイ拡張パッケージの概念、能力の境界、およびその作成に必要な背景知識について説明します。

開始する前に

EasyAR Unity ヘッドセット拡張パッケージとは

EasyAR Unity ヘッドセット拡張パッケージは、Unity package であり、一連のコードとサンプルを含み、ヘッドセットデバイス上で EasyAR Sense の機能を使用するのに役立ちます。この拡張パッケージを通じて、EasyAR Sense の大部分の機能(画像トラッキング、密な空間マップなど)をデバイスに統合し、EasyAR が提供する強力な AR 機能を活用できます。

EasyAR Unity ヘッドセット拡張パッケージの使用は、EasyAR のヘッドセットサポート方法の一つです。下図は、Unity における EasyAR の全体アーキテクチャと、その中でのヘッドセット拡張パッケージの位置を示しています。

block
  columns 4
  block:groupApp:4
    block:groupAppWrapper
      space
      App1["EasyAR + Device A<br>App"]
      space
      App2["EasyAR<br>App"]
      space
      App3["EasyAR + Device B<br>App"]
    end
  end
  
  block:groupSensePluginExtension
    columns 1
    SensePluginExtension["EasyAR Sense Unity Plugin<br>Extension for Device A"]
    space
  end
  block:groupSensePlugin
    columns 1
    SensePlugin["EasyAR Sense Unity Plugin"]
    space
  end
  block:groupXRI
    columns 1
    XRI["XR Interaction Toolkit"]
    space
  end
  block:groupARF
    columns 1
    ARF["AR Foundation"]
    space
  end
  
  block:groupDeviceAUnity
    columns 1
    DeviceAUnity["Device A<br>Unity SDK"]
    space
  end
  block:groupSense
    columns 1
    Sense["EasyAR Sense"]
    block:groupSenseWrapper
      MDeviceB["Device B<br>CameraDevice"]
      Others["..."]
    end
  end
  block:groupXRSubsystem:2
    columns 1
    XRSubsystem["XR Subsystems"]
    XRSDK["Unity XR SDK"]
  end

  block:groupSystem:4
    columns 1
    System["Native Library"]
    block:groupSystemWrapper
      space
      DeviceA["Device A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      space
      DeviceB["Device B<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
    end
  end
  
  SensePluginExtension --> App1
  SensePlugin --> App1
  SensePlugin --> App2
  SensePlugin --> App3
  ARF --> App3
  XRI --> App1
  XRI --> App3
  groupSense --> SensePlugin
  groupDeviceAUnity --> SensePluginExtension
  SensePlugin --> SensePluginExtension
  DeviceA --> groupDeviceAUnity
  DeviceA --> XRSDK
  XRSubsystem --> ARF
  XRSubsystem --> XRI
  DeviceB --> MDeviceB
  DeviceB --> XRSDK
  
  style groupApp fill:none,stroke:none,stroke-width:0px
  style groupAppWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePlugin fill:none,stroke:none,stroke-width:0px
  style groupARF fill:none,stroke:none,stroke-width:0px
  style groupXRI fill:none,stroke:none,stroke-width:0px
  style DeviceAUnity fill:none,stroke:none,stroke-width:0px
  style Sense fill:none,stroke:none,stroke-width:0px,color
  style groupSenseWrapper fill:none,stroke:none,stroke-width:0px
  style XRSubsystem fill:none,stroke:none,stroke-width:0px
  style System fill:none,stroke:none,stroke-width:0px
  style groupSystemWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePluginExtension fill:none,stroke:none,stroke-width:0px  

  classDef EasyAR fill:#6e6ce6,stroke:#333,color:#fff
  class SensePluginExtension EasyAR

図には、2つの典型的なヘッドセットサポート方法が示されています:Unity ヘッドセット拡張パッケージを介してデバイス SDK(Device A)と連携する方法と、EasyAR Sense ライブラリ内で直接デバイス SDK(Device B)と連携する方法です。本ドキュメントでは主に前者について説明します。

独自のヘッドセット拡張パッケージを作成できますか?

現時点では、AR/VR/MR/XR業界内で非常に統一されたインターフェースのソリューションは形成されていません。OpenXRは有力な候補ではありますが、仕様の進化と業界での実装にはまだ時間がかかります。したがって、一般的に市販のデバイスでEasyARを直接動作させるのは容易ではなく、データインターフェースが欠如している可能性が高いです。業界の発展に伴い、2024年にAppleがVision Proの関連インターフェースを公開するなど、一部の新興デバイスは良好なインターフェースサポートを備えている可能性があり、これらのインターフェースはEasyARの実行を支えるのに十分ですが、使用には専門知識が若干必要です。

判断が難しい場合は、ハードウェアメーカーまたはEasyARのビジネス窓口に連絡し、該当するデバイスサポートについて問い合わせることをお勧めします。

もしあなたがハードウェアメーカーであり、自社のデバイスでEasyARの機能をサポートしたい場合は、以下のドキュメントを参考にしてヘッドセット拡張パッケージを作成することで、EasyARの主要な機能を貴社のデバイス上で動作させることが可能です。本ドキュメントはデータとインターフェースの仕様を提供しますが、すべての実装詳細を規定するものではありません。いかなる実装方法やインターフェース定義についても議論が可能です。ビジネスチャネルを通じてのご連絡、ご相談をお待ちしております。

本ドキュメントが対象とするハードウェア自体は、モーション追跡またはSLAM機能を有している必要があります。EasyARの機能は、良好なデバイスの追跡能力の上で動作する必要があります。通常、EasyARの機能でデバイスの追跡を最適化することは推奨されません。これは循環依存を生み出し、理論的に誤差を増幅させ、システム全体が不安定になる傾向をもたらします。デバイス自体にモーション追跡能力がない場合、そのサポート方法は本ドキュメントの対象範囲外となります。必要に応じて、ビジネスチャネルを通じてご相談ください。

ヘッドセット拡張パックの能力の境界

ヘッドセット拡張パックの目標は、EasyAR Sense のほとんどの機能がお客様のデバイス上で実行できるようにすることです。この目標を達成するためには、ヘッドセット拡張パックの能力の境界を理解する必要があります。

ヘッドセット拡張パッケージに含まれるもの

実装する拡張機能は以下の通りです:

  • カスタムカメラ機能 を使用し、デバイスAPIからデータを取得して EasyAR Sense に送信するコード一式。
  • Unityでは、ヘッドセット拡張は 外部フレームデータソースEasyAR Sense Unity Plugin が定義する EasyAR Sense データフローを活用し、カスタムカメラ開発を簡素化します。
  • Unityでは、ヘッドセット拡張は Unityパッケージ であり、ランタイムスクリプト、エディタースクリプト、拡張サンプルを含みます。これらはあなたまたはEasyARが下流ユーザーに配布できます。
ヒント

外部システムへの実装詳細の公開を希望しない場合は、EasyARに相談可能です。EasyAR Sense内部でCインターフェースを直接使用した実装は可能であり、前例があります。

拡張機能の実装時には、以下の作業が発生する可能性があります:

  • 自社SDKのインターフェース設計と内部実装の変更。
  • データ取得・利用スキームについてチーム内での協議・確認。
  • コーディングではなく、データの正確性検証に多大な時間を費やすこと。

拡張機能完成後には、以下の状態が確認できます:

  • デバイスのモーショントラッキング能力を活用する EasyAR Sense 機能の大半がデバイス上で動作可能。
  • EasyAR Sense 内でサポートされるEasyARクラウドサービスがデバイス上で利用可能。
  • EasyAR XRライセンスのみ使用可能。パーソナル版、プロフェッショナル版、クラシック版ライセンスはデバイス上で使用不可。
  • カスタムカメラ使用時のEasyARライセンス制限が全て同様にデバイスに適用されます。

ヘッドセット拡張パッケージに含まれないもの

この拡張は EasyAR Sense なしでは動作しません:

  • このヘッドセット拡張は単独では動作せず、依存関係として EasyAR Sense も必要です。Unity では EasyAR Sense Unity Plugin を使用する必要があります。
  • EasyAR クラウドサービス API(例:EasyAR Mega ローカライゼーションサービス)を直接呼び出すことはありません。これらの呼び出しは EasyAR Sense 内部で行われます。
  • Unity では、画像トラッキングなどの AR 機能のインターフェースメソッドを直接呼び出すことはありません。それらは EasyAR Sense Unity Plugin 内部で行われます。
  • Unity では、シーン内のオブジェクトやトラッキングターゲットの transform を変更することはありません。それらは EasyAR Sense Unity Plugin 内部で行われます。

この拡張は、お使いのデバイス SDK なしでは動作しません:

  • Unity では、ヘッドセット拡張または EasyAR Sense Unity Plugin はシーン内のカメラの transform を変更しません。これはお使いのデバイス SDK またはその依存パス内で行われる必要があります。

ヘッドセット拡張を通しても、一部の EasyAR 機能は使用できません:

  • サーフェストラッキング機能は使用できません。
  • EasyAR 自身のモーショントラッキングは使用できません。
  • 平面検出(EasyAR モーショントラッキングの一部)は使用できません。

如何在我的デバイスで mega を使用する?

デバイス上で mega を実行することは、多くのユーザーが関心を持つ問題です。Unity では、mega サービスは EasyAR Sense の多くの基本機能の上で動作する機能モジュールです。したがって、デバイスが EasyAR Sense を完全にサポートしていれば、mega もサポートされます。

一般的に、最初からデバイス上で直接 mega のサンプルを実行して、デバイスが mega をサポートしているかどうかを検証することはお勧めしません。なぜなら、mega はすべての入力データを総合的に利用し、これらのデータの誤差に対する許容度が比較的大きいためです。直接 mega サンプルを実行すると、データインターフェースの不一致やデータ品質の低さが原因で、合理的な実行結果が得られない可能性があり、問題がどこにあるのか判断できず、後のデバッグを困難にする可能性があります。

重要

mega サービスは、デバイスのモーション追跡能力に一定の要件があります。デバイスのモーション追跡能力が低い場合、mega のパフォーマンスも影響を受けます。大規模な AR シナリオでは、特に屋内と屋外でのパフォーマンスの違いに注意する必要があります。

重要

mega は一般的に大規模空間シナリオにサービスを提供するため、遠距離の物体や、頭を回転させたり移動したりしたときの物体の 表示 効果に特に注意を払う必要があります。デバイスの表示システムの誤差が大きい場合、mega 自体が正常に動作していても、ユーザーは仮想物体が現実の物体に正しくフィットしていないと感じる可能性があります。

必要な背景知識とチーム構成

ヘッドマウントディスプレイ拡張パックの作成は単純なタスクではなく、あなたとあなたのチームが複数の領域で深く取り組む必要があります。一般的に、ヘッドマウントディスプレイ拡張を完了するには、Unity開発の関与と同時に、Unity開発以外のチームメンバーの投入が必要です。標準が不足しているため、3Dエンジン上でのみの修正では通常ヘッドマウント拡張を完了できず、初日からシステムエンジニアやSDKエンジニアなどの低レイヤー開発エンジニアを参加させることをお勧めします。

AR/VRデバイスの構築にはいくつかの分野の知識が必要です。同様に、デバイス上でEasyAR Senseを実行および検証するには、あなたまたはあなたのチームが以下の分野の専門家である必要があります:

  • あなたのデバイスの物理構造とレンダリングシステム
  • カメラシステムの幾何学
  • SDK開発
  • adbなどの一般的なAndroidデバッグスキル(中国本土国際

Unityで作業している場合、以下についても知っている必要があります:

さらに、以下の分野の知識があると、システム、特にEasyARに正しいデータを送信する方法をよりよく理解するのに役立ちます:

  • Android開発(中国本土国際
  • 幾何学コンピュータビジョン、特に画像マッチングと3D再構築

次のステップ

今後の記事では、ヘッドセット拡張パッケージを作成するための完全なプロセスについて説明します:

関連トピック