PICO4でパススルー&ハンドトラッキングする
この冬、jig.jp社内ではPICO4が流行しました。みなさんはもう買いましたか?社内には持っている人がすでに4人もいるらしいです。PICO4はVRだけでなく、フルカラーパススルーを使ってMRにすることができます。またコントローラが付属していますが、コントローラなしでハンドトラッキングすることもできます。
この記事ではPICO4でパススルーとハンドトラッキング機能をUnityから利用する方法を紹介します。
環境構築
公式のドキュメントが確実で一番参考になります。SDKの更新も頻繁にあるため、QuickStart の内容に従いSDKバージョンに合った方法で環境を準備しましょう。
それでも差異があることもあります。SDK v212時点で詰まったポイントをリストアップしておきます。
SDKはmanifest.jsonに絶対パスで保存されます。
Users/hogehogeが載ってしまわないように相対パスにすることもできます
"com.unity.xr.picoxr": "file:./PICO Unity Integration SDK v212",
XR Interaction Toolkitの最新版が表示されないことがあります。
manifest.jsonのバージョンを書き換えると自動で指定のバージョンがインポートされます。
"com.unity.xr.interaction.toolkit": "2.1.1",
XR Origin(VR)は XR Origin(Action based)に名前が変わっています。
Controllerプレハブも位置も変わっています。
Packages/PICO Integration/Assets/Resources/Controller にありました
名前は PICO 4 L PICO 4 R になっていました
Build the scene into an appまで完了すると、両方のコントローラが表示されるアプリが完成すると思います。ここからパススルーとハンドトラッキングの設定をします。
パススルー
こちらの日本語記事を参考に設定します。
PXR_Boundary.EnableSeeThroughManualメソッドを使うことでパススルーを有効にできます。このメソッドを有効にするにはリファレンス にあるようにUnityのカメラ設定が必要です。またポーズ復帰のタイミングでパススルーがfalseになるため、アプリ起動中は有効にするようにコードを書く必要があります。
環境構築で生成したMainCameraのbackgroundをRGBA全て0にします。
起動時とポーズ復帰時にPXR_Boundary.EnableSeeThroughManual(true)を呼び出します。
UnityではStartとOnApplicationPauseが、起動とポーズ復帰のタイミングで呼び出されるためこれを使用します。
サンプルコードのコードをアタッチします。
パススルーの設定は以上です。アプリをビルドして実行するとパススルーで表示されます。
ハンドトラッキング
公式のHand trackingセクションを参考に設定します。
PICO4本体のハンドトラッキング機能を有効にします。
設定>Lab>ハンドトラッキングのトグルボタンから有効にできます。
PXR_Managerがすでに追加済みなのでHand TrackingチェックボックスをONにします。
環境構築で設定したPICO 4 L, Rを削除します。
Packages > PICO Integration > Assets > Resources > PrefabsにあるHandプレハブをMainCameraと同じ階層にドラッグ&ドロップで設定します。
ジョイントパラメータはデフォルトの設定のまま使用します。
ハンドトラッキングの設定は以上です。アプリをビルドして実行すると、コントローラは表示されず手と同じ位置に透明な手がハンドトラッキングで表示されます。
デモ
パススルーでハンドトラッキングできていますね!
弊社では、このように業務外でもいろいろな開発を楽しめるエンジニアを募集中です!
以下は今回参考にした資料です。
多分最新のドキュメント: https://developer-global.pico-interactive.com/docs/unity/en/13136/
PXRのリファレンス: https://pdocor.pico-interactive.com/reference/unity/xr/2.07/namespace_unity_1_1_x_r_1_1_p_x_r.html
リファレンスその2: https://sdk.picovr.com/docs/XRPlatformSDK/Unity/en/index.html
古いドキュメント: https://developer-global.pico-interactive.com/docs/en/12058/