Unity Marsで実世界のオブジェクトとリンクさせたARコンテンツを作成する


# UnityMarsとは

ARコンテンツを表示する際に、現実世界にうまくシンクロすることで、様々な視覚効果を生み出すことができます。
かつてはARマーカーなどをきっかけとして、3Dコンテンツを表示させていたものを、VPSでは風景などの特徴点を活用することで現実世界にオブジェクトを重ねて、MixedRealityという世界観を生み出すことが可能となります。
こうした手法について、例えば、8thwallでは、下記のようにWayfairと呼ばれるアプリから吸い取った情報を位置情報に紐付けて３Dオブジェクトを生み出すきっかけにしています。

![スクリーンショット 2024-04-30 9.54.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/7e0e86bc-e66a-dab7-9c45-2b593c1501f8.png)

様々な手法がある中で、Unity Marsでは、少し特徴的なオブジェクトの呼び出しを行っています。

https://docs.unity3d.com/ja/Packages/com.unity.mars@1.5/manual/MARSConcepts.html

![スクリーンショット 2024-04-30 15.02.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/e5aa13ef-1d36-57e7-ea09-7c9c0a0aadfb.png)

上記のドキュメントを参照するとProxyGroupと呼ばれる概念が書かれていますが、これがMarsの非常に特徴的な機能で、複数の平面をグループ化させることで、建物の中などで、自己位置を推定して正確にARコンテンツを表示することが可能となります。8thwallでは、風景そのものを吸い取っていたことに対して、Marsではオブジェクトの位置情報の組み合わせによって表現しています。

# UnityMarsのインストールと実機ビルドまで

## 0.UnityMarsの購入

### 無料トライアルを選択
https://store.unity.com/configure-plan/unity-mars?free_trial_product=true
https://store.unity.com/ja/configure-plan/unity-mars?free_trial_product=true

### メールが送られてくるので、MARS_Installer.unitypackageをダウンロードする

### Unityで購入したアカウントでログインしておく

## 1.Unityのプロジェクトを作成する

### ARMobileのプロジェクトを作成する

![スクリーンショット 2024-04-24 14.40.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/e2a7a6da-8cd7-b5e0-043b-a462b2b02da6.png)

### プロジェクトが出来上がる

![スクリーンショット 2024-04-24 14.48.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/7abce58a-f00c-eb7a-d96f-dc05a8a46381.png)

## 2.UnityMarsのインストール
### アセット > パッケージをインポート > カスタムパッケージでMarsInstallerを選ぶ

![スクリーンショット 2024-04-24 14.50.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/190d4530-d299-1427-116c-e3e56cca5e5d.png)

###　MarsInstallerをインポートする

![スクリーンショット 2024-04-24 14.50.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/a13856ee-edcd-37d2-0c89-15e6123313bc.png)

### ウィンドウ > MARS が表示されていることを確認

![スクリーンショット 2024-04-24 15.01.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/04f14491-f821-1ea9-c92d-dbeeadb0c23e.png)


###  ウィンドウ > MARS > ChooseTemplate

![スクリーンショット 2024-04-24 15.03.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/e5bfd8f1-c3ab-00f5-513d-85cbc129c89c.png)


### templateに何も入っていないので、AddTemplatesから必要なものをinstallする

![スクリーンショット 2024-04-24 15.03.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/09cfea2c-235b-5d02-3c2c-5168fd3a1238.png)


### Importする

![スクリーンショット 2024-04-24 15.04.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/aa2bc823-2413-de03-8460-17caf290a036.png)


## 3.サンプルプロジェクトの作成

### table topをダブルクリック

![スクリーンショット 2024-04-24 15.05.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/2dd1c8d1-a979-dd4c-eeb1-81abfc383268.png)


## 4.実機でビルド

### simulation viewと mars panelをセット

![スクリーンショット 2024-04-24 15.26.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/c4a707aa-c12f-0685-cd2a-689db812f2c7.png)

### APIレベルの設定
![スクリーンショット 2024-04-24 15.29.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/670239f4-2de6-125b-086f-d81222e9652d.png)



## Simulation Environment (仮想空間でのシミュレーション設定)

Marsの中では、様々なシミュレーション環境を設定することができます。
あらかじめ、用意されたキッチンやリビングなどのサンプルを変更させて作ったり、既存の空間をスキャンして平面を自動生成することなども可能です。

### あらかじめ用意されたサンプルの環境を読み込む
![スクリーンショット 2024-04-30 8.59.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/e44adff3-d9b2-23a9-a690-bbe9e75af832.png)

### 
![スクリーンショット 2024-04-30 9.00.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/f84eccf1-3926-1bac-98c4-68a1d98b261a.png)

### 
![スクリーンショット 2024-04-30 8.59.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/1ba95133-0690-7ea1-74c2-baa3a73482fc.png)


##  Simulated Environment Prefab 

### scaniverseで撮影したobjを読み込む

![スクリーンショット 2024-04-30 15.28.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/488d88d7-2f58-5d6e-878b-61bec9009ebf.png)


### コンポーネントを追加 -> Plane Extraction Settingsを追加
![スクリーンショット 2024-04-30 15.28.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/27da8b09-ee87-f75d-f1b1-3730ba7b5361.png)


### Extract Plancesを押下する

![スクリーンショット 2024-04-30 15.28.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/32516e66-4197-f942-46e0-8376af10d5a1.png)


### 自動的に平面が検知されている状態になる

![スクリーンショット 2024-04-30 16.14.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43766/f4071c40-e655-d32a-8025-755f551a6479.png)


# リンクの方法

https://docs.unity3d.com/ja/Packages/com.unity.mars@1.5/manual/Rules.html




# AR コンパニオンアプリ
https://docs.unity3d.com/Packages/com.unity.mars-companion-core@0.3/manual/MARS-companion-mobile.html

https://apps.apple.com/us/app/unity-ar-companion/id1600802274