【Unity】ViveのHandTracking SDKのサンプルをVive Proで試してみる
はじめに
Viveのカメラを使ったHandTackingのSDKが公開されました。 細かい説明は3/19のGDCで説明があると思うのですが、とりあえず試してみたいということでサンプルを落として動かしてみたのでまとめます。
動作環境
- Unity 2018.3.8f1
- GeForce Game Ready Driver 419.35
- Vive Pro
手順
SDKの準備
まずはHandTrackingのSDKをこちらのページからダウンロードします。ViveProかつUnityの場合以外は上のResorcesタブから該当のSDKを落としてきてください。 developer.vive.com
Unityの設定
ダウンロードしたファイルの中に”Hand Tracking SDK Unity Sample.unitypackage”と"Hand Tracking SDK Unity.unitypackage"が入っているのでこれをUnityにインポートします。 その後、Package ManagerからOpenVR Pluginをインポートして、XR SettingsのVirtual Reality Supportedをオンにしてください。 これでUnity側の準備は完了です。しかし、このままVive ProをつなげてもVive Proのカメラが有効になっていないためハンドトラッキングをすることはできません。
Vive Proのカメラを有効にする
カメラを有効にするためには、Steam VRの設定>カメラから"カメラを有効にする"を選択して有効化してください。 カメラを有効化することができたら一度Steamを再起動してカメラのウィンドウからカメラレートのテストでカメラが動いているかを確認してください。 無事にカメラが動いているようでしたら準備は完了になります。
動かす
これで準備は一通り終わったので次はサンプルを動かしてみます。 Aristoフォルダ内にあるSampleシーンを起動します。
動きました。
このシーンでできるアクションは
- 右手を握って開くとレーザーが出せる
- 両手を握ってエイムを箱に合わせて開くと掴む、手をもう一度握ると放す
- 左手で箱を掴む
- 右手で箱を押す
- 右手の人差指を立てると出てくる光の玉を順になぞると箱を出せる
といったアクションが可能になっています。
参考
おまけ
自分の環境ではデフォルトのまま実行するといくつかエラーが出てました。毎フレーム出てくるエラーがあるので対処法を書いておきます。 あと原因は不明なんですがハンドトラッキング周りの処理のCPU負荷がやばい。(i7-7700)
大量のMissingComponentException
両手を使ったAimを行うと前のUIパネルにレイがヒットしてしまい、アタッチされていないRigidbodyを参照しようとします。なのでヒエラルキーの中にあるInstructionといゲームオブジェクトのレイヤーをIgnore Raycastに変更してください。