ついにハンドトラッキングのSDKが実装!
2019年12月20日に待望のOculusQuestのハンドトラッキングのSDKが公開されたのでとりあえずハンドトラッキングを試したい人向け
より詳しい情報は公式のリファレンスを読んだりすることをお勧めします
この記事は以下の環境での実装です
Unity 2018.4.14f1
OculusIntegration ver 12.0 ( Unityの対象バージョンは 2017.4.30 以上 )
AssetStoreのバージョン情報がバグってる?
既にOculusIntegrationを導入してるプロジェクトだとアップデートするか否かのダイアログに 1.44 とかって書いてあったからこっちが本来のバージョンと思われる
また本記事はOculusQuestのアプリビルドができることを前提としています
参考記事
0から始めるQuestビルド
Unityで作ったアプリをOculus Questで動かす
とりあえず実装完了しててより詳しい情報を知りたい方は↓の参考ページより
OculusQuest ハンドトラッキングSDKから、指Boneの情報を取得し分析する
Unity Oculus Quest ハンドトラッキングで5本の指でインタラクションさせる
OculusQuestのハンドトラッキングについて色々調べてみた
導入手順
シーンへの配置
- 先ずは空のプロジェクトを作成し、適当なシーンを作成
- OVRCameraRigをシーン上に配置
- OVRCamerarig > TrackingSpace > LeftHandAnchor, RightHandAnchorにOVRHandPrefabを配置する
OVRHandPrefabの場所は下記画像のとおり、OVRCameraRig等のプレハブがあるところに置いてあるので右手、左手それぞれのAnchorにOVRHandPrefabを配置する
パラメータの設定
次にOVRHandPrefabのInspectorを見てみる
以下の三つのコンポーネント
OVRHand の HandType
OVRSkeleton の SkeletonType
OVRMesh の MeshType
をそれぞれ左手なら Hand Left、右手なら Hand Right に設定する
次にOVRCameraRigを選択
OVRManager の Hand Tracking Support のドロップダウンを Controllers And Hands または Hands Only に設定する
当記事ではHands Onlyに設定
それぞれの設定での動作の違い
Hands Only
コントローラ設定でアプリを起動することが出来、その時はコントローラのトラッキングのみ行わる
ハンドトラッキングアプリとして動く、コントローラはトラッキングされない
アプリ中にコントローラのボタンを押下してもハンドトラッキングからコントローラに切り替わることは無い
Controllers And Hand
基本的にハンドトラッキングのアプリとして動く、アプリ起動中にコントローラを操作するとコントローラを認識し、以後ハンドトラッキングが切れる( ボタン押下、コントローラ動かしただけでは特に反応しなかった )
アプリを閉じるとコントローラ操作の状態になっており設定から再度手を使うを選択する必要がある
Controllers Only
手を使う設定でアプリを起動しようとするとコントローラが必要ですというダイアログが開きアプリを起動できない
アプリ中は当然ハンドトラッキングは行われない
これらの動作は今後のOculusIntegrationの更新で変わると思われるのであくまで現時点での動作ということで...
ビルド、そして実機へ...
良し、いい感じ
とりあえず駆け足気味だったがこれでハンドトラッキングをとりあえず試すことが出来た
感想
遅延も言われなきゃ気づかないくらいだしトラッキングが切れる時は割と思い切りのいい感じにトラッキングが切れるから不快感はない
トラッキング切れるか否かの境目らへんで手がぐちゃぐちゃになるのが一番いやだからね
コントローラ設定の時にアプリを起動すると初めからコントローラ操作になる、今のところハンドトラッキング -> コントローラは遷移するがコントローラ -> ハンドトラッキングへの遷移はないと思われるてかできるようにしてほしい、うっかりコントローラ操作しちゃったときにホームの設定を直すのは手間なので
ハンドトラッキングのアプリの時はアプリを閉じる方法が特にない、ジェスチャとか何かしらのメニューを自作する必要があると思われる