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