visionOSの入力システムを見据えてXR Interaction Toolkitを試す

2023/7/19 の記事「Unity によるvisionOS のサポート: 知っておくべきこと」

Unity公式より、visionOSに関する新しい記事が出ました。
Unity support for visionOS: What you need to know

気になった部分をまとめるとこんな感じ。

・URP推奨
・Unity公式 XR Interaction Toolkit でハンドトラッキングを実装
・用意されたハンドジェスチャ入力に対応する実装をUnity Input Systemで作れる
・XR Hands を使えば、手の動きのデータに直接アクセスしてハンドジェスチャ入力のカスタムが出来る
・AR Foundation でMR実装


ARFoundation, XR Interaction Toolkit に慣れておくと、visionOS向け開発を始める際にいくらかスムーズになりそうですね!
筆者は Unity XR Interaction Toolkit と XR Hands を使った開発は未経験だったので、環境構築~実装まで試して備忘録を残したいと思います。

目次

開発環境を構築する (Quest2)

今回はQuest2を使って試しています。

環境

Windows 11
Unity 2022.3.5f1
Meta Quest2
XR Hands 1.2.1
XR Interaction Toolkit 2.4.1

URP, ARFoundation

URP推奨とのことなので、URPでプロジェクトを開始しましよう。
今回はQuest2で試すため、AndroidにSwitch Platformしておきます。

ARFoundationの導入については省略します。
(URPなので、Universal Renderer Data に AR Background Renderer Feature を追加するのを忘れずに!)

XR Interaction Toolkit , XR Hands

Package Manager > Unity Registry からインストールできます。
サンプルも併せてインポート。

Project Settings

OpenXRを使うため、IL2CPP・ARM64 に設定する必要があります。

XR Plug-in Management をインストール。
XR Plug-in Management > PC向け設定で、OpenXRにチェック。
Android向け設定もOpenXRにチェック。

赤か黄色の警告マークが出るので、警告マークをクリックしてOpenXR Project Validation を開きます。

内容確認後、Fix Allを押すと一部自動で設定を修正してくれます。

Fix All で解消されない警告に、「少なくとも1つのInteractionプロファイルを追加する必要があります」と書かれています。Editをクリックするとその設定画面が開きます。

今回は Oculus Touch Controller Profile を追加します。
OpenXR Feature Groups で、使いたい機能にチェックを入れます。

ハンドトラッキング

ここまでの設定で、Samples > XR Interaction Toolkit のデモシーン HandsDemoScene でハンドトラッキングを試せるようになっています。ここを見ればハンドトラッキングの一通りの実装が確認できます。
簡単にまとめると以下です。

Playerシステム
・XR Interaction Hands Setup プレハブをSceneに置く

掴めるオブジェクト
・Collider, Rigidbody, XRGrabInteractable をアタッチ

物理ボタン
・PokeButton プレハブを加工して作ると手っ取り早い
・XRSimpleInteractable にイベント登録できる
・XRPokeFollowAffordance でボタンの押し込みの深さなど設定

Unity UI
・Canvasに TrackedDeviceGraphicRaycaster をアタッチするとハンドトラッキングで操作出来るようになる

XR Interaction Toolkit の問題点

XR Interaction Toolkit には気になる点があります。
・ハンドポーズを登録する仕組みがないから、物を掴む手が物にめり込む
・ボタンを押し込んだ指が、そのままめり込む

互換性を重視したツールなので仕方ないのかもしれませんが、めり込み対策の有無でUXの質は大幅に変わります。
現時点では、外部アセットを使えは実装できるのかも…という感じです。
解説されている動画を見かけました。
Virion Pro をきっかけに公式で対応されないかな?と期待しています。

(おまけ) XR Handsで取得する手の動きのデータ

visionOSのジェスチャー入力のカスタムに使われる XR Hands をもう少し見てみましょう。
Samples > XR Hands にあるデモシーン HandVisualizer を開くとこのようになっていました。

自作のハンドジェスチャのデータを可視化し記録したい瞬間が出てきそうなので、便利に使えるかも。

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次