はじめに
楽しみに待っていたOculusQuest ハンドトラッキング対応版 OculusIntegrationが公開されたので、
早速どんなのか試してみました。
とにかく早くQuest触りたいという欲求に忠実に品質度外視・検証速度重視/QCDのD偏重した記録をまとめたものになります。
それゆえに内容は今後修正・加筆されることがあります。
検証環境
- Unity 2018.4.14f1
- macOS Catalina Version 10.15
- Oculus Quest Version12
- Oculus Integration Version12.0
- FinalIK Version19.0
組込手順(概要)
- OculusDeveloper公式のハンドトラッキングのページにそって組み込みする https://developer.oculus.com/documentation/quest/latest/concepts/unity-handtracking/ (Google翻訳使うとだいたい読める日本語になるので手順に沿って進める)
- OVRCameraRigのCenterEyeAnchor,LeftHandAnchor,RightHandAnchorをFinalIKのSpine/HeadTarget,Spine/Pelvis,LeftArm/Target,RightArm/Targetにそれぞれ設定
- OVRLipSyncをVRMのVRM Blend Shape ProxyのAIUEOに接続
- 不定期に瞬きするスクリプトをVRM Blend Shape ProxyのBLINKに接続
- OVRHandの指状態を手に反映
- ここだけズルした。VRMの手boneのスケールを0にして非表示にしつつ、OVRHandの手をそのまま使用。
作例
VRMモデル動かしてみた。
Unity/Oculus IntegrationにHandTrackingきたので早速×VRMで試してみた。外部コントローラなしのQuestのみで指5指動く破壊力スゴイ #Oculus#Handstrackingpic.twitter.com/I6w7iw3idK
— sa_w_ara△ (@sa_w_ara) December 20, 2019
左指ピンチでメニュー表示ON/OFFするとこんな感じ pic.twitter.com/IAjcJvBJNd
— sa_w_ara△ (@sa_w_ara) December 20, 2019
- OVRHand Behaviourから取得できる各種値をそのままデバッグ表示してみた
- 各指の閉じ具合、各指のピンチon/off、精度High/Lowが取得できる。
- 指boneのtransformも使えるので個別の関節状態はそちら参照することなるかと。
OVRHandクラスで取得される各種値の確認。
— sa_w_ara△ (@sa_w_ara) December 21, 2019
FingerIsPinching, GetFingerPinchStreangthはよく使いそう。 pic.twitter.com/uSNSkBAcg8
- おまけ: ハンドトラッキングしつつ自前計算Particleやってみたもの, 5000triangles
- 全指個別で粒子触れるようにしたかったのだけれど、全く速度意識しないと重くて使い物にならなかったので省略。
Quest HandTracking×パーティクル楽しい
— sa_w_ara△ (@sa_w_ara) December 21, 2019
人差指に退ける力・中指に引き寄せる力持ってみたのだけど、
VRだと粒子移動に奥行き知覚がついて空間の開放感がとても良い #OculusQuest#HandTrackingpic.twitter.com/IyxEC7ZnQY
- おまけ: さらに360天球画像をパーティクルに投影してみた版
- こっちのshaderを若干修正して天球をパーティクル群にリアルタイム投影 https://github.com/uisawara/unity-projection360
#theta360で撮影した全天球写真を球状パーティクルに投影して、それを #ocululsquest +ハンドトラッキングで触って遊ぶ pic.twitter.com/HwqKJCwdvN
— sa_w_ara△ (@sa_w_ara) December 21, 2019
所感
- ハンドトラッキングの認識精度わりとよい
- とはいえ手・指を入力装置として使う場合のUIUXの考えかた自体が未成熟なのでそこを今後詰めていく。
- ユーザーの意図的操作か・無意識動作かをうまく切り分ける仕組みは必要。
- 検知できる指の特性
- 手の認識される範囲が結構広くて、下ろしたつもりの手指でピンチ操作した扱いになることがある。
- 手の高さと組み合わせて、意図的に手を上げての操作のみ対象にしたほうがよいのかも。
- 右手指で2進数作ると2,6あたりの認識が苦手っぽい。(普通にやる姿勢ではないだろうから実用充分)
- 人差し指中指・薬指小指でVの字作るのはできた。
- 手の認識される範囲が結構広くて、下ろしたつもりの手指でピンチ操作した扱いになることがある。
謝辞
- 3Dアバター: セシル変身 https://twitter.com/cecilproject