Unityの知識をinputしてみる ハンドトラッキング

先日Oculus Questを購入したので、VR上で自分の動きを表示できるのか気になったのでハンドトラッキングという機能を実装してみることにしてみました。以下参考サイト

https://qiita.com/qvtec/items/9e45b6bdad17a940a236

https://developer.oculus.com/documentation/unity/unity-handtracking/?locale=ja_JP

oculus questで手の操作を読み取る

Qitaにあった記事にある以下のInputの項目が、デフォルトだと出力されてないのでちょっと手こずった。

Inspector
OVR Manager (script) > Input > Hand Tracking Support → [Controllers and Hands]

公式のoculus のハンドトラッキングガイドに書いてあったので、とりあえず一安心。

解決方法は以下の方法です。

[Input(入力)]セクションを使用できない場合、現在のプラットフォームがAndroidになっていません。プラットフォームを変更するには、[File(ファイル)] > [Build Settings(ビルド設定)]に移動し、Androidアイコンを選択した後、[Switch Platform(プラットフォームの切り替え)]をクリックします。

ただし、でてきたのはInputではなくQuest FeaturesでここのなかにあるHandTracking Supportを切り替えるようです。

実装してみるとこんな感じで、右手がなんかおかしい

コントローラを使ってものを掴む方法

ものを掴みたくなったので、以下の記事を参考に実装してみる

https://note.com/oshimu/n/nc6e3299376ff

コントローラを使用してものを掴む実装をしてみたらこんな感じになった。

実装で色々と悩んでいたので備忘録としてまとめる。

1、以下のサイトを参考にOculus Integration のバージョン1.42.0をダウンロードしてAsstesをimportする。     https://raspberly.hateblo.jp/entry/OculusIntegrationSetup#AvatarGrab%E3%81%AE%E5%BE%A9%E6%B4%BB%E6%96%B9%E6%B3%95

2、LocalAvatarWithGrabをHierarchyに移動する。

※AvatarGrabberLeftとAvatarGrabberRightの階層に注意、自分はこのオブジェクトの配置の階層が間違っていてものが掴めなかった。

3、AvatarGrabberLeftとAvatarGrabberRightにAddComponentでHandを追加する。

4、掴む対象のオブジェクトを作成する。今回はグレネードを対象にしていますが、3Dオブジェクトをcubeだったり、sphere等でも大丈夫です。

5、作成したオブジェクトのInspectorを開いて、AddComponentで「Rigidbody」と「OVRGrabbable」を追加する