【Unity】Pico Neo 3/Pico 4 VRアプリ開発 (1)  Pico SDK 2.3.0版

# はじめに
2023/9/22にPico 4が発表されました。
日本では10/7発売開始されています。

※2023/09/07追記
SDKのアップデートにより情報が古くなっていたので更新しました。

* PICO4で開発者モードになる方法はこちらを参照してください。

https://qiita.com/afjk/items/14085d944915334cffc5

* パススルーアプリの作り方はこちら。

https://qiita.com/afjk/items/5392349e5f13271ef25b

[旧記事はこちら](https://qiita.com/afjk/items/d524148be70211510d75)。

開発イメージが分かりやすいよう、手順をステップごとに詳細に記載しています。
* 公式ドキュメントに詳細な手順があります。こちらも参照してください。
　* https://developer-global.pico-interactive.com/document/unity/set-up-the-development-environment/

## 今回の開発環境
* Unity 2022.3.8f1
* PICO Unity Integration SDK v2.3.0

## SDKをDownload & UnityにImportする
Unityは事前にAndroidプラットフォームにSwitchしておいてください。

* SDK入手先
    * https://developer-global.pico-interactive.com/resources/?is_new_connect=0&is_new_user=0#sdk
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/45c9aa28-a8d0-b5d4-ee27-81026c48652d.png)
Download SDKボタンからダウンロードしてください。
Zipファイルになっているので解凍します。
PackageManagerで取り込める形になっています。
* Unityプロジェクトのpackageフォルダに解凍したフォルダを取り込む

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/49fa7ea5-caab-30a6-6e39-90b55caac8de.png)

* 新Input Systemに切り替えて良いか確認されます。Yesで。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/48c26c69-9d71-4a1e-4698-4c366b23a605.png)

* さらに、ダイアログでPlatformをAndroid、OrientationをLandscape Leftにして良いか聞かれるのでApply & Close
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/222dd87e-3fd2-f75f-cdc5-010aae4da1f4.png)

* PackageManagerでPico XR Pluginがインポートされている事が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/fef1247a-510a-01c7-6a2c-4c240b872108.png)

# Unityプロジェクト設定
* Project Settings > XR Plug-in Management > Android
PICOにチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/515c80e5-8b5b-3c25-66c2-4969fea1dd01.png)

* Project Settings > Player設定
    * Company Name & Product Name
        * 作りたいアプリに従って入力してください 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/41db6235-0dcf-938d-1493-c54a32b2e1fe.png)
    * Minimum API Level
        * API Level 29
    * Scripting Backend
        * IL2CPP
    * Target Architecture
        * ARM64
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/731a1f76-a4ab-71fa-8484-d51c2373b9d6.png)

# カメラをVR対応する
* このあたりはUnity XR Plugin標準の手順です。
    * Hierarchyで右クリック > XR > XR Origin(VR)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/d9a2c2f7-7757-7283-f669-6e98e388ce24.png)

もともとあったMain Cameraは無効か削除に。

XR OriginのFloorにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/c5d65c87-26a6-5423-de4a-71dd898b7a94.png)

# ビルド
* Pico Neo 3/Pico4 をPCにUSB接続してください。
    * Build And Runでビルドします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/bb875717-452c-abed-5a21-832b7c87ed7c.png)

* ビルド時にStart-time Entitlement Checkダイアログが出る場合、
    * 動作確認したいだけなら「Ignore, Don't reminde again」でOKです

# 動作確認
VRで動きました！
(コントローラーは表示されず、Rayは出ていますがトラッキングされていない状態)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/fb656643-c4a8-ac57-f2fc-2ac73650215d.png)

# コントローラーモデルを表示する
* XR Interaction Toolkitを2.1.0-pre.1以上へUpgrade
（※Unity2022.3の場合は2.4.1なので不要）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/82020240-ff7d-39bf-12d2-5197773388ba.png)
* サンプルのStarter Assets,XR Device Simulator, Tunneling Vignetteをインポートしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/541ad727-7df4-bfe7-3680-906c77daf378.png)

* HierarchyのXR OriginにPXR_ManagerをAddComponent
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/aa8aca57-75b1-27c2-7a38-1c46784908c6.png)

* さらに、Input Action ManagerをAddComponent
    * Action Assetsの数を1に変更し、XRI Default Input Actionsを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/108e7e3f-293d-7bd6-c289-d7816c5984ea.png)

* HierarchyのXR Origin > Camera Offset > LeftHand Controllerにコントローラーモデルを設定します。
    * XR Controller (Action-Based) のPresetボタンから、XRI Default Left Controllerを選択して設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/7b0290fa-1d43-2370-86b6-6c1bb1cbd72b.png)
    * Model PrefabへPicoのコントローラーモデルのPrefabを設定。
    * コントローラーモデルは Packages > PicoXR Plugin > Assets > Resources > Prefabsの中にあります。
    * LeftHand Controller / RightHand Controllerにそれぞれ設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/900db7c8-8404-cb86-3a63-a0ffe4e8b39f.png)

* コントローラーが表示されました。
Pico Neo 3
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/0dc09ae8-cda9-cbdc-6c8d-efc4cf33cf79.png)

Pico 4
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/621bb561-7956-63fc-545b-307df3e5d77c.png)


# おわりに
Pico Neo 3/ Pico 4でシンプルなVRアプリをビルドして動かす所まで解説しました。
前回投稿した2.0.4から2.3.0にかけて手順が結構変わっており、積極的なアップデートが行われている印象を受けました。
新しく追加された機能についても調査していきたいと思います。

# トラブルシューティング
* PCとPicoをUSB接続してBuild & Runすると「No Android devices connected」と表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/2543bbe6-7349-60cd-f427-cfe1c865a297.png)
PCがPicoをAndroid端末として認識出来ていないので、以下を確認してください
* 接続しているUSBケーブルがデータ通信可能なものである事
* 開発者モードになっていて、USBデバッグが有効になっている事

https://qiita.com/afjk/items/14085d944915334cffc5

# 宣伝
Psychic VR Labが開発運営しているXRプラットフォーム「[STYLY](https://styly.cc/)」はマルチデバイス対応。Pico Neo 3&Pico 4 にも対応しています。
「ちょっとVRコンテンツを作りたいけど、アプリを作るのは手間がかかる」 なんて時にもご活用ください。
**Pico 4のパススルーにも対応しています！**

Picoストアで"STYLY"を検索すると見つかります。