概要
視線追跡はUnity入力システムによってネイティブに処理されますが、MRTK3 は視線追跡を簡単に追加するための便利なヘルパーを提供します。
既定では、 MRTK XR Rig
プレハブには MRTK3 の視線入力コントローラーが既に存在します。
MRTK XR Rig
を使用していない場合に MRTK3 の視線入力コントローラーを使用する場合は、Unity シーンに MRTK Gaze Controller
プレハブを追加します。
MRTK の視線入力コントローラー プレハブには、Unity XR コントローラーと Interactor があり、Unityの視線入力と頭の視線入力にバインドされます。 コントローラーのアクションは、頭の視線入力よりも視線入力が優先されるように設定されます。 視線入力が無効になっている場合、構成されていない場合、または調整されていない場合、コントローラーは代わりに頭の視線入力ポーズを使用します。 MRTK3 の視線入力コントローラーのアクション バインドがどのように構成されているかの詳細については、含まれている MRTK の既定の入力アクションUnity資産に関するページを参照してください。
重要
OpenXR を使用するときに視線追跡を有効にする場合は、 目の視線入力操作プロファイル を OpenXR の対話プロファイル構成に追加する必要があります。 Unityでの OpenXR 設定の構成の詳細については、「MRTK を使用して新しい OpenXR プロジェクトを設定する」を参照してください。
また、ユニバーサル Windows プラットフォームを使用している場合は、必ず Project > Project Settings > Publishing Settings > Capabilities で GazeInput 機能を追加してください。
あいまいな視線入力の対話機能
MRTK3 の視線入力コントローラーは、ユーザーの視線入力方向に基づいて特定の円錐角度と距離範囲内のオブジェクトをターゲットにして操作するあいまいな視線入力操作手法を実装するUnity対話機能であるFuzzyGazeInteractor
を使用するように設定されています。 スコアリング システムは、相互作用の適合性に基づいて潜在的なターゲットに優先順位を付けるのに役立ちます。
このスクリプトでは、視線入力対話機能の動作を制御するいくつかのフィールドとプロパティを定義します。 重要なフィールドには、次のようなものがあります。
- coneAngle: 視線入力によるターゲットに対してオブジェクトが考慮される角度。
- minGazeDistance と maxGazeDistance: 視線入力によってオブジェクトをターゲットにできる最小距離と最大距離。 distanceWeight、angleWeight、distanceToCenterWeight、angleToCenterWeight: オブジェクトの "視線入力スコア" を決定するために使用されるさまざまな条件に割り当てられた重み。
- precision: あいまいな視線入力物理レイキャストの精度を調整するために使用される値。
- performAdditionalRaycast: スコアリング結果を向上させるために、視線視線入力に続く追加のレイキャストが実行されるかどうかを示すフラグ。
- precisionCurve: ターゲットまでの距離に基づいて精度レベルを制御するために使用されるアニメーション カーブ。
スクリプトは、独自の実装を提供するために、基底クラス XRRayInteractor
からいくつかのメソッドをオーバーライドします。 オーバーライドされる注目すべきメソッドは次のとおりです。
- IsHitValid: 操作可能なオブジェクトのヒットが、coneAngle、minGazeDistance、maxGazeDistance フィールドによって定義された角度と距離の条件に基づいて有効と見なされるかどうかを判断します。
- ScoreHit: 距離、レイキャストヒット角度、ターゲットの中心角度に基づいて、対話可能なレイキャストヒットとそれに関連付けられたレイキャストヒットをスコア付けします。 スコアは重み付け係数の組み合わせです。
- ConecastScoreCompare: レイキャスト ヒットをスコアで昇順で比較します。
- GetValidTargets: レイキャスト ヒットとそのスコアに基づいて、視線入力対話機能の有効なターゲットを取得します。
Interactor ドウェル マネージャー
MRTK3 の視線入力コントローラーも、 InteractorDwellManager
スクリプト コンポーネントを使用してセットアップされます。 このスクリプトは、Unityの XR Interaction Toolkit を使用して、対話可能なオブジェクトに対してドウェル ベースの選択を実装します。 ドウェル タイマーを管理し、選択をトリガーし、指定された対話機能の対話可能なドウェル状態を追跡します。 視線入力のドウェル選択を利用するには、対象となる対話可能な MRTK3 の StatefulInteractable
で、 Use Gaze Dwell
フラグが設定されている必要があります。
注:
ドウェルは予期しない UI 要素のアクティブ化につながる可能性があるため、手入力や音声入力が可能な場合は、ドウェル ベースの選択はお勧めしません。 アプリケーションでは、アクセシビリティのために、または音声と手の入力が使用できないシナリオで、ドウェル入力を検討することが必要な場合があります。 ドウェルを最適に使用する方法の設計ガイダンスについては、「目の視線入力とドウェル」と「頭の視線入力とドウェル」を参照してください。
ホバー状態になると、この対話機能はドウェル トリガー時間が経過する前に選択を続け、その後、対話可能な状態で選択がトリガーされます。 ドウェル設定は、次を使用して構成できます。
- DwellTriggerTime: ホバー状態に入った後に対話可能な操作を選択したままの対話機能の期間を指定します。