次の方法で共有


視線追跡アクセスと調整の管理

HoloLens 2の視線追跡は、ユーザー操作を過充電するための強力な機能を提供します。 ただし、アプリで視線追跡を機能させるには、2 つのユーザー チェックポイントを正常に完了する必要があります。 2 つのチェックポイントは、(a) アプリの視線追跡アクセスを承認し、(b) デバイスで視線追跡の調整を完了することです。 システムでは、必要に応じてこれらを完了するように自動的に求められますが、ユーザーが誤って何かを辞退してスタックする可能性があります。 このドキュメントでは、視線追跡チェックポイントをナビゲートし、必要に応じユーザーの再試行を支援するためのベスト プラクティスについて説明します。これにより、アプリケーションでのスムーズで質の高いエクスペリエンスが確保されます。

アクセス要求

視線追跡を利用するには、アプリで最初にアクセスを要求する必要があります。 これは、目の視線入力開発ガイドに記載されている EyesPose::RequestAccessAsync の呼び出しによって行われます。 この関数は、システム チェックをトリガーして、視線入力アクセスがアプリケーションで使用できるかどうかを確認します。 インストール後の最初のアクセス要求では、ユーザーにアクセス許可ダイアログが表示されます。 "はい" をクリックすると、関数は GazeInputAccessStatus::Allowed を返し、エクスペリエンスに進むことができます。 ただし、ユーザーが "いいえ" を選択すると、関数は GazeInputAccessStatus::D eniedByUser を返します

[HoloLens 2 ET のアクセス許可] ダイアログの画像

アクセス要求ダイアログは、アプリケーションの最初の起動時に 1 回だけ表示されます。 ユーザーが選択を行うと、システムはユーザーの設定を記憶し、そのサインインしているユーザーに対して今後のすべてのアクセス要求に自動的に適用されます。 ユーザーが後でユーザー設定を変更する場合は、HoloLens 'Settings' アプリの [プライバシー] ページの [アプリのアクセス許可] セクションを使用して行うことができます。 ユーザー設定はスティッキーであるため、ユーザーは残念ながら視線追跡がオフの状態になり、修正方法がわからない可能性があります。 視線追跡がアプリ エクスペリエンスの重要な部分であり、視線追跡アクセスが拒否されたことを検出した場合は、設定アプリを正しいページに直接起動することでユーザーを支援できます。 これは、Launcher ::LaunchUriAsync を呼び出し、"ms-settings:privacy-eyetracker" という文字列で行います。

using namespace winrt::Windows::System::Launcher;
using namespace winrt::Windows::Foundation;

LaunchUriAsync(Uri(L"ms-settings:privacy-eyetracker"));

設定アプリを自動的に起動しないようにするか、ユーザーに繰り返しプロンプトを表示する必要があります。 代わりに、UI で関連する場所を見つけ、ET アクセスの現在の状態を伝え、アプリケーションの視線追跡の値を説明し、ユーザーが自分で起動するためのボタンを提供します。

アクセス要求の遅延

アクセス要求を誤って拒否する一般的な理由は、アプリが最初に起動したときに、ユーザーが複数のポップアップによってスパミングされることです。 ここでのベスト プラクティスは、視線追跡がアプリによって使用される最初の瞬間にのみ、アクセスを待機して要求することです。 たとえば、ET 最適化メニューが初めて表示されます。 その結果、ユーザーはより多くのコンテキストを持ち、選択を行いながら気を散らすのが少なくなり、後で変更する必要が生じる可能性が低くなります。

OpenXR に関する考慮事項

OpenXR を使用している場合は、同じルールが適用されますが、アクセス要求をトリガーする API は少し異なります。 視線追跡拡張機能 (XR_EXT_eye_gaze_interaction) が有効になっているインスタンスを使用すると、OpenXR アプリケーションは xrCreateSession の呼び出し後に自動的にアクセス許可を要求します。 OpenXR を使用して視線追跡を使用する方法の詳細については、OpenXR 仕様の 視線入力拡張機能に関するドキュメント を参照してください。

ユーザーの調整

