Oculus Quest 2で Unity のサンプルVRアプリを実行する


## 概要

- Oculus Quest 2でUnityのサンプルVRアプリを実行するまでの手順。
- スマートフォンはAndroid 10、開発環境はMac（macOS Big Sur）。
- 以下のサイトを参考に、Macで開発手順をなぞった程度。
	- [Unity + Oculus Quest 2 開発メモ](https://framesynthesis.jp/tech/unity/oculusquest/)

## 1. セットアップ

### 1.1. Unity Hubのインストール

1. [Unity公式サイト（日本語）の個人向けプラン](https://store.unity.com/ja#plans-individual)から、Personalの「はじめる」をクリックする。
2. 「新規ユーザー」の「始めよう」をクリックする。
3.  利用規約を確認し、「同意してダウンロード」をクリックすると、Unity Hubのインストーラーがダウンロードされる。
	- Unity Hubのインストール、またHubによるUnityのインストールがうまくいかない場合は、「リピートユーザー」のUnity Hubダウンロード画面から「Instration Assistant」をダウンロードしてUnityを個別にインストールすることもできる。
	- ただし、AndroidなどはSDK、NDKなどの外部ツールのバージョンを手作業で合わせることがあるため、うまくバージョン調整をしてくれるHubをなんとかインストールする方が無難。
4. ダウンロードしたインストーラーを起動し、規約に同意、Applicationフォルダにドラッグアンドドロップでインストールする。

### 1.2. Unity IDの初期設定

1. Unity Hubを起動する。
2. 画面の指示に従い、Unityのインストール、Unity IDを作成する。
3. マイクロゲームは「3D」を選択する。
4. Unityが起動する。（一旦ここまで）

### 1.3. Unityのインストール

- 初期設定で、最新LTSのバージョンがインストールされている。
- 他のバージョンや追加モジュールをインストールする場合は、Unity Hubを使用する。

1. Unity Hubを起動する。
2. 画面左の「インストール」を開く。
3. 右上「インストール」をクリックする。
4. 画面の指示に従い、Unityをインストールする。
	1. Unityのバージョンを選択する。
	2. モジュールをインストールに加える。
		- ここでモジュールを選択するが、失敗する場合は本体のみインストールし、ログで
		- ログはUnity Hubの右上のアカウントから、「トラブルシューティング > ログフォルダーを開く」で参照できる。
	3. 「実行」をクリックする。

### 1.4. プロジェクトの作成

1. Unity Hubを起動する
2. 左メニューの「プロジェクト」の「新規作成」にて、対象のUnityバージョンをクリックする。
3. VRの場合はテンプレート「3D」を選択し、「プロジェクト名」と「保存先」を記入し、「作成」をクリックする。
	- プロジェクト名は数字はじまりなどはNG（ビルドできない）
4. Unityが起動すれば完了となる。


## 2. サンプルVRアプリのビルド

- [参考動画:【xR Tech Tokyo枠】xR Developers Community Conference](https://youtu.be/37I1ZATbGew?t=4796)

### 2.1. アプリの設定

1. Unity Hubから"2020.3.5f1"でプロジェクトを作成する。
	- Android Build Supportを追加する。
	- 一緒に追加するとインストールが終わらなかったため、本体をインストール後、モジュールの追加でインストールした。（固有の問題？）
2. gitでバージョン管理をする。
	- 設定が複雑なことと、設定変更やビルドにかなり時間がかかるため、gitで戻れるようにしておくと便利。
	- ``.gitignore``は以下としている。

		```
		/Library
		/Logs
		/Temp
		```

3. プロジェクトの設定をする。
	1. 「File > Building Settings」を開き、以下を設定する。
		- Android
			- Texture Compression: ASTC
			- 「Switch Platform」を実行する
	3. 「Building Settings」の左下の「Player Settings」、<br>または「Edit > Project Settings」で「Player」を選択し、以下を設定する。
		- Company Name: 任意
		- Product Name: 任意（数字始まりなどはNG）
		- Other Settings
			- Color Space: Linear
			- Vulkan→削除
			- Package Name: （Company Name、Product Nameを確認）
			- Minimum API Level: Pie 28（参考サイトは23）
			- Scripting Backend: Mono
				- リリース時はIL2CPP、Target ArchtectureをARM64にしないと審査が通らないが、ビルドがかなり時間がかかる。
				- 今回は軽くするためMono、 ARMv7にする。
4. Oculus Integrationをインストールする。
	1. 「Window > Asset Store」を開く。
	2. 「Search Online」をクリックし、ストアを開く。
	3. ストアで「Oculus Integration」で検索し開く。（結果の2つ目にある）
	4. 「Open In Unity」をクリックし、Package Managerに読み込む。
	5. Package Manager右下の「Download」をクリック、その後「Import」をクリックする。
	6. Importリストで不要なコンポーネントは除く。（Avatar、LipSync、SampleFramewokなど）
	7. Importをする。Upgradeを求められれば実施する。
5. 必要なパッケージをインストール、設定する。
	1. Package Manager右上のPackagesで「Unity Registory」を開き、以下をインストールする。
		1. 「XR Plugin Management」を選択し、「Install」をクリックする。
		2. 「Oculus XR Plugin」を選択し、「Install」をクリックする。
	2. 「Edit > Project Settings」を開き、以下を設定する。
		1. XR Plugin Management
			- Android > Plugin Providor: Oculus
			- PC > Plugin Providor: Oculus
		2. XR Plugin Management > Oculus
			- Android > Stereo Rendering Mode: Multiview
			- PC > Stereo Rendering Mode: Single Pass Instanced


- ここで、PC/Mac用のアプリであればビルドができる。
- PCは「Building Settings」でPCを選択して「Build & Run」を実行する。

### 2.2. Oculus Quest 2 の開発者モード化

1. スマートフォン（Android）にOculusアプリをインストールし、画面の指示に従い、初期設定を行う。
	- [Quest 2スタートガイド](https://support.oculus.com/795778631158860/?locale=ja_JP)の「Oculus Quest 2ヘッドセットを設定するには、どうすればよいですか。」を参照。
	- Oculus Quest 2とOculusアプリがペアリングするところまで実施する。
2. Oculusアプリを開き、右下の「設定」を開く。
3. 接続されている Oculus Quest 2をタップで開いて「その他の設定」を開く。
4. 「開発者モード」を選択し、「オン」に変更する。

### 2.3. アプリのビルド

1. Oculus Quest 2をUSB Type-CケーブルでPCに接続する。
2. Oculus Quest 2の画面に「USB デバッグを許可しますか？」などいくつかダイアログが出るので許可する。
3. 2.1で作成したUnityプロジェクトにて、``Assets > Oculus > VR > Scenes > ControllerModels``（VRのサンプル）を開く。
4. ``File > Building Settings``を開き、「Build & Run」を実行する。ダイアログなどが出たら許可する。
5. Oculus Quest 2にアプリが表示されればビルド完了。
6. 終了するときはQuest 2側で、アプリを閉じる。