Quest3でのDepth API ver.0.1.0を用いたDynamicOcclusionアプリのセットアップ
この記事では2023年10月15日現在、UnityにてDepth APIを利用したDynamic Occlusionを行うアプリの作成セットアップ方法を解説します。
できるだけ初心者の方でもわかるように画像多めで解説します。
初期のパススルーアプリ制作の際と同様に、
DepthAPIの動作確認には毎回ビルドしてQuest3でRunする必要があります
(UnityのPlayモードでデバッグできません (もしかしたら私が間違っているだけかもです 有識者の方々教えてください))
環境
- UnityHub 3.5.2
- Unity 2022.3.11f1
- Oculus Integration SDK v57
0. Unityプロジェクトのセットアップ
1. UnityHubで新たなUnityプロジェクトを作成
通常の「3D Core」テンプレートでプロジェクトをCreateします。
2. ヒエラルキーの初期オブジェクトを削除
3. プラットフォームをAndroidに変更
左上のFile -> BuildSettingsを開き、画像のように「Android」で、
- Texture CompressopnをASTC
- RunDeviceを All Compatible device
- Development Builにチェック(これは正式版では外す)
のように設定して, 「Switch Platform」を実行する
ここまでで最低限の準備は完了
1. Depth API 0.1.0とOculus Integration v57のインストール
1. Oculus XR Pluginのインストール
Window -> PackageManagerを開く
左上の「+」ボタンを押し、
"Add package by name..."を選択
画像のように
name -> com.unity.xr.oculus
version(optional) -> 4.2.0-exp-env-depth.1
と入力して Add を押す
するとPackagesに
Oculus XR Plugin
が追加され、Assetsに
XR
が追加されている
2. Depth API ver.0.1.0のインストール
ここでDepthAPIをインストールするが、ついでにOculusIntegration ver.57の一部もインストールされる
左上の「+」ボタンを押し、
今度は"Add package from git URL..."を選択
URL欄には
https://github.com/oculus-samples/Unity-DepthAPI.git?path=/Packages/com.meta.xr.depthapi
を入力し Add
*ここでもしURPでプロジェクトを作成している場合は同様の手順で
https://github.com/oculus-samples/Unity-DepthAPI.git?path=/Packages/com.meta.xr.depthapi.urp
もAddする
(初心者の方は飛ばして大丈夫です)
いろいろポップアップが出てくるので言われるがままにボタン押していく
(↑これはどっちでもOK)
すると
PackageにMeta XR Utilitis SDKが追加され、AssetsにOculusとResoursesが追加される(↓の画像参照)
3. Oculus Integration SDKの残りをインストール
ここのパートは必要に応じてだが、初心者のうちは一通りインストールしておくのが無難です
windows -> PackageManagerを選択
左上の「+」ボタンを押し、MyAssetsを選択
OculusIntegrationを選択し、「Import」
もしここでOculusIntegrationが見つからなかった場合下記詳細参照
https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022?locale=ja-JP
からマイアセットにOculusIntegrationSDKを追加してください
ここでOculusProjectConfig.assetsのチェックを外してインポート
(こいつを2重で上書きインポートするとうまく動かない。。。気がする)
以上で必要なアセット系統のインストールが完了
2. Oculus Project SetUp Toolを使って細かい部分の設定
OculusIntegration v57からこれまで面倒だった細かい設定を一挙にやってくれるセットアップツールが実装されました。これを使います
1. 右下のオキュラスマークを押し、Project SetUp Toolを選択します
2. Androidタブを選択し、FixAllとApplyAllをクリック
3. PCタブを選択し、FixAllを選択
4. XR Plug-in Managementの設定
同じ"Project Setting"画面の、
左下の「XR Plug-in Management」を選択し
画像のようにPCタブのOculusチェックボックスにチェックが入っていることを確認
もしここにチェックが入っていないとUnityのPlayで直接デバックできません
5. 追加の細かい確認
同じ"Project Setting"画面の
左下の「XR Plug-in Management->Oculus」を選択し
AndroidタブとPCタブでそれぞれ画像の設定になっているか確認
以上でDepthAPIを用いた開発のセットアップは完了です。
3. サンプルデモアプリの作成
Oculus Integration v.57より追加された「Building Blocks」を用いて簡単なDynamic Oculusionを用いたアプリを実装します。
1. Building Blocksの起動
右下のオキュラスマークを押して、Building Blocksを選択
2. パススルーのハンドトラッキングアプリを構築
- Background Passthrough
- Grabable Item
をAddする
すると下記の画像のように - [BB] Camera Rig
- [BB] BackGround Passthrough
- [BB] Grabable Item
がヒエラルキーに追加されている
ここでCameraRigの「OVR Manager(Script)」コンポーネントの設定が画像のようになっているか確認
ここまでで「パススルーのハンドトラッキングアプリ」が実装できている
Quest3をUSB CケーブルでPCに接続しQuestLinkでPCVRモードにした状態でUnityのPlayモード(再生ボタン)を押すことで動作確認できる
Unity上でのこの動作確認ではパススルーはカクカクの非常に重いです
もしパススルーができない場合はOculusアプリの設定を確認してください
3. DynamicOcclusionの実装
Packages(Assetsじゃないので注意) -> DepthAPI -> Core -> Prefabs
内の
「EnvironmentDepthOcclusion」
をヒエラルキーへドラッグドロップ
ヒエラルキーへ追加される↓
「EnvironmentDepthOcclusion」の「Environment Depth Occlusion Controller(Script)」コンポーネントでオクルージョンの種類を選択(SoftOcclusionは処理重め)
DynamicOcclusion用の新たなマテリアルを作成
マテリアルのシェーダーを
「Meta/Depth/BiRP/Occlusion Standard」に変更
作成した新規マテリアルをヒエラルキーにある「[BB]Grababble Item」にドラッグ&ドロップして適用する
[BB]Grabbable Itemのマテリアルが作成した新規マテリアルに変わっていることを確認
以上でデモアプリの作成が終了!
4. デモアプリのビルドと動作確認
再度Quest3をUSB CケーブルでPCに接続し、
File -> Build Settingsを開き、
Build And Runを実行
ファイル名を設定してapkファイルを保存
Depth APIはExmentalのため、Experimental featureを実行可能にするか聞かれるのでYesを選択
ちなみに作成したアプリはアプリ検索->提供元不明 のところにある
ちなみにExperimental featureはQuest3の電源を切るたびに実行できなくなるので、以後は毎回
adb shell setprop debug.oculus.experimentalEnabled 1
コマンドでテスト機能を有効にする必要があります
https://developer.oculus.com/experimental/experimental-overview
以上、DepthAPIによるDynamicOcclusionはMixedRealityの新たな世界を切り開く大きな機能ですので、正式リリースを楽しみに待ちましょう