[Unity×AR]AR Foundation5.0をURPで使う方法(Android)

## 初めに
今回、株式会社GENEROSITY様でインターンシップをさせていただき、その中で行った開発について記事を書いていきます！
他にもいくつか記事を書いたので、他の記事も見ていただけると嬉しいです！

他の記事
・

## 本記事を読む前に
この記事では、Unityのインストールなどについては記述しません。インストールが終わっている前提で進めていきます。インストールについては下記のリンクから行ってください。

https://unity.com/ja/download

## 本記事で出来ること
・Unity 2021
・AR Foundation 5.0
・URP
・Android
この場合でのセットアップ

iOSでのセットアップにつきましては、こちらの記事を参照ください。

https://qiita.com/Aster_ideatech/items/fa843c6ab0c11b610c27#universal-rp%E3%81%AE%E5%B0%8E%E5%85%A5

# 目次

[1.事前準備](#事前準備)
[2.AR-Foundationとは](#ar-foundationとは)
[3.ARの導入](#arの導入)
　[1.AR-Foundationのインストール](#ar-foundationのインストール)
　[2.AR-Coreのインストール](#ar-coreのインストール)
[4.Sceneのセットアップ](#sceneのセットアップ)
[5.URP対応](#urp対応)
　[1.URPアセット作成](#urpアセット作成)
　[2.プロジェクトの設定](#プロジェクトの設定)
　[3.ビルド設定](#ビルド設定)
[6.結果](#結果)
[7.まとめ](#まとめ)
[8.参考資料](#参考資料)

## 事前準備
Unityのインストールを行い、URPでプロジェクトを作成しておいてください。
今回は下記のような環境で実行しました

・Unity 2021.3.29.f1
・URP 12.1.12
・Windows 11

スマホ
・Android 13 (Galaxy S22)

## AR Foundationとは
AR Foundationはプラットフォーム共通のARアプリを開発するためのUnity公式パッケージです。
AndroidはAR Core、iOSではAR Kitと別のツールになっており、それぞれに対応した開発をしなければならないのですが、AR Foundationを使えば両方ともに対応しているため、開発が容易になるというメリットがあります。

https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@5.0/manual/index.html

## ARの導入
### AR Foundationのインストール
Package ManagerよりAR Foundationをインストールします。
左上のプラスボタンから"Add package by name"を選択してください。
![ar02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/521662cd-5c1c-fcac-dbb1-99c2bc6558cb.png)

Nameの欄に
```
com.unity.xr.arfoundation
```
Virsionに
```
5.0.7
```
と指定してください。

![ar03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/1ad97dd9-4542-2411-f71b-c2ef4c195878.png)

するとAR Foundationがインストールされます。

:::note warn
注意
Unity RegistryにAR Foundationがあるのですが、そちらはバージョンが4なので、今回は使用しません。
:::

### AR Coreのインストール
続いて、AndroidでARを動かすためのパッケージであるAR Coreをインストールします。
先ほどと同じく左上のプラスボタンから"Add package by name"を選択し、そこに
Name
```
com.unity.xr.arcore
```
Version
```
5.0.7
```
と入力してください。これでARの導入は完了です。

:::note warn
注意
AR FoundationとAR Coreのバージョンは同じものを使用してください。
バージョンが違うと動作しない場合があります。
:::

## Sceneのセットアップ
AR用にSceneをセットアップします。
まず、Scene上にAR SessionとXR Originを配置します。
![ar04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/6e175edc-1cbb-9b6e-95e2-a9a323f52f74.png)

そして、Main Cameraは必要ないので、削除します。
Scene上にARでみたいオブジェクトを配置します。
私はCubeを配置しました。

::: note warn
このとき、Scaleを小さめに設定しておいてください。Unityでは1が1メートルになるので、Size 1をARで表示するととても大きなオブジェクトが配置されます。
:::
![ar05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/d6f1ba89-4cfc-2280-8ab5-e3cc848d0cdd.png)

Sceneに設置するものは以上になります。

## URP対応
### URPアセット作成
ここからはURPを使用してARを行うための設定を行っていきます。
まず、AR用のURPアセットを作成します。
名前はわかりやすいものを設定してください。私は"AR-URP"にしました。

![ar06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/41b56256-3b6b-98d4-97cb-b29477b96865.png)

そして作成したアセットのうち、AR-URP_Rendererという名前のアセットを選択します。
インスペクター上からAdd Render Featureボタンを押し、AR Background Renderer Featureを選択します。

![ar07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/96af260d-a4d1-4a19-5dd2-4259421adf34.png)

するとこのように追加されると思います。
![ar08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/bb89978f-4436-aad2-18bd-0fb91cee73fd.png)

### プロジェクトの設定
Project Settingsを開き、その中のGraphicsの欄に移動します。そこに先ほど作成したURPアセットを入れます。
![ar10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/4d46a3f9-d0e6-ffe3-49e7-593e39ee30c2.png)

同じProject Settings内のQualityの設定に移動します。そこで、Balancedを選択しRender Pipeline Assetを作成したAR-URPに変更します。

::: note info
今回は、AndoroidがBalancedに緑のチェックになっているため、Balancedの設定を変更しました。もし違う部分に緑のチェックがあった場合には、そちらの変更をするか、Add Quality Levelで新しいLevelを作成してください。
:::
![ar11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/273ba4bd-b43c-baba-d118-ea5439769bb6.png)

その次に、XR Plug-in Managerに移動し、Google ARCoreにチェックを入れます。

![ar12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/7ac6af05-fb80-de85-615c-3d5829f74fd4.png)

これでプロジェクトの設定は終わりです。

### ビルド設定
ビルドを行うために変更する点がいくつかあるので、それを行います。
Project SettingsのPlayerに移動してください。
Other Settings内の Auto Graphics APIのチェックを外します。
そして、Graphics APIのVulkanをマイナスボタンを押して削除します。

![ar13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/e8ebac6a-147b-558b-b743-c0bc18a7b5da.png)

そのまま下に移動し、Minimum API LevelをAPI level 27以上に設定します。
Target API LevelはAPI level 33に設定してください。
Scripting Backendを MonoからIL2CPPに変更。
Target ArchitecturesのARM64にチェックを入れてください。

![ar14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/5cd0e2b1-4e11-3be8-aab8-ec3c1dbda4f3.png)

ビルドのための設定は完了です。

## 結果
ビルドを行うとカメラの権限を聞かれ、許可するとカメラが映る思います。
画像はトリミングをしていますが、周りを見渡すとどこかに設定したオブジェクトが存在していると思います。
それが確認出来たら成功しています。

![ar15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517131/334e5984-832d-0491-2b40-e88298592b2a.jpeg)

## まとめ
AndroidでのAR Foundationセットアップの記事が少なかったり、バージョンが違ってやり方が違ったりということがありました。この記事で、セットアップにつまずく人が少なくなり、AR開発が増えればなと思っています。

## 参考資料

https://qiita.com/Aster_ideatech/items/fa843c6ab0c11b610c27#unity-%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E6%BA%96%E5%82%99

https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@5.0/manual/index.html

https://vracademy.jp/development/ar-foundation-introduction/

https://note.com/npaka/n/n1f078c30eb40