EasyAR Unityヘッドマウントディスプレイ拡張パッケージ
このドキュメントでは、EasyAR Unityヘッドマウントディスプレイ拡張パッケージの概念、能力の境界、およびその作成に必要な背景知識について説明します。
開始する前に
- EasyAR のヘッドセットサポート を読み、EasyAR がサポートするヘッドセットの種類とヘッドセット上で実行可能な EasyAR の機能について理解してください。
- Unity における EasyAR ヘッドセットサポート を読み、Unity での EasyAR ヘッドセットサポートの全体アーキテクチャについて理解してください。
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> Library "]
space
space
DeviceB["Device B<br> Library "]
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を実行および検証するには、あなたまたはあなたのチームが以下の分野の専門家である必要があります:
Unityで作業している場合、以下についても知っている必要があります:
- Unity開発の基礎とパッケージの使用
- Unityパッケージ開発
- IDisposable などを含むC#言語の基礎
さらに、以下の分野の知識があると、システム、特にEasyARに正しいデータを送信する方法をよりよく理解するのに役立ちます:
次のステップ
今後の記事では、ヘッドセット拡張パッケージを作成するための完全なプロセスについて説明します:
- ヘッドセットで EasyAR をサポートする では、テンプレートを使用して新しいヘッドセット拡張パッケージを作成し、基本的な入力拡張機能の開発を完了する方法を紹介します
- 実行検証(bring-up) では、デバイス上で入力拡張機能の正確性を検証する方法を紹介します
- 拡張パッケージの公開 では、ヘッドセット拡張パッケージをパッケージ化し、下流ユーザーに配布する方法を紹介します