アプリが視線追跡にアクセスできたら、次のチェックポイントはユーザーの調整です。 アクセス要求と同様に、呼び出されたときに調整 UI プロンプトをトリガーできる特定の API があります。 API は SpatialPointerPose::Eyes です。 これは、各フレームの視線入力姿勢データを取得するために使用されるのと同じ API であるため、実際には、視線追跡データにアクセスすると調整プロンプトがトリガーされます。 このため、アプリケーションは、この API を呼び出してプロンプトをトリガーする前に、実際に視線追跡ポーズ データを使用する予定になるまで待機する必要があります。

HoloLens 2 ET 調整プロンプトの画像

HoloLens は調整をキャッシュし、調整されたユーザーがデバイスを配置したことを検出すると自動的にスワップします。 そのため、このプロンプトは、デバイスで視線入力を調整していないユーザーに対してのみ表示されます。 調整されていないユーザーが調整を拒否するプロンプトで "キャンセル" を押した場合、デバイス上のアプリケーションでは視線入力を使用できません。 HoloLens は選択内容を記憶し、デバイスが削除されて元に戻されるまで、もう一度プロンプトを表示しません。 プライバシーを確保するために重要ですが、誤ってプロンプトを取り消したユーザーがアプリケーションで視線追跡を使用できない場合、混乱が生じる可能性があります。

現在のユーザーが調整されているかどうかをチェックするには、EyesPose::IsCalibrationValid を呼び出します。 現在のユーザーが調整されていない場合は、目の視線入力に依存しない操作にフォールバックするのが理想的です。 ただし、目の視線入力がエクスペリエンスに不可欠であり、すべてのユーザーが調整されていることを確認する必要がある場合は、 Launcher::LaunchUriForResultsAsync を使用して、"ms-hololenssetup://EyeTracking" という文字列を使用して手動で調整アプリを呼び出すことができます。

using namespace winrt::Windows::System::Launcher;
using namespace winrt::Windows::Foundation;

winrt::Windows::System::LauncherOptions options;
auto package = winrt::Windows::ApplicationModel::Package::Current();
options.TargetApplicationPackageFamilyName(L"Microsoft.HoloLensSetup_8wekyb3d8bbwe");
winrt::Windows::System::Launcher::LaunchUriForResultsAsync(winrt::Windows::Foundation::Uri(L"ms-hololenssetup://EyeTracking"), options);

LaunchUriForResultsAsync は、よく知られている LaunchUriAsync API の兄弟であり、調整アプリを起動するための方法として既に 提案 されています。 ただし、LaunchUriAsync メソッドでは、調整が完了した後にアプリケーションに戻る保証 はありません 。 ほとんどの場合、シェルに戻るだけです。 LaunchUriForResultsAsync API 、アプリケーションへのリターンを保証するため、ユーザーにとってはるかに優れたエクスペリエンスです。

LaunchUriForResultsAsync には、HoloLens セットアップ アプリケーションと一致するように 'TargetApplicationPackageFamilyName' プロパティが設定された追加の 'options' パラメーターが必要です。 HoloLens にインストールされているアプリケーションのパッケージ ファミリ名文字列が必要になった場合は、Windows デバイス ポータルの [PackageRelativeId] の [アプリ: インストール済みアプリ] セクションで確認できます。" を削除するだけです。文字列の末尾からの App" 文字。

Windows デバイス ポートのインストールされているアプリ ページの一部の画像

アプリでは、ユーザーの操作なしで、視線入力の調整を自動的に開始しないでください。 アクセス要求と同様に、調整の状態を表示し、アプリケーションの視線追跡の値を伝え、ユーザーが自分で調整を開始するためのボタンを提供できる、UI 内の関連する場所を見つけることをお勧めします。

OpenXR に関する考慮事項

OpenXR を使用している場合は、同じパターンが適用されますが、調整プロンプトをトリガーする API は少し異なります。 OpenXR では、視線入力アクションが有効になっている xrSyncActions の最初の呼び出しで、未調整のユーザーに対してプロンプトがトリガーされます。 OpenXR を使用して視線追跡を使用する方法の詳細については、OpenXR 仕様の 視線入力拡張機能に関するドキュメント を参照してください。