ARクラウドプラットフォーム Pretia のお試しメモ

ARクラウドプラットフォーム Pretia が正式ローンチされました（[プレスリリース](https://prtimes.jp/main/html/rd/p/000000043.000035730.html)）。
このためPretiaをお試ししつつメモしていこうと思います。
※お試ししたところから随時更新していきます。

# Pretiaとは
>　Pretiaは、AR開発者の皆さまの現実空間に永続するARコンテンツ開発を支援するプラットフォームです。セットアップが非常に簡単で、多人数共有機能が充実していることが特徴です。そのため、従来開発が難しかったロケーションベースのマルチプレイ体験などのコンテンツを、煩雑なバックエンド開発を行う必要なく、より手軽に開発することが可能になります。

参考サイト：[ARクラウドプラットフォーム「Pretia」のオープンβ版事前登録を開始｜プレティア・テクノロジーズ株式会社のプレスリリース](https://prtimes.jp/main/html/rd/p/000000028.000035730.html)

>この度正式にローンチする ARクラウドプラットフォームPretiaは、「現実とARの乖離」「複数人での同時AR体験」「開発コスト」の3つの課題を解決するサービスです。現実の物理法則に沿い、複数人で同時に体験できるAR体験を、低コストで開発することが可能になります。

参考サイト：[リアルとメタバースの融合を加速へ。ARクラウドプラットフォーム「Pretia」をグローバル* で正式ローンチ。｜プレティア・テクノロジーズ株式会社のプレスリリース](https://prtimes.jp/main/html/rd/p/000000043.000035730.html)

ロケーションベースのマルチプレイ体験を手軽に作成できるようです。NianticのLightship ARDKなどもマルチプレイは対応していますが、VPS（Visual Positioning System/Service)は対応していないのでPretiaが優位そうです。

公式ドキュメントに[開発ガイドライン](https://docs.developers.pretiaar.com/ja/tutorials/getting-started/step-by-step-guideline)が公開されているため、正確な情報は[開発ガイドライン](https://docs.developers.pretiaar.com/ja/tutorials/getting-started/step-by-step-guideline)をご覧ください。

# デベロッパー登録
Pretiaのサイトの「登録する」から登録すればよさそうです。
[Pretia](https://arcloud.pretiaar.com/)
※筆者はオープンβ版で登録していたのでこの辺りはわかりませんでした。

# 開発者コンソール
[ログイン画面]（https://developers.pretiaar.com/login）より開発者コンソールにログインします。
開発者コンソールはこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/5b54dfc5-59c3-711a-2c66-dce3cd12af5f.png)
それぞれ詳細な説明が表示されたので記載しておきます。
- アプリ : アプリを作成し、マップとの紐付けができます
- マップ : アップロードしたマップをここから確認できます
- ダウンロード : 3Dスキャナアプリをここからダウンロードできます
- 開発者ガイドへ : 開発ドキュメント、チュートリアルを確認できます

# 開発者ドキュメント
[開発者ドキュメント](https://docs.developers.pretiaar.com/ja/)に「Pretiaについて」や「チュートリアル」などまとめられています。

- [要求スペック](https://docs.developers.pretiaar.com/ja/about/requirements)
- [リリースノート](https://docs.developers.pretiaar.com/ja/about/release-notes/)

# 開発してみる
開発の流れは[公式ドキュメント](https://docs.developers.pretiaar.com/ja/tutorials/getting-started/)にある通り下図の手順で行う。
![dev-journey-jp.png](https://docs.developers.pretiaar.com/ja/assets/images/dev-journey-jp-e43ee545ebb19b414d7010b39412ae77.png)

## 空間マッピング & アップロード
まずは空間をマッピングするために、3DスキャナアプリをAndroid端末にインストールしてスキャンを行う。
3Dスキャナアプリは開発者コンソールのダウンロードから、Android端末にインストールする。
QRコードが表示され、Android端末で読み込むだけでダウンロードできインストールできる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/cdea0582-4455-ccef-097d-a3f690af3843.png)

1. インストールした後にアプリを起動
1. 設定からチームを確認（複数チームがある場合、正しい場所にアップロードするため）
    <img width="200" alt="Screenshot_20220502-155856.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/a75d0c4c-72c7-9ff2-02ff-1036d8119097.png">

1. 新規マッピングをからマッピング開始
    <img width="200" alt="Screenshot_20220502-154650.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/5cf3b5ec-a490-f10b-6f0f-8f70e6bb787d.png">

1. 周辺をスキャンした後、画面をタップしてUnityでコンテンツを配置する際に基準とするためのアンカーを配置
    <img width="200" alt="screen-20220502-162645_exported_14121.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/6ee791e0-235f-1b9e-bb32-91a5c3642379.jpeg"> <img width="200" alt="screen-20220502-162645_exported_39319.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/b6fa2458-7e29-6337-6cd7-9114031ce0a1.jpeg">

1. 保存からマップの名前を入力
    <img width="200" alt="screen-20220502-162645_exported_53994.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/3f80881e-fc0c-58d1-6c83-f026c80ea46f.jpeg">

1. グループを選択した保存
    <img width="200" alt="screen-20220502-162645_exported_64022.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/442762c6-ae05-f80b-480d-5f4ff53611cd.jpeg">

    1. グループがない場合は新規グループを作成する（グループでマップのグルーピングができる模様）
        <img width="200" alt="screen-20220502-162645_exported_57440.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/17a94cf0-c915-41f8-8232-8ca2d2b0c35c.jpeg"> <img width="200" alt="screen-20220502-162645_exported_62637.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/c25a80e3-f736-b574-593e-fa36dceb6823.jpeg">

1. 開発者コンソールのマップでアップロードされていることを確認
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/c2d4c344-336e-ae91-662f-dc562bc961a0.png)
    1. 「閲覧」の中にある「3Dで見る」を確認したところこんな感じ
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/074c323c-5f5e-9a87-e850-481c799336dd.png)

# アプリ登録とマップの紐付け
これから作成するアプリを開発者コンソールに登録し、マップと紐付けを行います。

1. 開発者コンソールのアプリタブから「新規アプリを追加」を選択
    ![スクリーンショット 2022-05-02 22.02.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/4fc583db-7c9c-8d92-6542-a67bce4d099b.png)

1. アプリ名を入力して「Create」
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/751a6579-c775-c627-8b59-44ac9d27efb2.png)

1. マップタブで作成したマップを選択し、「設定」を選択
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/879b73b2-5e96-6e71-664c-45777b3e5f4e.png)

1. アプリを選択して保存
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/67f510d6-3f6a-78a0-7003-8571d10203c9.png)

# マップをUnity上へインポート

UnityでPretiaを使用する場合はunitypackageをインポートするのではなく、特殊な方法でインポートする必要があるようです。
詳細は[公式ドキュメント](https://docs.developers.pretiaar.com/ja/tutorials/getting-started/step-by-step-guideline#pretia-sdk-%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%AC%E3%82%A4%E3%83%89)に記載があるためこちらに沿って行います。

1. Unityで新規プロジェクトを作成します。バージョンは[ソフトウェア要件](https://docs.developers.pretiaar.com/ja/about/requirements#%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E8%A6%81%E4%BB%B6)に記載がある2020.3LTSということで、手元に入っていた2020.3.28LTSを使用します。
1. 公式ドキュメントの[Pretia SDKをインポートする](https://docs.developers.pretiaar.com/ja/tutorials/getting-started/step-by-step-guideline#pretia-sdk%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B)の通りに、Package/manifest.jsonに追記（"scopedRegistries"はなかったので追加）

    ```
    {
      "dependencies": {
        "com.pretia.sdk": "0.5.2",
        ...
      },
      "scopedRegistries": [
        {
          "name": "Pretia Technologies",
          "url": "https://registry.npmjs.com",
          "scopes": [ "com.pretia" ]
        }
      ]
    }
    ```

1. Unityを開き直すとPretiaが追加されている
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/0c9a8463-560a-5364-f9eb-1b205b64bfdf.png)

1. メニューバーに追加された[Pretia] - [Sdk Setup]を開き、「App Key」、「Username」、「Password」を入力してログイン
    1. 「App Key」は開発者コンソールのアプリタブから作成したアプリを開くと確認できる
1. [Pretia] - [Map Download]からインポート
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/928eca40-23b4-e413-1b4a-b6799c417acc.png)
    ![スクリーンショット 2022-05-03 22.12.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/3daf0434-ee93-76ea-fb89-84a8ae06b647.png)

1. 開いているシーンに追加される
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/fa4feb27-5c03-b7f0-af31-4b78c86550fc.png)

# サンプルプロジェクトの利用
サンプルプロジェクトを動かそうと思います。

1. [公式ドキュメント](https://docs.developers.pretiaar.com/ja/tutorials/samples/import-sample-projects)の通りに「Map-based Relocalization Sample」をimportする
1. [Assets] - [Samples] - [Pretia SDK] - [(バージョン)] - [Map-based Relocalization Sample] - [MapSelectionStrategy]にある「」を開き、「Map Key」を入力
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/d2b9a8b6-036a-aa15-160f-00998bd9159d.png)
    1. 「Map Key」は開発者コンソールのマップタブから作成したマップの「閲覧」から確認できる

# ビルドと実行
[公式ドキュメント](https://docs.developers.pretiaar.com/ja/tutorials/building-your-app/building-for-android)の通りにAndroidのビルドを行います。

## ビルド
Project Settingsを下表のように設定します。

| Player Settings - | 設定値 |
|:-----------|:------------|
| XR Plug-in Management | Plug-in Providers の ARCore にチェック |
| Player | AutoGraphics API のチェックを外す |
| Player | Graphics APIs の Vulkan を削除 |
| Player | Multithreaded Rendering のチェックを外す |
| Player | Minimum API Level を Android 7.0 (Api Level 24) にする |
| Player | Scripting Backend を IL2CPPにする |
| Player | Target Architectures の ARM64 にチェック |

## 実行
動いた！！

<img width="200" alt="screen-20220505-224237_exported_6254.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460904/8dadb5b5-4a30-f6e1-1c08-ec38ae916e32.jpeg">