見出し画像

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になるため、アプリ起動中は有効にするようにコードを書く必要があります。

Before calling this function, make sure you have set the clear flags of the camera to solid color and have set the background color of the camera to 0 for the alpha channel.
If the app is paused, this function will cease. Therefore, you need to call this function again after the app has been resumed.

Pico Unity XR SDK: PXR_Boundary Class Reference
  • 環境構築で生成した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と同じ階層にドラッグ&ドロップで設定します。

  • ジョイントパラメータはデフォルトの設定のまま使用します。

ハンドトラッキングの設定は以上です。アプリをビルドして実行すると、コントローラは表示されず手と同じ位置に透明な手がハンドトラッキングで表示されます。

デモ

パススルーでハンドトラッキングできていますね!

弊社では、このように業務外でもいろいろな開発を楽しめるエンジニアを募集中です!

以下は今回参考にした資料です。

いいなと思ったら応援しよう!