ヘッドセットで EasyAR をサポートする
この記事では、EasyAR Sense Unity Plugin のヘッドセット拡張パッケージテンプレートを使って、ヘッドセットデバイスに対応した EasyAR 拡張パッケージを開発する方法を説明します。
始める前に
開発に入る前に、まず EasyAR Sense Unity Plugin の使い方を理解しておく必要があります。
- クイックスタート
- AR Session のサンプル、画像トラッキングのサンプル ImageTracking_Targets、密な空間マップのサンプル SpatialMap_Dense_BallGame を実行してください。スマートフォンとヘッドセットでの動作は似ています。
ヘッドセット向けプラグインの開発では基本機能を扱うため、次の内容も先に理解しておく必要があります。
- AR Session を理解する
- フレームソース と 外部フレームソース を理解する
さらに、Unity で package を開発する方法 にも慣れておく必要があります。
AR/MR 用にデバイスを準備する
モーショントラッキング/VIO システムを準備する
デバイスのトラッキング誤差が制御されていることを確認してください。Mega などの EasyAR 機能は、ある程度デバイスの累積誤差を抑えられますが、局所的な誤差が大きいと EasyAR のアルゴリズムも不安定になります。一般的には、VIO のドリフトを 1‰ 以内に収めることを想定しています。
表示システムを準備する
現実の物体と同じサイズと輪郭を持つ仮想物体を仮想世界に配置し、その仮想カメラとの相対変換関係が、現実世界での対応する実物とデバイスの変換関係と同じであるとき、仮想物体が実物にぴったり重なって表示され、デバイスを動かしたり頭を動かしたりしても表示効果が崩れないことを確認してください。Vision Pro のような表示を参考にできます。
デバイス SDK を準備する
外部入力フレームデータ を提供できる API がすでにあることを確認してください。これらのデータはシステム内のちょうど 2 つの時点から生成される必要があり、データが整列できない状況が起きないようにする必要があります。
ヘッドセット拡張パッケージテンプレートを使う
Unity の Package Manager window から、ローカル tarball ファイルを使ったインストール により EasyAR Sense Unity Plugin(package com.easyar.sense)を導入します。ヘッドセット拡張テンプレート(package 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 のカスタム package 作成ガイド を参考に新しい package を作成できます。
デバイス SDK が Unity の package として整理されていない場合は、ヘッドセット拡張テンプレートを Unity プロジェクトの Assets フォルダに解凍し、解凍したファイルから package.json と .asmdef 拡張子の付いたファイルを削除してください。この使用方法では、デバイス SDK と EasyAR を併用するユーザーは適切なバージョン依存を得られません。
実行時入力拡張を完成させる
デバイスの動きと画像データの入力拡張を作成する方法 に従って、Runtime/HMDTemplateFrameSource.cs を修正し、ヘッドセット向けの入力拡張を完成させます。これが拡張パッケージの最も重要な開発作業です。
エディタメニューを完成させる
MenuItems クラス内の "HMD Template" 文字列を、デバイス名を表すものに変更します。必要であれば、他のカスタムエディタ機能用のスクリプトも追加できます。
開発者が Hierarchy ビューで AR Session (EasyAR) を選択して右クリックすると、次のメニュー項目が表示されます。
EasyAR Sense>Extensions>Frame Source : [Device Name]:現在の session にそのデバイスの frame source を追加します。EasyAR Sense>Extensions>Frame Source : [Device Name (keep it only)]:現在の session にそのデバイスの frame source を追加し、1 つだけ保持します。

アプリケーションサンプルを完成させる
サンプルは Samples/Combination_BasedOn_HMD にあります。簡潔にするため、サンプルテンプレートにはコードがなく、AR 機能はすべてシーン内容と設定だけで完成できます。
デバイス上で動作するコンテンツをシーンに追加します。
ヒント
必要に応じて逆に進めても構いません。つまり、デバイス上で動作するシーンを用意し、そこに EasyAR コンポーネントやサンプルシーンの他のオブジェクトを追加します。
session の原点の下に置くよう設計されたオブジェクトを修正します。
シーンで session 原点が定義されている場合は、
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ボタンの挙動を設定します。UIの constraint source を仮想カメラに設定し、HUDボタンが期待どおりに動作するようにします。
Canvasの raycast 機能を設定します。UIノード配下のCanvasを修正し、raycast が動作してすべての UI ボタンとスイッチが期待どおりに動くようにします。テンプレートにはすでに
Canvasノードの下へ XR Interaction Toolkit の Tracked Device Graphic Raycaster が追加されています。対応する package をインポートすると確認できます。
デバイス上で実行する際に XR Interaction Toolkit を使わない場合、次のようなスクリプト不足の警告が表示されます。これを削除し、デバイスに必要な raycaster コンポーネントを追加できます。

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