本日はMRTK枠です。
先日MRTKで提供されているHandMenuに関するドキュメントを読んで切る際にとても興味深いドキュメントが追加されていることに気が付きました。
今回はこちらのドキュメントを読みながら筆者自身の経験をもとにUXに関してまとめていきます。
〇HandMenuとは?
HandMenuはMRTKで提供されているUIコンポーネントの一つです。
HandTrackingで検知した手に沿ってUIを表示することでアプリ内でユーザーがどのような環境であってもUIを使用することができるため、非常に多用されるUIコンポーネントです。
〇HandMenuのデメリット
HandMenuはユーザーの手が基準のためいつでも使用できます。しかし、これにはいくつかの欠点があります。
例として、オブジェクトを近距離で操作する場合は何らかの拍子にHandMenuが表示される場合、没入感と操作性を失い体験の質を落としてしまいます。
〇HandMeueでの誤ったアクティベーションを防止する方法
〇距離に応じてHandMenuを切り替える。
上記の例の場合近距離で触るオブジェクトとの距離に応じてHandMenuが表示されないようにすることで体験の質を担保することができます。
Microsoftより提供されているMRDL(MixedRealityDesigneLab)のSurfaceアプリではこの仕組みが実装されています。
Surfaceアプリではアニメーションと音を使用してHandTrackingに疑似的に触覚を与えるサンプルプロジェクトです。
HandMenuでオブジェクトの切り替えを行いますが、再度切り替えるためにはオブジェクトから離れてHandMenuを表示させる必要があります。
〇フラットな手のひらを要求する
HandMenuを使用する際は指を伸ばして手をパーにしている時のみに制限するという方法です。
こちらも一定の誤動作を防止できます。
この実装はHandMenuのコンポーネントである[HandConstraintPalmUp]コンポーネントの[Require Flat Hand]にチェックを入れ有効化することで行えます。
〇視線を要求する
HandMenuを使用する際にEyeTrackingによる視線も合わせて要求する仕組みです。
https://www.microsoft.com/ja-jp/videoplayer/embed/RE4Asn4?postJsllMsg=true&autoCaptions=ja-jp
こちらのデメリットとしては使用するためには必ずEyeTrackingの設定を行っている等の準備が必要です。
〇HandMenuの位置
HandMenuはデフォルトで下の画像の位置に表示することができます。
また、これらはあくまで検知のみを行っているため子オブジェクトなどに設定することで手に対して任意の場所にUIを配置することができます。
例えば以前筆者が作成したWatchUIでは手首にUIが表示されるように設定していました。
Microsoftのドキュメントによると以下のような配置は推奨されていません、。
①手の上
②指の先
③手の甲の上
④手首
これらはいずれも手が交差することによるHandTrackingのLostが発生しやすく、UIの操作性が安定しないためです。
また④に関しては誤って手首のメニューボタンを押してしまうことがあります。
今回はドキュメントを読みながら自分なりにまとめていきました。
筆者は以前指で操作できるFingerUIを開発したことがあります。これらと合わせて今後オリジナルのメニューUIを開発したいです。