はじめに
Apple Vision ProでのMRアプリ開発について解説します。
PICO4/4U、Vive Focus Vision、Meta Questに続いての記事になります。
※ Apple Vision Proでは"MR"という表現はされませんが、他の記事との兼ね合いであえてMRアプリ開発とタイトルにつけています。
開発環境
- Unity 6000.0.48f1 (Pro licence以上が必要です)
- PolySpatial 2.3.1
- XR Interaction Toolkit 3.2.0
- Mac(Apple Silicon)
XR Interaction Toolkitのセットアップまで
こちらの記事に従ってXR Interaction Toolkitをセットアップしてください。
PolySpatialをインストールする
PolySpatialはUnityでVision Pro向けのアプリを開発するためのフレームワークです。
Package Managerで PolySpatial visionOSを検索してインストールしてください。
現在のlatestは2.3.1です。
PolySpatial visionOSをインストールすれば、依存しているパッケージも同時にインストールされます。
- PolySpatial
- PolySpatial visionOS
- Apple visionOS Plugin
- PolySpatial XR
Projectをセットアップする
公式ドキュメントに従ってセットアップします。
ここでは必要最小限の内容を説明します。
- Build Profilesウィンドウを開く (メニュー: File > Build Profiles)
- visionOS platformを選択
- Switch Platform ボタンを押し、visionOS platformに切り替える
Project Settings > XR Plug-in Management > visionOSタブでPlugin ProvidersのApple visionOSにチェック
XR Plug-in Management > Apple visionOSにて
App ModeにRealityKit with PolySpatialを選択
Hands Tracking Usage Deskription,World Sensing Usage Descriptionに利用理由を記載。
※この内容はアプリ起動時にユーザーの許可を得るダイアログで表示されます。
ビルドして実機で確認する
Build ProfilesでBuildを実行します。
実機向けにビルドする場合は TargetSDKにDevice SDKを、
シミュレーター向けにビルドする場合は TargetSDKにSimulator SDKをそれぞれ選択する
インタラクションはシミュレーターよりも実機の方が確認しやすいので実機向けにビルドしましょう。
Buildボタンにて、フォルダを指定してビルドしてください。
XCodeで実行する
ビルドすると指定したフォルダにUnity-VisionOS.xcodeprojeファイルが出来ます。
ダブルクリックしてXCodeで開き、インストールするデバイスを指定して実行してください。
Vision Proで操作出来るようにシーンをカスタマイズする
実機で動作確認すると分かりますが、HandsDemoSceneの全ての機能に対応するには、いくつか変更が必要になります。
まずは、XR Interaction ToolkitのvisionOS向けサンプルがありますので、そちらを確認してみましょう。
XR Interactio ToolkitのvisionOSサンプルをインポートする
XR Interactio Toolkitのsampleから、visionOSを探してimportしてください。
Build Profielsにて、Scene ListにVolumeDemoシーンを追加し、ビルドして実行する
⚠️文字が表示されない時は
Textが表示されない場合、TextMeshPro Essentialをインポートしてください。 メニュー > Window > TextMeshPro > Import TMP Essential Resources を選択これでオブジェクトのGrabなどができている事が分かります。
VolueDemoを参考に、HandsDemoSceneを変更していきます。
VolumeCameraを追加する
VolumeCameraはVision Proで見た時のUnityの原点になります。
Bounded/Unbounded/Windowなどのモードがありますが、今回はUnboundedを選択します。
Hierarchy右クリック > XR > Setup > Volume Camera 選択
VolumeCamera Game Objectが追加される。
Assets > Resourcesフォルダで右クリック > Create > PolySpatial > Volume Camera Window Configuration
でVolumeCameraWindowConfigファイルを作成
作成したUnbouded VolumeCameraWindowConfigをVolumeCameraコンポーネントに設定
VolumeCameraはXR Originの下、Camera Offsetと同一階層に配置する。
Position、Rotationは(0,0,0)にする。
AR Session を追加する
Hierarchyを右クリック > XR > AR Sessionを選択して追加。
Grab出来るようにする
XR RigにPrimary Interaction GroupとSecondary Interaction Group Variantを追加する事で、Grab出来るようになります。
Assets/Samples/XR Interaction Toolkit/3.2.0/visionOS/Prefabs/Interactors/
- Primary Interaction Group
- Secondary Interaction Group Variant
この2つをXR Rigの下に配置してください。
これで操作は出来るようになりました。
Handの見た目を調整する
あと一歩。手のモデルが真っ黒なのと、Rayが出ているのが気になります。
Handモデルを消す
HandVisualizer、Left/Right Hand Interaction Visiual GameObjectを非アクティブにして非表示にします。
Rayを消す
設定は以上です。
ビルドして実機で動作を確認してください。
おわりに
お疲れ様でした。
今回はOpen XRを使用していませんが、XR Interaction Toolkitが動作することでインタラクションに関して多少の調整で同じコンテンツを動作させる事が出来ました。
XR Intraction ToolkitにvisionOS用のサンプルがあるのがありがたかったです。
今回解説したセットアップ済みUnity ProjectはGitHubで公開しますので、自由にご利用ください。
https://github.com/afjk/visionOS-MR-Unity-Template
※ サンプルのHands Interaction Demoのインポートとセットアップは記事に沿ってご自身で設定してください。
XRアプリ開発に少しでもお役に立てれば幸いです。
参考