MRTK2 での視線追跡の概要
このページでは、アプリで視線追跡を使用するための Unity MRTK シーンの設定方法について取り上げます。 次のドキュメントでは、新しいシーンから開始することを前提としています。 必要であれば、既に構成されている MRTK 視線追跡の例もご覧いただけます。すぐに開発の足がかりにできる優れた例が多数用意されています。
視線追跡の要件のチェックリスト
視線追跡が正常に機能するには、次の要件が満たされる必要があります。 HoloLens 2 での視線追跡と、MRTK での視線追跡の設定方法に慣れていない場合も、心配無用です。 それぞれの対処方法については、次のセクションで詳しく説明します。
- "Eye Gaze Data Provider" が入力システムに追加されている必要があります。 このデータ プロバイダーは、プラットフォームからの視線追跡データを提供します。
- アプリケーション マニフェストで "GazeInput" 機能が有効になっている必要があります。 この機能は Unity 2019 で設定できますが、Unity 2018 以前では、この機能は Visual Studio と MRTK ビルド ツールでのみ使用できます。
- 現在のユーザーに対する HoloLens の視線調整が済んでいることが必要です。 ユーザーが視線調整されているかどうかを検出するサンプルを確認してください。
GazeInput 機能に関するメモ
MRTK で提供されるビルド ツール (Mixed Reality Toolkit - ユーティリティ ->> ビルド ウィンドウ) では、GazeInput 機能を自動的に有効にすることができます。 この手順を実行するには、[Appx ビルド オプション] タブで [視線入力機能] がオンになっていることを確認する必要があります。
このツールは Unity ビルドの完了後に AppX マニフェストを検出し、手動で GazeInput 機能を追加します。 Unity 2019 より前のバージョンでは、Unity の組み込みのビルド ウィンドウ (ファイル -> ビルド設定) を使用している場合、このツールはアクティブになりません。
Unity 2019 未満で Unity のビルド ウィンドウを使用しているときは、Unity ビルド後、次の手順に従ってこの機能を手動で追加する必要があります。
- コンパイル済みの Visual Studio プロジェクトを開き、ソリューションで "Package.appxmanifest" を開きます。
- [機能] の [GazeInput] チェック ボックスがオンになっていることを確認します。 "GazeInput" 機能が表示されない場合は、MRTK を使用するための前提条件 (特に Windows SDK のバージョン) を、お使いのシステムが満たしていることを確認してください。
メモ: これは、新しいビルド フォルダーにビルドする場合にのみ行う必要があります。 Unity プロジェクトを既にビルドして appxmanifest を設定し、同じフォルダーをもう一度ターゲットにした場合は、変更を再適用する必要はありません。
視線追跡の設定手順
シーンを設定する
メニュー バーの [Mixed Reality Toolkit -> Configure...] をクリックして、MixedRealityToolkit を設定します。
視線追跡に必要な MRTK のプロファイルを設定する
MRTK シーンを設定すると、MRTK のプロファイルを選択するように求められます。 DefaultMixedRealityToolkitConfigurationProfile を選択し、[Copy & Customize] オプションを選択できます。
"Eye Gaze Data Provider" を作成する
- MRTK プロファイルの [入力] タブをクリックします。
- 既定の ('DefaultMixedRealityInputSystemProfile' を編集するには、その横にある [複製 ] ボタンをクリックします。 [プロファイルの複製] メニューが表示されます。 そのメニューの下部にある [複製 ] をクリックします。
- 新しい入力プロファイルをダブルクリックし、[Input Data Providers](入力データ プロバイダー) を展開して、[+ Add Data Provider](+ データ プロバイダーの追加) を選択します。
- 正しいデータ プロバイダーを追加します。
- レガシ Windows Mixed Realityの場合
- [種類] で [Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input] ->[WindowsMixedRealityEyeGazeDataProvider] を選択します
- Windows XR プラグインの場合
- [種類]で [Microsoft.MixedReality.Toolkit.XRSDK.WindowsMixedReality] ->'WindowsMixedRealityEyeGazeDataProvider' を選択します
- OpenXR の場合
- [種類]で [Microsoft.MixedReality.Toolkit.XRSDK.OpenXR] ->'OpenXREyeGazeDataProvider' を選択します
- レガシ Windows Mixed Realityの場合
"視線追跡データの使用" を有効にする
- MRTK 構成プロファイル ->'Input' ->'Pointers' に移動します
- "DefaultMixedRealityInputPointerProfile" を複製して変更を加えます。
- 設定 で [視線追跡データを使用する] を 見つけて有効にします。
- [GazeInput 機能の設定] ボタンが表示される場合があり、それを押して UWP 機能を有効にする必要があります。
Unity エディターで視線追跡をシミュレートする
HoloLens 2 にアプリをデプロイする前に、Unity エディターで視線追跡入力をシミュレートしてイベントが正しくトリガーされることを確認できます。 視線視線入力信号は、カメラの位置を視線視線の原点として使用し、カメラの前方ベクトルを視線の視線入力方向として使用してシミュレートされます。 これは初期テストに最適ですが、迅速な目の動きには適した模倣ではないことに注意してください。 このためには、HoloLens 2に対する目ベースの相互作用を頻繁にテストすることをお勧めします。
視線追跡のシミュレーションを有効にする。
- MRTK 構成プロファイルの [入力] タブをクリックします。
- そこから [Input Data Providers](入力データ プロバイダー) -> [入力シミュレーション サービス] に移動します。
- 'DefaultMixedRealityInputSimulationProfile' を複製して、変更を加えます。
- 適切な [既定の視線入力シミュレーション モード] 設定を 選択します。
既定の頭の視線入力カーソルを無効にする: 一般に、目の視線入力カーソルを表示しないようにするか、絶対に必要な場合は 、非常 に微妙にすることをお勧めします。 既定では、MRTK 視線入力ポインター プロファイルにアタッチされている既定の頭の視線入力カーソルを非表示にすることをお勧めします。
- MRTK 構成プロファイル ->'Input' ->'Pointers' に移動します
- "DefaultMixedRealityInputPointerProfile" を複製して変更を加えます。
- [ポインターの設定] の上部で、非表示のカーソル プレハブを "視線入力カーソル プレハブ" に割り当てる必要があります。 これを行うには、MRTK Foundation から "EyeGazeCursor" プレハブを選択します。
Gaze Provider で目の動きに基づく視線入力を有効にする
HoloLens v1 では、頭の視線入力が主なポインティング手法として使用されました。 頭の視線入力は、カメラに接続されている MRTK の GazeProvider を介して引き続き使用できますが、入力ポインター プロファイルの視線入力設定で [IsEyeTrackingEnabled] チェックボックスをオンにすることで、代わりに視線入力を使用できます。
Note
目の動きに基づく視線入力と頭の動きに基づく視線入力は、開発者がコードの中で "GazeProvider" の "IsEyeTrackingEnabled" プロパティを変更することで切り替えることができます。
重要
視線追跡の要件が満たされていない場合、アプリケーションは自動的に頭の動きに基づく視線入力にフォールバックされます。
目の動きに基づく視線入力データにアクセスする
視線追跡を使用するようにシーンを設定したら、スクリプトの中でそれを利用する方法について見てみましょう。EyeGazeProvider を用いて視線追跡データにアクセスする方法と視線対応ターゲット選択に関するページを参照してください。
HoloLens 2 で Unity アプリをテストする
視線追跡機能を備えたアプリの作成は、他の HoloLens 2 MRTK アプリのコンパイル方法と似ています。 「GazeInput 機能に関するメモ」セクションで前述したように 、"視線入力"機能が有効になっていることを確認してください。
プロジェクトが HoloLens 2 用に構成されていることを確認する
「MRTK を使用して OpenXR プロジェクトを設定する」で説明されている構成手順を確認して、プロジェクトが正しく構成されていることを確認します。
考慮すべき重要なポイント:
- [プロジェクトの設定] ウィンドウでキー設定を確認します。
- プラグイン プロバイダーが正しく設定されていることを確認する
- 警告の三角形を解決します。
- 相互作用プロファイルを設定する必要がある
- OpenXR 機能グループを正しく選択する必要がある
視点の調整
HoloLens 2の目の調整を忘れないでください。 ユーザーが調整されていない場合、視線追跡システムは入力を返しません。 校正を行う最も簡単な方法は、バイザーを上に反転してから下に戻す方法です。 新しいユーザーとしてあなたを歓迎し、目の調整を行うように求めるシステム通知が表示されます。 または、システム設定 ([設定] > [システム] > [調整] > [視線の調整を実行] で視点の調整を行うこともできます。
視線追跡の許可
HoloLens 2でアプリを初めて起動すると、視線追跡を使用するアクセス許可をユーザーに求めるプロンプトが表示されます。 プロンプトが表示されない場合、通常は 'GazeInput' 機能が設定されていないことを示します。
アクセス許可プロンプトが 1 回表示された後は、自動的には再び表示されません。 "視線追跡を拒否" した場合は、[設定] -> [プライバシー] -> [アプリ] でこれをリセットできます。
これで視線追跡が MRTK Unity アプリで使用できるようになるはずです。 Microsoft の MRTK 視線追跡のチュートリアルとサンプルを忘れずにチェックしてください。視線追跡入力の使い方のデモが紹介されているほか、実際のプロジェクトの中で手軽に再利用できるスクリプトが用意されています。