見出し画像

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テンプレートで作成します。

Window > Package Manager を開きます。左上のPackagesをUnity Registryにして、「XR Interaction Toolkit」を探してインストールします。

新Input Systemのバックエンドを使用するか確認のダイアログが表示されるので、YesをクリックするとUnityが再起動します。

再びXR Interaction Toolkitに戻り、Samplesの Starter Assets をインポートします。

【ヘッドセットで実行できるようにする】
まず、Edit > Project SettingsでXR Plugin Managementを開き、Install XR Plugin Managementをクリックします。

Steam VRで実行できるようにするために
XR Plugin ManagementタブのOpenXRのチェックをオンにし、OpenXR Pluginをインストールします。

Project Validationのページが表示されるので、「Fix All」をクリックします。
「最低ひとつのインタラクションプロファイルを追加してください」という警告が残っているので、「Edit」をクリックして、「Enabled Interaction Profiles」に使用しているヘッドセットのコントローラーに該当するプロファイルを追加します。」

Questの場合は、Oculus Touch Controller Profile

【Meta Quest】で実行できるようにするために
XR Plugin ManagementタブでプラットフォームをAndroidに切り替え、こちらもOpenXRをオンにすると、警告の「!」が表示されます。さきほどと同様、「Oculus Touch Controller Profile」を追加します。

さらに、下の「Meta Quest Support」をチェックします。

OpenXR PluginはIL2CPP / ARM64でなければ動作しませんので、Project Settings > PlayerのAndroidタブでScripting BackendをIL2CPPに変更、Target ArchitecturesのARMv7をオフにしてARM64をオンにします。

以上で基本設定は終わりです。

参考:


次から、本格的にMR開発の手順を書いていきます。

▼2:ハンドトラッキング出来るようにする

ハンドトラッキングを使用するには、XR Interaction Toolkitの基本設定を済ませた上で、「XR Hands パッケージをインストールします。
その後、Samplesの HandVisualizer をインポートします。

注意
OpenXR Plugin 1.6.0以上が必要なので、それ以下のバージョンの場合、
下の図のように、左上の+ボタン > Add package by name > ”com.unity.xr.openxr” と書いてAddを押すと、最新バージョンにアップデートされます。)

ハンドトラッキングを有効にするため、Project Settings > OpenXRの設定で “Hand Tracking Subsystem”, “Meta Hand Tracking Aim” にチェックを入れます。

そして、XR Interaction ToolkitのSamplesから、Hands Interaction Demo をインポートします。(物をつかんだり、ボタンを押したり、UGUIを操作したりできるサンプルシーンが入っています。)

ここで一度、"HandsDemoScene" というシーンでハンドトラッキングが出来るか検証すると良いです。

ーーー【実機テスト】ーーー

URPだとシーン内のマテリアルが最初ピンクになっているので、HandsDemoSceneAssets/Materials フォルダ内のマテリアルを全選択し、Edit > Rendering > Materials > Convert Selected Built-in Materials to URP を押して、マテリアルをURP対応します。

そしたら、Build Settingsから
1.Build時のプラットフォームを Android に切り替え、
2.Texture Compressionを ASTC に、
3.HandDemoSceneを Scene In Build に追加します。

実機でテストしてみましょう。

▼3:パススルーで現実世界とつなげる

ここまで、VRモードでハンドトラッキング出来るようになりました。
次は、パススルー機能を用いて現実世界で開発できるようにします。

まずはUnity Registryから「AR Foundation」を追加します。

注意
(MRの機能がつかえるのはバージョン5.1以上のため、それ以下のバージョンの場合、下の図のように、左上の+ボタン > Add package by name > ”com.unity.xr.arfoundation” と書いてAddを押すと、最新バージョンにアップデートされます。)

次に、Metaのヘッドセットで AR Foundation を機能させるため、Add package by  nameで ”com.unity.xr.meta-openxr” と書いて、
Unity OpenXR Meta」というパッケージをインストールします。

追加されていることを確認。

XR Interaction Toolkitの方で、Samplesから AR Starter Assets というAR開発を始めるためのサンプルがあるのでこれをインポートします。

これで必要なパッケージはそろいました!

MR機能が使えるよう設定していきます。
まず、Questでパススルー機能が使えるよう、XR Plug-in Management > Androidタブで、”Meta Quest feature group” にチェックを入れます。

OpenXRの設定で以下のよう項目にチェックが入っているか確認します。

※補足
「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)” にしてください。

URP用の設定
Built-inとは異なり、URPではグラフィックの設定を少し変更する必要があります。Graphics設定にアタッチされているRendering Pipeline(今回は “URP-HighFidelity”)を開き、

Terrain Holes” と ”HDR” のチェックを外してください。

そして、上のRendering Listの “URP-HighFidelity-Renderer” を開き、
Post-processingのチェックも外して無効にします。

以上でURP用の設定は完了です。

それでは最後に、unityシーンでビルド出来るようにセットアップします。
先ほどテストした “HandsDemoScene” を用います。

Hierarchyで右クリック、XR > AR Session を追加します。

XR Origin (XR Rig)にAdd Componentで、AR Plane Manager を追加します。

AR Plane Managerに “AR Feathered Plane” というオブジェクトをアタッチします。

補足
AR Feathered Planeは、検知した平面をドットで表示するオブジェクトですが、現実世界だと少し見えずらく邪魔だったので、このマテリアル “FeatheredPlaneMaterial” のTexture Tint ColorのAlpha値を0にします。

次に、カメラの設定です。
Main Cameraを開き、Environment/Background Type を Solid Color に変更、Backgroundのカラーを真っ黒 & Alpha値を0 (r,g,b,a = 0,0,0,0) にします。

そして、Output/HDR RenderingをOffにしておきます。
(※Offにしないと画面が真っ暗に...)

最後に、カメラにAdd Componentで AR Camera Manager, AR Camera Background の二つを追加します。

これですべてのセットアップが整いました!
ビルドしてMRをテストしてみましょう!

▼次回:SAO・UIを導入

続きはこちら:


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