ヘッドセットを EasyAR 対応にする
この文書では、EasyAR Sense Unity Plugin のヘッドセット拡張パッケージテンプレートを使用して、ヘッドセットデバイスをサポートする EasyAR 拡張パッケージを開発する方法について説明します。
開始する前に
開発を始める前に、EasyAR Sense Unity Plugin の使用方法を理解する必要があります。
- クイックスタート
- AR Session サンプル、画像トラッキングサンプル ImageTracking_Targets、および高密度空間マップサンプル SpatialMap_Dense_BallGame を実行します。これらの実行結果は、スマートフォンとヘッドセットで類似しています。
ヘッドセットプラグイン開発にはいくつかの基本機能が関与するため、まず以下の内容を理解する必要があります:
- AR Session を理解する
- フレームデータソース と 外部フレームデータソース を理解する
さらに、Unity パッケージの開発方法 にも精通している必要があります。
AR/MR 向けにデバイスを準備する
モーショントラッキング/VIO システムを準備する
デバイストラッキングの誤差が制御されていることを確認します。EasyAR の Mega などの一部の機能は、デバイスの累積誤差をある程度軽減できますが、大きな局所誤差は EasyAR のアルゴリズムを不安定にします。一般的に、VIO ドリフトは 1‰ 以内であることが望まれます。
表示システムを準備する
現実世界の物体と同じサイズと輪郭の仮想物体が仮想世界に配置され、仮想カメラとの相対的な変換関係が現実世界の対応物体とデバイス間の変換関係と同じ場合、仮想物体が実物体に重ねて表示され、デバイスを動かしたり頭を回転させても表示効果が崩れないことを確認します。Vision Pro の効果を参考にできます。
デバイス SDK を準備する
外部入力フレームデータ を提供できる API がすでにあることを確認します。これらのデータはシステム内の2つの、かつ2つのみの時点で生成されるべきであり、データが同期できない状況が発生しないことを保証する必要があります。
ヘッドセット拡張パッケージテンプレートを使用する
Unity の Package Manager window を使用して ローカル tarball ファイルからプラグインをインストール し、EasyAR Sense Unity Plugin (パッケージ com.easyar.sense) をインポートします。ヘッドセット拡張テンプレート (パッケージ com.easyar.sense.ext.hmdtemplate) を Unity プロジェクトの Packages ディレクトリに解凍し、Samples~ フォルダの名前を Samples に変更します。
この時点で、次のようなディレクトリ構造が表示されるはずです:
.
├── Assets
└── Packages
└── com.easyar.sense.ext.hmdtemplate
├── CHANGELOG.md
├── Documentation~
├── Editor
├── LICENSE.md
├── package.json
├── Runtime
└── Samples
└── Combination_BasedOn_HMD
ヒント
必要に応じて、Unity が許可する任意の方法で EasyAR Sense Unity Plugin をインポートし、ヘッドセット拡張テンプレートを配置できます。
テンプレートを使用しない場合は、Unity カスタムパッケージ作成ガイド を参照して新しいパッケージを作成できます。
デバイス SDK が Unity パッケージを使用して整理されていない場合、ヘッドセット拡張テンプレートを Unity の Assets フォルダに解凍し、解凍したファイルから package.json および .asmdef 拡張子のファイルをすべて削除する必要があります。この使用方法では、デバイス SDK と EasyAR を同時に使用するユーザーは適切なバージョン依存関係を得られないことに注意してください。
ランタイム入力拡張を完成させる
画像とデバイスモーションデータ入力拡張の作成 方法に従い、Runtime/HMDTemplateFrameSource.cs を修正してヘッドセット用の入力拡張を完成させます。これが拡張パッケージの主な開発作業です。
エディタメニューを完成させる
MenuItems クラスの "HMD Template" 文字列をデバイス名を表すものに変更します。その他のカスタムエディタ機能が必要な場合は、他のスクリプトを追加することもできます。
開発者が Hierarchy ビューで AR Session (EasyAR) を選択して右クリックすると、以下のメニュー項目が表示されます:
EasyAR Sense>Extensions>Frame Source : [デバイス名]:現在のセッションにこのデバイスのフレームデータソースを追加します。EasyAR Sense>Extensions>Frame Source : [デバイス名 (keep it only)]:現在のセッションにこのデバイスのフレームデータソースを追加し、それのみを保持します。

アプリケーションサンプルを完成させる
サンプルは Samples/Combination_BasedOn_HMD にあります。シンプルにするため、サンプルテンプレートにはコードがなく、すべての AR 機能はシーンコンテンツと設定で完了します。
デバイス実行をサポートするコンテンツをシーンに追加します。
ヒント
必要に応じて、逆の方法も可能です。デバイスで実行できるシーンを使用し、EasyAR コンポーネントとサンプルシーンの他のオブジェクトをシーンに追加します。
セッション原点下に配置するように設計されたオブジェクトを修正します。
シーンにセッション原点が定義されている場合、
EasyARPandaとUIを原点ノードの下に移動します。
EasyARPandaはデバイスモーショントラッキング動作の参照を提供し、トラッキングが不安定な場合の原因判断に役立ちます。これらのオブジェクト名の括弧内のテキストは拡張開発者向けのヒントであり、削除できます:
(Move into Origin if there is any)(Move into Origin if there is any, set constraint source to your rendering camera)
HUDボタンの動作を設定します。HUDボタンが期待通りに動作するように、UIの制約ソースを仮想カメラに設定します。
Canvasのレイキャスト機能を設定します。UIノード下のCanvasを修正し、レイキャストが機能し、すべての UI ボタンとスイッチが期待通りに動作することを保証します。テンプレートでは、
Canvasノード下に事前に XR Interaction Toolkit の Tracked Device Graphic Raycaster が追加されています。対応するパッケージをインポートすると表示されます。
デバイス上で実行する際に XR Interaction Toolkit を使用しない場合、以下のようなスクリプト欠落の警告が表示されます。これを削除し、デバイスに必要なレイキャスタコンポーネントを追加できます。

次のステップ
- 拡張パッケージをさらに完成させる前に、まず入力拡張の 実行検証(bring-up) を行う必要があります
- すべて完了したら、拡張パッケージの リリース準備 ができます