夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Osaka HoloLens Hackathon Online 2021 チームビルド 5日目 HandMenuと指のジェスチャーの融合

本日はイベント枠です。   昨日3月6日から大阪駆動開発のイベント「Osaka Hakkathon Online 2021 チームビルド」が始まりました。

このイベントは関西のxRコミュニティ大阪駆動開発が主催のHoloLensイベントで、毎年行われているイベントが今年は新型コロナウィルス感染症の影響を受けオンラインの形で行われました。

本日は5日目の取り組みになります。

redhologerbera.hatenablog.com

〇ボッチソン『HoloLensで片手で操作できる未来感あるUI』

今回筆者が取り組むテーマは『HoloLensで片手で操作できる未来感あるUI』です。

これはHoloLens 2で使用できるHandTrackingを用いたオリジナルのUIを作成するプロダクトで、MRTKで提供されているHandMenuなどデフォルトのHandUIは片手操作ができないという門外があります。

様々な人が今後HoloLensを使っていく中で片手で操作できるUIというものを作りたいと思いテーマとして選びました。

f:id:Holomoto-Sumire:20210306185244j:plain
画像はイメージです

審査員の方からはプロダクトが多い中このようなコンポーネントは非常に価値がある。ぜひUnityパッケージにして公開してほしいという言葉をいただいています

〇HandMenuと指のジェスチャー

本日は機能と見た目をマージします。

ジェスチャーの機能

指のジェスチャー認識はMRTKで提供される[Microsoft.MixedReality.Toolkit.Input.HandJointUtils.FindHand()] で実装しています。

redhologerbera.hatenablog.com

HandTackingのJoint情報を取得して[Vector3.Angle()]を用いて各指の曲げ状態を取得し、伸び状態、曲げ状態を認識し、それに応じてUnityEventを発火させるようにしています。

また、薬指、小指に関しては実装的には区別できますがHoloLens実機上ではそれぞれの独立した認識が難しいので一括りにして人差し指、中指、薬指&小指の3パターン×オンオフのイベントを実装しています。

〇HandMenu

昨日[SolverHandler]コンポーネントおよび[HandConstraint]を用いてMRTKで実装されているHandMenuに基づいて手に追尾するメニューを作成しました。

f:id:Holomoto-Sumire:20210309215026j:plainf:id:Holomoto-Sumire:20210309214544j:plain

redhologerbera.hatenablog.com

今回はこれを発展させていきます。

①3つの[Quad]を作成しHandMenuの子オブジェクトとして配置します。MaterialにはMRTKで使用されているリングのテクスチャを使用しています。

f:id:Holomoto-Sumire:20210310201541j:plain

②プロジェクトウィンドウでAnimationおよびAnimationControllerを作成し、下画像のようにサークルの選択時、非選択時のアニメーションを作成します。

f:id:Holomoto-Sumire:20210310202152g:plain

③[FingerGestureDetect ]コンポーネントの人差し指、中指、薬指&小指の発動イベントで対応するQuadのアニメーションが実行されるように設定します。

実機で確認します。

www.youtube.com

現状まだすぐに選択状態が外れてしまっていますが、認識していることを確認しました。 明日以降調整していこうと思います。

これで機能に関してのフレームが出来上がりました。これからバグ修正など調整をしていきます。