はじめに
先日、VIVE Hand Tracking SDKがリリースされました。
これを使うとVIVE Pro / VIVE / VIVE Focus / Androidで両手の位置トラッキングとジェスチャー認識できます。
とは言え、トラッキングはデバイス毎にできる事が違います。
デバイス | 2Dポインタ | 3Dポインタ | スケルタル |
---|---|---|---|
VIVE Pro | o | o | o |
VIVE | o | x | o |
VIVE Focus | o | o | x |
Android(Camera2 APIに対応したカメラ必須) | o | x | x |
VIVEは誰かやっていそうなのでAndroid(Daydream)と組合せてみました。
DaydreamViewとVive Hand Tracking SDKを組み合わせてみた。Daydreamだとジェスチャー認識と位置トラッキングがバッチリ動いた #unity pic.twitter.com/f5iuYPuTgX
— Mitsuhiro Koga (@shiena) March 19, 2019
試してみる
開発環境
- Unity 2018.3.11f1
- gvr-unity-sdk v1.190.1
- VIVE Hand Tracking SDK 0.8.0
サンプルシーン
VIVE Hand Tracking SDKをダウンロードして展開すると以下のパッケージがあるのでインポートします。
- Hand Tracking SDK Unity.unitypackage
- Hand Tracking SDK Unity Sample.unitypackage
/Assets/Aristo/Sample
に2つのシーンがあるので Sample.unity
を開きます。もう1つの Test_WaveVR.unity
はVive Focus用なので今回は使いません。
このシーンはスクリーンショットのように5種類(右上はGrabとPushの2つ)のサンプルが含まれています。
Androidは2Dポインタのみ対応なのでカメラにアタッチされているGesture Provider
のモードをPoint 2D
にすればこのまま改造できそうです。
Daydreamと組合せる
- GVR SDK for Unity v1.190.1からパッケージをダウンロードしてインポートします。
- スクリーンショットのようにシーンルートに4つのプレハブと
Main Camera
と同じ階層にプレハブを追加します。Assets/GoogleVR/Demos/Scenes/HelloVR.unity
シーンからコピーすると簡単です。 -
Player Settings
>XRセッティング
>VRサポート
をチェックします。 -
Player Settings
>XRセッティング
>Virtual Reality SDK
にDaydream
を追加します。 - サンプルシーンにバグがあるのでフォーラムを参考に修正する。
これをビルドすると冒頭の動画のように動作します。
今回はPixel3とDaydream Viewを使ったのですがカメラ必須なので前の蓋を開けたままにしてスマホはテープで留めています。
カメラが必要なので蓋を開けたままテープで強引に留めただけw pic.twitter.com/kPHfB8r0aD
— Mitsuhiro Koga (@shiena) March 19, 2019
現状ではMirage Soloで使えないのですがフロントカメラを扱えるようになるのでVIVE Hand Tracking SDKも今後のバージョンアップで対応してほしいところです。
追記
GVR SDK for Unity v1.200.0でシースルモードに対応したのですが残念ながらカメラ画像を扱えないものでした。issueでは対応しないわけではないようなので今後に期待です。