MRが楽しい

MRやVRについて学習したことを書き残す

手のひらの横にオブジェクトを表示させるMRTKのHandConstraintPalmUpで誤認識を減らす

本日は MRTK の小ネタ枠です。
手のひらの横にオブジェクトを表示させる MRTK の HandConstraintPalmUp で誤認識を減らす方法を記事にします。

ハンドメニューの誤検出を減らす

MRTK の HandConstraintPalmUp には誤検出を減らすため、以下の2つの判定が用意されています。

  • 手のひらを開いているか
  • 手に視線を向けているか

docs.microsoft.com

サンプルシーン

以下の通り、HandConstraintPalmUp コンポーネントを使って手のひらを検出するとその位置にボタンUIを表示するシーンを作成しました。
f:id:bluebirdofoz:20211105214240j:plain

手のひらを開いているか

HandConstraintPalmUp コンポーネントの[RequireFlatHand]にチェックを入れることで判定が有効になります。
f:id:bluebirdofoz:20211105214251j:plain

本判定を有効にしていると手のひらを開いたときのみ、手のひらの検出が行われます。
f:id:bluebirdofoz:20211105214301j:plain
f:id:bluebirdofoz:20211105214310j:plain

手に視線を向けているか

HandConstraintPalmUp コンポーネントの[UseGazeActivation]にチェックを入れることで判定が有効になります。
f:id:bluebirdofoz:20211105214318j:plain

本判定を有効にしていると手首に視線を向けているときのみ、手のひらの検出が行われます。
手首へ視線が向いているかどうかは手首の Windows マークがアニメーションしていることで分かります。
f:id:bluebirdofoz:20211105214328j:plain
f:id:bluebirdofoz:20211105214336j:plain

なお、視線の検出には[GazeInput]の Capabilities 設定が必要です。
f:id:bluebirdofoz:20211105214348j:plain

[GazeInput]を許可していない場合は、頭部の方向が視線として扱われます。
この場合は概ね HoloLens2 のホログラムの視野内に手のひらがあるときに視線が向けられていると判定されるようです。