Table of Contents

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

このドキュメントでは、EasyAR Unity ヘッドセット拡張パッケージの概念、能力範囲、およびヘッドセット拡張パッケージを作成するために必要な背景知識を紹介します。

始める前に

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

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

EasyAR Unity ヘッドセット拡張パッケージを使用することは、EasyAR のヘッドセットサポート方法の 1 つです。次の図は 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 package であり、ランタイムスクリプト、エディタースクリプト、拡張の sample を含みます。あなたまたは EasyAR は、それを下流ユーザーへ配布できます。
ヒント

接続の詳細を外部システムに公開したくない場合は、EasyAR に連絡して相談できます。EasyAR Sense 内部で C インターフェースを使って直接接続することは可能であり、前例もあります。

拡張を実装する際、次のような作業を行う可能性があります。

  • あなたの SDK のインターフェース設計と内部実装を変更する。
  • チームとともにデータ取得および使用方法を議論し確認する。
  • コードを書くよりも、データの正しさの検証に大量の時間を費やす。

拡張を完了すると、次のことが確認できます。

  • 大多数の EasyAR Sense 機能をデバイス上で使用できます。これらの機能はデバイスのモーショントラッキング能力を利用します。
  • EasyAR Sense 内でサポートされる EasyAR クラウドサービスをデバイス上で使用できます。
  • EasyAR XR license のみ使用できます。個人版、プロフェッショナル版、クラシック版の license はデバイス上では使用できません。
  • カスタムカメラ使用時のすべての EasyAR license 制限は、同じ方式でデバイスに適用されます。

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

この拡張は 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 開発
  • 一般的な Android debug スキル、たとえば adb(中国大陸国際

Unity 上で作業する場合は、以下も知っておく必要があります。

さらに、以下の分野の知識が少しでもあると、システム、特に正しいデータを EasyAR へ送信する方法をよりよく理解できます。

  • Android 開発(中国大陸国際
  • 幾何視覚、特に画像マッチングと 3D 再構築

次のステップ

以降の記事では、ヘッドセット拡張パッケージを作成する完全な流れを理解できます。

関連トピック