UnityとMeta Quest2 / Pro でMR表現を試す(1)

# はじめに
[第12回VRフェス](https://vracademy.jp/vrfestival/ "VRフェス")に[出展した作品](https://github.com/b0bmat0ca/PullTheRope "Pull The Roep")でMeta Questの Passthrough API と シーンモデルを利用したMR作品を制作したので、備忘録として、パススルーとシーンモデルの設定方法を記事にします。

:::note info
今回は、環境構築～パススルー設定までの記事となります
:::

# 環境
* Unity 2022.2.11
* Oculus Integration v.50

# 環境構築
## Unity Projectの作成
URPで作成していきます
![スクリーンショット 2023-03-24 083010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/0e36582b-4795-279e-8af2-a100c4559c8c.png)

## プラットフォームをAndroidに変更
File > Build Settingsメニュー
![スクリーンショット 2023-03-24 083512.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/4bc5a425-1383-456e-86f8-54ed85a70ff8.png)

## Project Settingsの設定
Edit > Project Settingsメニュー

### Player
1. Company Nameを適当な一意のものに変更
![スクリーンショット 2023-03-24 083928.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/cc859672-8746-b21b-5927-96715d8ab8c1.png)
1. Other Settingsの項目を修正
Quest Pro であれば、Minimum API Level は、Android 10.0 にしてしまっても問題ありません。
![スクリーンショット 2023-03-24 084211.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/35ca02a0-0b54-5d61-390c-3e8329333c48.png)

### Graphics
Scriptable Render Pipeline Settings を「URP-Balanced」に変更
![スクリーンショット 2023-03-24 084332.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/666a8afd-8362-8979-48fe-c1d84edbe92d.png)

### Quality
1. Balancedに変更
![スクリーンショット 2023-03-24 084407.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/dc2d6e6b-4929-c01a-d3ba-ec0f0b1c30f8.png)
1. URP-Balanced-Rendererファイルの修正
Projectウインドウ
Assets > Settings > URP-Balanced-Renderer
Screen Space Ambient Occlusionの設定を外す
![スクリーンショット 2023-03-24 084846.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/f1cb3956-68cc-6367-a1ec-6a3c849066ba.png)
:::note info
この設定を変更しないと、Questの実機でFPSが極端に下がります
:::

### XR Plugin Management
1. XR Plugin Management をインストール
![スクリーンショット 2023-03-24 084532.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/eb8f74eb-f479-223f-7f71-2f9ea25b9595.png)
1. Oculusのプラグインにチェック
![スクリーンショット 2023-03-24 084654.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/63f313c4-d8a2-b72d-a55e-1c7feca5469c.png)
1. Oculusを選択
Quest Proの場合は、Quest Proにチェック
![スクリーンショット 2023-03-24 084722.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/b6388019-f76f-ba09-e52d-949ffc3c3046.png)

## Oculus Integrationのインポート
Window > Package Managerメニュー
1. My Assets から　Oculus Integrationを探してインポート
![スクリーンショット 2023-03-24 085140.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/b514aa0e-007b-5c34-45e5-9549788d8f5b.png)
:::note info
Unityアセットストアで購入(無料です)していない方は、先に購入してください
:::
1. 以下のパッケージを選択してインポート
OculusProjectConfig.asset と VR は必須です。
それ以外は、必須ではありませんが、有用なのでインポートしておきます。
![スクリーンショット 2023-03-24 085321.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/bad02994-5ba8-12aa-9ed1-5c682b8977ba.png)
1. 以下の選択肢を選ぶとUnityが再起動します
![スクリーンショット 2023-03-24 085506.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/dccf8715-a081-e7aa-32eb-73084c5eeaac.png)
![スクリーンショット 2023-03-24 085529.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/6c8f2ff3-2b71-bfaf-258b-63302ecb0869.png)
![スクリーンショット 2023-03-24 085556.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/db7d152e-5c94-71ad-e9c2-9959c3765140.png)

# パススルーの設定
ここからが本題のパススルー設定となります。
## パススルー用にシーンを作成
File > New Sceneメニュー
![スクリーンショット 2023-03-24 085717.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/bc2fa861-5d74-a0d2-2e58-b96862b2b79c.png)

## Main Cameraを削除して、OVR Camera Rigを設置
Assets > Oculus > VR > Prefabs > OVRCameraRig
![スクリーンショット 2023-03-24 085938.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/785a85d0-9afe-9c90-3441-c6a0f5514f0b.png)

## OVR Camera Rigの設定
### OVR Managerコンポーネント
Passthrough Support を「Required」or 「Supported」に変更すると「Enabled Passthrough」の項目が出現するのでチェックする
![スクリーンショット 2023-03-24 090434.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/0914e5cd-5e85-8e67-c627-b7538c38b9c5.png)

### OVRPassthroughLayerコンポーネントをアタッチ
Assets > Oculus > VR > Scripts > OVRPassthroughLayer
Placementを「Underlay」に変更する
![スクリーンショット 2023-03-24 100411.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/c44d1abc-1d1e-bb8d-180a-58652ccd5e2f.png)

:::note info
現実世界のレイヤーとなるため、「Underlay」に設定することで、CGのレイヤーの下に配置される
:::

## SkyBoxの設定をクリア
このままだと、SkyBoxが現実世界の上に表示されるため、SkyBoxをクリアします
Window > Rendering > Lightingメニュー

Skybox Material を削除して、環境光を0にしてしまいます
![スクリーンショット 2023-03-24 124736.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/b046e058-08d0-5d96-83d7-f04d316c474e.png)

## 適当にCGを配置してビルド
![スクリーンショット 2023-03-24 125400.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/d76cf6c0-c5f6-1a33-5f61-1742acf150be.png)

## Quest Proでの実行結果
![com.b0bmat0ca.Passthrough-20230324-124559.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729904/3622ecfa-81b5-1cd6-901f-2ef94a3c6e8d.jpeg)

参考になれば、幸いです。
次回は、シーンモデルについて記事にします。