![見出し画像](https://assets.st-note.com/production/uploads/images/151590771/rectangle_large_type_2_eb68e95bb697ae6c92540f0ce00bd4be.png?width=1200)
MR開発をはじめる。【Meta Quest, Apple Vsion Pro対応】
これを読めば、Meta Quest、Apple Vision Pro、PICO4など
多数のヘッドセットに対応したMR開発ができるようになる!
という方法をまとめました。
最終的にこのようなことが出来るようにします。
■使うもの
「XR Interaction Toolkit」というUnityの標準ツールキットを使います。
■理由
・様々なヘッドセットに対応できる
・XR向けのインタラクションに必要な素材が一通りそろっている
などのメリットがあるので、このツールキットでMR開発していきます。
【開発環境】
unity:2022.3.22f1 URP
【テスト環境】
Meta Quest 3
▼1:XR Interaction Toolkitの導入
まず、Unityで新規プロジェクトをURPテンプレートで作成します。
![](https://assets.st-note.com/img/1724019442788-sLdomnLfFa.png?width=1200)
Window > Package Manager を開きます。左上のPackagesをUnity Registryにして、「XR Interaction Toolkit」を探してインストールします。
新Input Systemのバックエンドを使用するか確認のダイアログが表示されるので、YesをクリックするとUnityが再起動します。
再びXR Interaction Toolkitに戻り、Samplesの Starter Assets をインポートします。
![](https://assets.st-note.com/img/1724105479328-8PKT2k1hnw.png?width=1200)
【ヘッドセットで実行できるようにする】
まず、Edit > Project SettingsでXR Plugin Managementを開き、Install XR Plugin Managementをクリックします。
![](https://assets.st-note.com/img/1724105774327-up5lFjoK2g.png?width=1200)
【Steam VR】で実行できるようにするために
XR Plugin ManagementタブのOpenXRのチェックをオンにし、OpenXR Pluginをインストールします。
![](https://assets.st-note.com/img/1724118452956-xgjPlNf39H.png?width=1200)
Project Validationのページが表示されるので、「Fix All」をクリックします。
「最低ひとつのインタラクションプロファイルを追加してください」という警告が残っているので、「Edit」をクリックして、「Enabled Interaction Profiles」に使用しているヘッドセットのコントローラーに該当するプロファイルを追加します。」
![](https://assets.st-note.com/img/1724106164185-OPfsXTV8xM.png?width=1200)
![](https://assets.st-note.com/img/1724106360804-HwHYz69X8A.png?width=1200)
【Meta Quest】で実行できるようにするために
XR Plugin ManagementタブでプラットフォームをAndroidに切り替え、こちらもOpenXRをオンにすると、警告の「!」が表示されます。さきほどと同様、「Oculus Touch Controller Profile」を追加します。
さらに、下の「Meta Quest Support」をチェックします。
![](https://assets.st-note.com/img/1724114432079-f7w6FGKzCV.png?width=1200)
OpenXR PluginはIL2CPP / ARM64でなければ動作しませんので、Project Settings > PlayerのAndroidタブでScripting BackendをIL2CPPに変更、Target ArchitecturesのARMv7をオフにしてARM64をオンにします。
![](https://assets.st-note.com/img/1735950562-ijY3UElqV4dDnmehQCZkNoBx.png?width=1200)
以上で基本設定は終わりです。
参考:
次から、本格的にMR開発の手順を書いていきます。
▼2:ハンドトラッキング出来るようにする
ハンドトラッキングを使用するには、XR Interaction Toolkitの基本設定を済ませた上で、「XR Hands」 パッケージをインストールします。
その後、Samplesの HandVisualizer をインポートします。
![](https://assets.st-note.com/img/1723761776924-LprMkKLyV1.png?width=1200)
◇注意◇
OpenXR Plugin 1.6.0以上が必要なので、それ以下のバージョンの場合、
下の図のように、左上の+ボタン > Add package by name > ”com.unity.xr.openxr” と書いてAddを押すと、最新バージョンにアップデートされます。)
![](https://assets.st-note.com/img/1723761969979-8c5qjdAhsM.png?width=1200)
ハンドトラッキングを有効にするため、Project Settings > OpenXRの設定で “Hand Tracking Subsystem”, “Meta Hand Tracking Aim” にチェックを入れます。
![](https://assets.st-note.com/img/1723762330691-kHTgHMFn4f.png?width=1200)
そして、XR Interaction ToolkitのSamplesから、Hands Interaction Demo をインポートします。(物をつかんだり、ボタンを押したり、UGUIを操作したりできるサンプルシーンが入っています。)
![](https://assets.st-note.com/img/1723762599657-oSgqmcOHHH.png?width=1200)
ここで一度、"HandsDemoScene" というシーンでハンドトラッキングが出来るか検証すると良いです。
ーーー【実機テスト】ーーー
URPだとシーン内のマテリアルが最初ピンクになっているので、HandsDemoSceneAssets/Materials フォルダ内のマテリアルを全選択し、Edit > Rendering > Materials > Convert Selected Built-in Materials to URP を押して、マテリアルをURP対応します。
![](https://assets.st-note.com/img/1723763127486-jQ8H1dCgxV.png?width=1200)
そしたら、Build Settingsから
1.Build時のプラットフォームを Android に切り替え、
2.Texture Compressionを ASTC に、
3.HandDemoSceneを Scene In Build に追加します。
![](https://assets.st-note.com/img/1723763720779-MBPqA0xMA9.png?width=1200)
実機でテストしてみましょう。
▼3:パススルーで現実世界とつなげる
ここまで、VRモードでハンドトラッキング出来るようになりました。
次は、パススルー機能を用いて現実世界で開発できるようにします。
まずはUnity Registryから「AR Foundation」を追加します。
![](https://assets.st-note.com/img/1723768423804-cDzLTqB1k0.png?width=1200)
◇注意◇
(MRの機能がつかえるのはバージョン5.1以上のため、それ以下のバージョンの場合、下の図のように、左上の+ボタン > Add package by name > ”com.unity.xr.arfoundation” と書いてAddを押すと、最新バージョンにアップデートされます。)
![](https://assets.st-note.com/img/1723768516213-ZZ9TsfwYdN.png?width=1200)
次に、Metaのヘッドセットで AR Foundation を機能させるため、Add package by nameで ”com.unity.xr.meta-openxr” と書いて、
「Unity OpenXR Meta」というパッケージをインストールします。
![](https://assets.st-note.com/img/1723768882148-kFnD2BvhoI.png)
![](https://assets.st-note.com/img/1723769093307-RP8p8w21xI.png?width=1200)
XR Interaction Toolkitの方で、Samplesから AR Starter Assets というAR開発を始めるためのサンプルがあるのでこれをインポートします。
![](https://assets.st-note.com/img/1723791338620-xkeoUuzaHF.png?width=1200)
これで必要なパッケージはそろいました!
MR機能が使えるよう設定していきます。
まず、Questでパススルー機能が使えるよう、XR Plug-in Management > Androidタブで、”Meta Quest feature group” にチェックを入れます。
![](https://assets.st-note.com/img/1723811515014-XPId5IB8eV.png?width=1200)
OpenXRの設定で以下のよう項目にチェックが入っているか確認します。
![](https://assets.st-note.com/img/1723845773060-Rb7AWG1go3.png?width=1200)
※補足
「Enabled Interaction Profiles」に追加するコントローラーは、”Oculus Touch Controller Profile”, “Meta Quest Touch Pro Controller Profile”
のふたつ
Project Settings > Player 設定のMinimum API Levelも
“Android 10.0 (API level 29)” にしてください。
![](https://assets.st-note.com/img/1723845994174-0OLZVW4Lxc.png?width=1200)
【URP用の設定】
Built-inとは異なり、URPではグラフィックの設定を少し変更する必要があります。Graphics設定にアタッチされているRendering Pipeline(今回は “URP-HighFidelity”)を開き、
![](https://assets.st-note.com/img/1723846577434-sra4cyH7H0.png?width=1200)
“Terrain Holes” と ”HDR” のチェックを外してください。
![](https://assets.st-note.com/img/1723846649698-XoIaDomjgj.png?width=1200)
そして、上のRendering Listの “URP-HighFidelity-Renderer” を開き、
Post-processingのチェックも外して無効にします。
![](https://assets.st-note.com/img/1723846810760-t681HI4tth.png?width=1200)
以上でURP用の設定は完了です。
それでは最後に、unityシーンでビルド出来るようにセットアップします。
先ほどテストした “HandsDemoScene” を用います。
Hierarchyで右クリック、XR > AR Session を追加します。
![](https://assets.st-note.com/img/1723846977631-eyE0o7b4FD.png?width=1200)
XR Origin (XR Rig)にAdd Componentで、AR Plane Manager を追加します。
![](https://assets.st-note.com/img/1723847201983-Afh3E7a8cL.png?width=1200)
AR Plane Managerに “AR Feathered Plane” というオブジェクトをアタッチします。
![](https://assets.st-note.com/img/1723847262713-OyowNiugRP.png?width=1200)
※補足
AR Feathered Planeは、検知した平面をドットで表示するオブジェクトですが、現実世界だと少し見えずらく邪魔だったので、このマテリアル “FeatheredPlaneMaterial” のTexture Tint ColorのAlpha値を0にします。
![](https://assets.st-note.com/img/1723847377588-g3sjA3sE3L.png?width=1200)
![](https://assets.st-note.com/img/1723847424510-ZwXcQuXMtP.png?width=1200)
次に、カメラの設定です。
Main Cameraを開き、Environment/Background Type を Solid Color に変更、Backgroundのカラーを真っ黒 & Alpha値を0 (r,g,b,a = 0,0,0,0) にします。
![](https://assets.st-note.com/img/1723847691522-y8iimoqsBJ.png?width=1200)
そして、Output/HDR RenderingをOffにしておきます。
(※Offにしないと画面が真っ暗に...)
![](https://assets.st-note.com/img/1723847756561-6wiCrz3Dsa.png?width=1200)
最後に、カメラにAdd Componentで AR Camera Manager, AR Camera Background の二つを追加します。
![](https://assets.st-note.com/img/1723847879711-FMYycOSNSG.png?width=1200)
これですべてのセットアップが整いました!
ビルドしてMRをテストしてみましょう!
▼次回:SAO・UIを導入
続きはこちら: