Oculus Quest でハンドトラッキングを独自アプリで試してみた
Oculus Integration 12 試してみました。先週追加された Quest の新機能、ハンドトラッキングが独自アプリで使用できるようになる更新です。
あと、バージョン表記が変更になったみたいですね。 1.44 -> 12.0 みたいな。
アップデート
木曜日に更新されました。ところが、見に行ったのが早すぎた(とは思わないけど)? リリースノートからのリンクが応答なくて、ハンドトラッキング用に追加された機能とか、サンプルの説明が一切見られなくて、試行錯誤で動作させるのに苦労しました。
次の日にはみられるようになっていました。
ハンドトラッキング

プラットホームを Quest 用に Android にすると、新しく追加された [Input] の項目が現れます。 最初は気づかなかったですが、この項目がデフォルトで Controller only になっていて、Quest にデプロイしてコントローラが必要ですとか言われて困りました(説明ページのリンクも応答なかったし)。
これを [Hands Only] または、[Controllers And Hands] にすると、本体で手が使えるようになります。(2017.4.x とかだと、マニフェスト更新が必要そうです。)
サンプルシーン
今回のアップデートで追加されたサンプル(ハンドトラッキングのサンプルはこれだけです)。
ハンドトラッキングを使って 8つのボタンを操作し、汽車などを操作するサンプルです。
独自アプリ
To use prefabs in your own scenes, place the following prefabs into your scene:
https://developer.oculus.com/documentation/quest/latest/concepts/unity-sf-handtracking/
Assets/Core/HandsInteraction/Prefabs/InteractableToolsSDKDriver
Assets/Usage/HandsTrainExample/Prefabs/NearFieldButton
Assets/Core/HandsInteraction/Prefabs/Hands
独自のアプリに組み込むのなら、上記の Prefab を追加するのが手っ取り早いです。

Editor では一切ハンドトラッキングを試せません。なので、実行時のインスペクター情報を見るために Using Theirs – Remote Inspector を使用してみました。
すると、ランタイムで生成された Hand オブジェクトには物理コライダーが、指にもあるのを確認しました。ボタンとか Ray を使ったものよりは(まだよくわからないし)、単純に手を手として物理的に使うサンプルの方が面白いだろうと。
ということで、Puppet Master を使って、向かってくるパイロットをただ倒すというサンプルを作ってみました。
無音で近づいて来るのが怖かったので、足音入れて、衝撃によって音を出したりとしてみました。
こうしてみると Quest の視界狭いなぁ… かなり近づかれたらすぐに視界外になるので見失ってしまう。足音だけでは足りないですね。
まとめ
動画を見ての通り、よくトラッキングは消失しますね。 また、パンチなど速い動きだと、トラッキングが追い付いていません。 Boxing のような速いアクションには向かなそうですね。
ですが、指の動きまでトラッキングされるので、より複雑なインタラクションが可能になったと言えます。 ただ、手が Transform 移動なので、物理干渉するには違和感ありまくりです。 これを Velocity 移動に変更できれば面白そうです。
現在、Oculus Link を使って Editor でも Quest を使っています。今回の Integration のアップデートで密かに期待していたのですが、Editor でもハンドトラッキング使えないだろうか? と。 結果はまぁ思った通り無理でしたがw これは Oculus Link 側だろうけど…
Oculus Link を使って、Editor でも Quest のハンドトラッキングが使えるようになると、開発は著しく促進されると思います。私期待しています。
今回使ったアセット
Unity 2018.4.13f1 (LTS)
Quest には必須ですね。
Puppet Master は最高よ。
リモートで実行中の Game Object のインスペクターが見られます。
ちょっとした効果音にはこれだよね。
コメントを残す