本日は MRTKv2 の調査枠です。
MRTKv2 の Guides ドキュメントを少しずつ読み進めていきます。
MRTKv2のGuidesドキュメント
以下のドキュメントを読み進めていきます。
microsoft.github.io
以下のページでは有志による本ドキュメントの日本語翻訳が行われています。
投稿時点でこちらで未翻訳、または著者が興味のある部分について記事にしていきます。
hololabinc.github.io
本記事では以下のページを読み進めます。
microsoft.github.io
MRTKでアイトラッキングを開始する
このページでは、UnityMRTK シーンを設定してアプリでアイトラッキングを使用する方法について説明します。
本セクションは、新しいシーンから始めることを前提としています
MRTK では既に構成されているMRTK視線追跡のサンプルシーンを確認することもできます。
アイトラッキング要件のチェックリスト
アイトラッキングが正しく機能するには、次の要件を満たす必要があります。
HoloLens 2とMRTKでのアイトラッキングの設定が初めての場合でも大丈夫です。
ここでは以下でそれぞれの4つの設定方法について、各セクションで詳しく説明します。
1.「Eye Gaze Data Provider」を入力システムに追加する必要があります。
これにより、プラットフォームからの視線追跡データが提供されます。
2.GazeProviderは、「Use Eye Tracking」プロパティをtrueに設定する必要があります。
trueがデフォルト値であることに注意してください。
(したがって、このプロパティを故意にオフにしない限り、特別なアクションは不要です)
3.アプリケーションマニフェストで「GazeInput」機能を有効にする必要があります。
現在、これはVisual StudioおよびMRTKビルドツールでのみ利用可能です。
4.HoloLensは装着中のユーザーの目で較正する必要があります。
ユーザーが目のキャリブレーションを行っているかどうかを検出するためのサンプルを確認してください。
重要
上記の要件のいずれかが満たされない場合、アプリケーションは自動的に頭部ベースの視線追跡にフォールバックします。
GazeInput機能に関するメモ
MRTKが提供するビルドツールは GazeInput 機能を自動的に有効にすることができます。
(ビルドツールは Tool パッケージをインポートして Mixed Reality Toolkit-> Utilities-> Build Window で開きます)
これを行うには[Appx Build Options]タブで[Gaze Input Capability]がオンになっていることを確認する必要があります。
このツールは Unity ビルドの完了後に AppX マニフェストを検出し、GazeInput機能を追加します。
Unity のビルドウィンドウ(File -> Build Settings...)を使用する場合、このツールはアクティブではないことに注意してください。
Unity のビルドウィンドウを使用する場合、Unityのビルド後に機能を手動で追加する必要があります。
アイトラッキングの設定手順
シーンのセットアップ
メニューバーから Mixed Reality Toolkit -> Add to Scene and Configure… を実行します。
MixedRealityToolkit がシーンにセットアップされます。
視線追跡に必要なMRTKプロファイルのセットアップ
MRT Kシーンを設定した後、MRTKのプロファイルを選択するよう求められます。
DefaultMixedRealityToolkitConfigurationProfile を選択し、[Copy & Customize]オプションを実行します。
「Clone Profile」メニューが表示されるので、メニュー下部の[Clone]をクリックします。
「視線データプロバイダー」を作成する
MRTK プロファイルの[Input]タブをクリックします。
デフォルトのプロファイル(DefaultMixedRealityInputSystemProfile)を編集するには[Clone]ボタンをクリックします。
「Clone Profile」メニューが表示されるので、メニュー下部の[Clone]をクリックします。
新しい[Input]プロファイルを開き、「+ Add Data Provider」を選択します。
新しいデータプロバイダーが作成されるので、設定を行います。
[Type]のプルダウンを開き、[WindowsMixedRealityEyeGazeDataProvider]を選択する。
[Platform]のプルダウンを開き、[Windows Universal]をチェックする。
GazeProviderでアイトラッキングを有効にする
HoloLens1では、主要なポインティングテクニックとして頭部追跡が使用されていました。
カメラに接続されている MRTK の GazeProvider を使用して頭部追跡が引き続き使用されています。
[UseEyeTracking]チェックボックスをオンにすることで、視線を使用するように変更できます。
開発者は GazeProvider の[UseEyeTracking]プロパティを変更することで、視線追跡と頭部追跡を切り替えることができます。
Unity Editorでアイトラッキングをシミュレートする
Unity Editor でアイトラッキング入力をシミュレートできます。
これにより、HoloLens 2 にアプリを展開する前にイベントが正しくトリガーされることを確認できます。
視線信号は、視線の原点としてカメラの位置を、視線の方向としてカメラの前方ベクトルを使用するだけでシミュレートされます。
これは初期のテストには最適ですが、急速な眼球運動は模倣できないことに注意してください。
このため、HoloLens 2 での眼球ベースの相互作用のテストを頻繁に実施することをお勧めします。
1.シミュレートされたアイトラッキングを有効にします。
1.MRTK構成プロファイルの[Input]タブを開きます。
2.[Input Data Providers] -> [Input Simulation Serivice]の項目を展開します。
3.DefaultMixedRealityInputSimulationProfile を[Clone]して変更を加えます。
4.[Simulate Eye Position]チェックボックスをオンにします
2.デフォルトの頭部注視カーソルを無効にする
一般的に、視線カーソルを表示しないようにすることをお奨めします。
デフォルトではプロファイルにアタッチされている頭部の注視カーソルを非表示にします。
1.MRTK構成プロファイルの[Input]タブを開き、[Pointers]の項目を展開します。
2.DefaultMixedRealityInputPointerProfile を[Clone]して変更を加えます。
3.[Pointer Settings]の[Gaze Cursor Prefab]に非表示カーソルプレハブを割り当てる必要があります。
4.MRTK Examples パッケージをインポートしている場合、付属の EyeGazeCursor.prefab を参照すれば良いです。
視線データへのアクセス
アイトラッキングを使用するようにシーンが設定されたので、スクリプトでアクセスする方法を見てみましょう。
以下のページで詳細な手順を確認できます。
microsoft.github.io
microsoft.github.io
HoloLens 2でUnityアプリをテストする
アイトラッキングを使用してアプリを構築する方法は、他のHoloLens 2 MRTKアプリをコンパイルする方法に似ています。
唯一の違いは「Player Settings -> Publishing Settings -> Capabilities」で Unity が「GazeInput」機能をサポートしていないことです。
HoloLens 2デバイスでアイトラッキングを使用するには、ビルドされたVisual Studioプロジェクトのパッケージマニフェストを手動で編集する必要があります。
以下の手順を実行します。
1.他のHoloLens 2 MRTKアプリで行うように Unity プロジェクトをビルドします。
2.コンパイル済みのVisual Studioプロジェクトを開き、ソリューションで「Package.appxmanifest」を開きます。
3.Capabilitiesの下の[視線入力(GazeInput)]チェックボックスにチェックを入れてください。
注意
新しいビルドフォルダーにビルドする場合にのみ、これを行う必要があります。
以前に Unity プロジェクトをビルドして appxmanifest をセットアップし、同じフォルダーを再度ターゲットにした場合、appxmanifest は変更されない必要があることを意味します。
[GazeInput]チェックが表示されない場合
システムが MRTK(特にWindows SDKバージョン)を使用するための前提条件を満たしていることを確認します。
microsoft.github.io
XMLエディターで appxmanifest を開いて直接コードを追加することにより、エントリを手動で追加することもできます。
<Capabilities> <DeviceCapability Name="gazeInput" /> </Capabilities>