PICO Unity Integration SDKについてまとめてみた
役立つリンクまとめ
サンプルレポジトリを触ってみることにする
XRインタラクションツールキットと間違えていたようだ。
PICO専用のSDKはこちらのリンクからかくプラットフォームのSDKがダウンロードできるリンクがある
PICOを開発するうえで重要なPXR_Manager
というものがあるみたい。
できること
-
画面フェード
Open Screen Fadeチェックボックスをオンにすると、PXR ManagerはPXR_ScreenFadeスクリプトをGameObjectに追加し、シーン遷移時のフェードインおよびフェードアウト効果を実現します。 -
固定フォビエイテッドレンダリング
アプリのパフォーマンスを向上させるために、Foveation Levelを設定できます。 -
アイ・トラッキング
Eye Trackingを有効にすると、ユーザーの目の動きを入力データに変換します。 -
フェイス・トラッキング
Face Tracking Modeを設定して、ユーザーの顔の表情を入力データとして利用できるようにします。 -
ハンド・トラッキング
Hand Trackingを有効にすると、ユーザーの手のポーズを入力データに変換します。 -
コンテンツ保護
Use Content Protectチェックボックスをオンにすると、ユーザーがアプリでスクリーンショットや動画を録画しようとすると、画面が黒くなります。 -
ミックスド・リアリティ・キャプチャ
MRCを有効にすると、ミックスド・リアリティ動画の作成が可能になります。 -
レイト・ラッチング
Use Late Latchingチェックボックスをオンにすると、HMDおよびコントローラーのポーズで1フレームの遅延が減ります。 -
アンチエイリアシング
Use Recommended MSAAチェックボックスをオンにすると、シーンのデフォルトのMSAAレベルである「4x」が有効になります。
この記事では、開発環境の設定方法を紹介します。設定前に、ハードウェアとソフトウェアの要件を確認してください。
-
ステップ1:PICOデバイスで「デベロッパー」モードを有効にする
PICO XRアプリ開発には、追加のデバイスは必要ありません。市場にある任意のPICO VRヘッドセットを、「デベロッパー」モードを有効にすることで開発デバイスとして使用できます。
PICO VRヘッドセットを起動します。
設定 > 一般に移動します。
ソフトウェアバージョン欄をクリックし続けると、左のナビゲーションペインの下部に開発者オプションが表示されます。
開発者をクリックします。
開発者画面で、USBデバッグを有効にします。
これで、PICO VRヘッドセットの「デベロッパー」モードが有効になりました。 -
ステップ2:Unityエディタをインストールする
UnityダウンロードページからUnity Hubをダウンロードします。
Unity Hubを起動します。
左のナビゲーションペインから、インストールを選択します。
インストールペインで、エディタをインストールをクリックします。
対象のUnityエディタバージョンを見つけて、インストールをクリックします。
モジュール追加ウィンドウで、Android SDK & NDK ToolsおよびOpenJDKにチェックを入れます。
Androidビルドサポートのすべてのオプションにチェックを入れる必要があります。これにより、Androidアプリ開発に必要な環境がセットアップされます。 -
続行をクリックします。
利用規約を読んで、上記の利用規約に同意するにチェックを入れます。
インストールをクリックします。
これで、Androidサポート付きのUnityエディタがインストールされます。
インストール後、環境設定 > ライセンスに移動し、追加をクリックし、新規ライセンス追加ウィンドウで希望のライセンスを選択してアクティブ化します。 -
次のステップ
「SDKをインポートする」記事の指示に従って、Unity Hubを使用してプロジェクトを作成し、PICO Unity Integration SDKをプロジェクトにインポートします。
-
SDKをインポートする
PICO Unity Integration SDKは、重要なVR機能、コンポーネント、プラグインを提供します。この記事では、Unity Hubでプロジェクトを作成し、プロジェクトにSDKをインポートする方法を紹介します。 -
ステップ1:プロジェクトを作成する
SDKをインポートする前に、Unity Hubでプロジェクトを作成する必要があります。
Unity Hubを起動します。
プロジェクト > 新規プロジェクトに移動します。
これにより、新規プロジェクトウィンドウが表示されます。 -
コア > 3Dを選択します。
PROJECT SETTINGSの下で、プロジェクトの名前を付け、保存場所を選択します。
プロジェクトを作成をクリックします。
プロジェクトの初期化後、Unityエディタウィンドウが表示されます。 -
ステップ2:PICO Unity Integration SDKをインポートする
SDKダウンロードセンターに移動します。
PICO Unity Integration SDKの最新バージョンをダウンロードします。
ダウンロードしたパッケージを解凍します。
これにより、package.jsonファイルが含まれるフォルダが作成されます。
Unityエディタに戻ります。
上部のメニューバーから、ウィンドウ > パッケージマネージャを選択します。
パッケージマネージャウィンドウで、+ > ディスクからパッケージを追加をクリックします。
package.jsonファイルを選択し、プロジェクトにインポートします。
PXR SDK設定ウィンドウが表示されます。閉じます。
- 次のステップ
「プロジェクト設定を完了する」記事の指示に従って、PICOアプリ開発用のプロジェクトを設定します。
-
プロジェクトの設定を完了する
この記事では、必要なプロジェクト設定を完了し、アプリがXR機能を実装し、PICOデバイスで実行されるようにする方法を紹介します。 -
ステップ1:PICO XRプラグインを有効化する
アプリでSDKのXR機能を実装するために、PICO XRプラグインを有効化します。
上部のメニューバーから、編集 > プロジェクト設定を選択します。
プロジェクト設定ウィンドウで、XRプラグイン管理 > Android設定アイコンをクリックします。
PICOのチェックボックスをオンにします。
他のプラグインプロバイダを選択しないでください。そうしないと、アプリはPICOデバイスで正常に動作しません。
PICO XRプラグインが有効になります。プロジェクト設定ウィンドウを閉じずに、次のセクションでアプリの名前とバージョンを設定します。
-
ステップ2:アプリのバージョンと名前を設定する
パッケージ名は、Androidアプリを識別するために使用され、com.companyName.productNameの形式で記述する必要があります。APKファイルをエクスポートする際、Unityエディタは自動的にこれらの名前をAndroidManifest.xmlファイルに追加します。バージョン番号はユーザーが確認するものです。各アプリリリースで、アプリのバージョン番号が前回よりも高くなるようにしてください。
プロジェクト設定ウィンドウで、左側のナビゲーションペインでPlayerをクリックします。
Playerペインで、会社名、製品名、バージョンを設定します。
完了したら、Playerペインを閉じずに、次のセクションで他の設定を行います。 -
ステップ3:その他の設定を完了する
その他の設定は、アプリがサポートするシステムバージョンやアプリのビルド方法を定義します。PICOストアでアプリを公開できるように、開発プロセス全体を正常に完了できるよう、次の設定を行う必要があります:
最小APIレベル:アプリを実行するために必要な最小のAndroid SDKバージョン(APIレベル)。PICO SDKがサポートする最小バージョンは10.0(APIレベル29)です。それより低いバージョンでは、アプリのビルド中にエラーが発生します。
ターゲットAPIレベル:アプリをコンパイルする対象となるAndroid SDKバージョン(APIレベル)。最小APIレベルと同じかそれ以上でなければ、エディタはアプリのビルド中にエラーを報告します。
スクリプトバックエンド:プロジェクト内のC#コードをどのようにコンパイルし実行するかを決定するスクリプトバックエンド。
ターゲットアーキテクチャ:アプリが実行されることを許可したいCPU。 -
以下の手順に従ってください:
PlayerペインのAndroid設定アイコンをクリックします。 -
その他の設定タブを展開します。
識別の下で、以下の設定を行います: -
最小APIレベルをAndroid 10.0(APIレベル29)に設定します。
ターゲットAPIレベルを「自動(最高インストール済み)」に設定します。これは通常、デフォルトの設定です。
「自動(最高インストール済み)」オプションを使用すると、システムは自動的に最高のローカルAndroid SDKバージョンを使用してアプリをコンパイルします。
構成の下で、以下の設定を行います: -
スクリプトバックエンドをIL2CPPに設定します。
IL2CPPは、Monoよりもクロスプラットフォームアプリ開発をよりサポートしています。具体的には、IL2CPPは、スクリプト内のC#コードなどのMSILコードをC++コードに変換し、そのC++コードを使用して選択した開発プラットフォーム用のネイティブバイナリファイル(.exe、.apk、.xapなど)を生成します。
ターゲットアーキテクチャをARM64に設定し、ARMv7のチェックを外します。
64ビット環境でAndroidアプリを実行することが推奨されています。これにより、パフォーマンスが向上します。また、64ビットアプリは4GB以上のメモリ空間にアクセスし、動的メモリ割り当てをサポートします。 -
(オプション)ステップ4:AndroidManifest.xmlファイルを設定する
PICO VRヘッドセットはAndroidオペレーティングシステム上で動作するため、すべてのアプリにはアプリの構成、権限、ソフトウェアおよびハードウェア設定、およびサポートされるAndroidバージョンなどのアプリの必須メタデータが含まれたAndroidManifest.xmlファイルが必要です。 -
Unityエンジンを使用してPICO XRアプリをビルドする場合、APKファイルに必要なメタデータが含まれたAndroidManifest.xmlファイルが自動的に生成されます。これらのメタデータは、プロジェクトの設定に基づいて生成されます。例えば、Unityエディタでアプリのアイトラッキングを設定すると、対応するメタデータがAndroidManifest.xmlファイルに追加されます。したがって、基本的にはファイルに追加のコンテンツを手動で追加する必要はなく、そのままアプリをコンパイルして実行できます。
AndroidManifest.xmlファイルをカスタマイズしたい場合は、編集 > プロジェクト設定 > プレイヤー > Publishing Settings > ビルドに進み、「カスタムメインマニフェスト」にチェックを入れます。
AndroidManifest.xmlファイルがAssets/Plugins/Androidの下に表示されます。それを開いて、必要な設定を追加できます。
Androidアプリマニフェスト設定に関する詳細情報は、このページを参照してください。
- 次に進む
「XRシーンを作成する」記事の手順に従って、XRカメラ、床、コントローラーのペア、およびレイで構成されるXRシーンを作成します。
PICOを開発者モードにする方法
ソフトウェアバージョンのところを連打すると一般の項目の下に開発者というボタンが出現する
この記事では、XR Interaction Toolkit のアップグレード方法と、XRカメラ、床、コントローラとレイのペアが含まれるシンプルなXRシーンの作成方法を紹介します。さらに、ユーザーエンタイトルメントチェックシミュレーションの設定方法や、シーンのプレビューおよびデバッグ方法についても説明します。以下は、作成するシーンです:
image.png
- ステップ1:XR Interaction Toolkitをアップグレードする
基本的なXRシーンを作成するために、XR Interaction Toolkitという高レベルのインタラクションシステムを使用します。
古いバージョン(0.9.4-preview)のXR Interaction Toolkitは、PICO Unity Integration SDKに自動的に統合されています。Toolkitをアップグレードすると、Unityの新しいサンプルパッケージが入手できます。
上部のメニューバーから、Windows > Package Managerを選択します。
Package Managerウィンドウで、Packages > Unity Registryをクリックします。
Unityレジストリで提供されているパッケージが表示されます。
XR Interaction Toolkitを見つけて展開します。
このツールキットのさまざまなバージョンが表示されます。
(オプション)See other versionsをクリックして、XR Interaction Toolkitの他のバージョンを確認します。
目標とするバージョン(例:2.1.0-pre.1)を選択し、Update to 2.1.0-pre.1をクリックします。
XR Interaction Toolkitのアップグレードが開始されます。しばらくすると、次のダイアログボックスが表示されます。
Yesをクリックします。
これにより、ネイティブプラットフォームのバックエンドが有効化され、古いInput APIが無効化されます。アップグレードが完了すると、インタラクションレイヤーをアップグレードするかどうかを尋ねる次のダイアログボックスが表示されます。
I Made a Backup, Go Aheadをクリックします。
これにより、インタラクションレイヤーがアップグレードされます。アップグレードが完了すると、Unityエディタが再起動し、PXR SDK設定ウィンドウが表示されます。
PXR SDK設定ウィンドウのApp IDフィールドに、作成したアプリのIDを入力し、Applyをクリックます。
これにより、アプリにユーザーエンタイトルメントが有効になります。
Windows > Package Manager > XR Interaction Toolkitに移動します。
XR Interaction Toolkitが目標バージョンにアップグレードされたことが確認できます。
サンプルリストを展開します。
StarterAssets、XR Device Simulator、Tunneling Vignetteをインポートするために、Importをクリックします。
各サンプルパッケージの説明は以下のとおりです。
Sample
Description
Starter Assets
デフォルトでは、サンプルフォルダはAssets / Samples / XR Interaction Toolkit / [version] / Starter Assetsにあります。このフォルダには、デフォルトの入力アクションやプリセットを含む、挙動設定の簡略化を行うアセットが提供されています。
XR Device Simulator
デフォルトでは、サンプルフォルダはAssets / Samples / XR Interaction Toolkit / [version] / XR Device Simulatorにあります。このフォルダには、XR HMDとコントローラをマウスとキーボード入力で操作できるようにシミュレートするアセットが提供されています。さらに、シミュレータと一緒に使用されるバインディングと、シーンで素早く使用できるプレハブも含まれています。
Tunneling Vignette
トンネリングは、ファーストパーソンロコモーションで使用され、ユーザーの中心視野に丸いトンネルエリアを表示し、周辺視野に静的な背景を表示することで、シーンをクロップし、動きの酔いを軽減します。
デフォルトでは、サンプルフォルダはAssets / Samples / XR Interaction Toolkit / [version] / Tunneling Vignetteにあります。このフォルダには、トンネリングビネット効果の設定に使用するアセットが提供されています。
- ステップ2:XRカメラを追加する
デフォルトでは、新しいプロジェクトには、ディレクショナルライトと一般的なカメラが含まれるSampleSceneがあります。
カメラは仮想世界をキャプチャしてプレイヤーに表示します。カメラをカスタマイズして制御することで、アプリのユニークなプレゼンテーションを提供できます。シーンには無制限の数のカメラを追加できます。これらのカメラは、シーンを任意の順序や場所でレンダリングするように設定できるだけでなく、シーンの一部のみをレンダリングするように設定することもできます。
XRデバイス上のシーンを通常通り表示するためには、左右の目にシーンをレンダリングするための一般的なカメラをそれぞれ追加する必要があります。
XR Interaction ToolkitにはデフォルトでXRカメラが含まれています。XRカメラは、左右の目にシーンをレンダリングできます。また、XRカメラは、HMDや体の動きに合わせて3DoFまたは6DoFの動きを実行し、ユーザーに本格的なXR体験を提供します。
一般的なカメラをXRカメラに置き換えるには、以下の手順を使用します。
Hierarchyウィンドウで、Main Cameraを右クリックし、Deleteをクリックして削除します。
XR > XR Origin (VR)をクリックします。
image.png
XR Originがシーンに追加されます。これには以下の要素が含まれています。
要素
- 説明
XR Origin
シーン管理と制御のためのコンポーネントとスクリプトをマウントします。
Camera Offset
HMDの6DoFデータを同期させ、シーン内でカメラと手のコントローラを移動させます。
Main Camera
仮想世界をキャプチャし、プレイヤーに表示するXRカメラ。
LeftHand Controller
左手のコントローラ。
RightHand Controller
右手のコントローラ。
XR Originを選択します。
Inspectorウィンドウに、XR Originにマウントされたコンポーネントとスクリプトが表示されます。
Inspectorウィンドウの下部にあるAdd Componentをクリックします。
PXR_Managerスクリプトを検索し、ダブルクリックして追加します。
- ステップ3:床を追加する
Hierarchyウィンドウで、+ > 3D Object > Planeをクリックします。
image.png
デフォルトの白い床がシーンに追加されます。
image.png
Hierarchyウィンドウで、Planeを選択します。
Inspectorウィンドウに、Planeオブジェクトの属性が表示されます。
- Transformコンポーネントの下で:
位置を (0, 0, 0) に設定します。これは通常、デフォルト設定です。
スケールを (10, 1, 10) に設定します。
これで、世界の原点を中心に10×10の床が作成されます。
image.png
ステップ4:コントローラーを設定する
手のコントローラーは、XRアプリの重要な部分でもあります。これにより、ユーザーは仮想世界と対話し、没入感を高めることができます。SDKには、コントローラーのプレハブが提供されており、これを直接使用して物理コントローラーと連動して動かすことができます。
- 以下の手順に従って、SDKのコントローラープレハブを使用します:
Hierarchyウィンドウで、XR Origin > Camera Offsetを展開します。
LeftHand Controllerを選択します。
Inspectorウィンドウで、XR Controller (Action-Based) パネルの右上にあるプリセットアイコンをクリックします。
プリセットウィンドウが表示されます。
XRI Default Left Controllerをダブルクリックして、左手のコントローラーにデフォルト設定を追加します。
XR Controller (Action-Based) パネルで、Model Prefabオプションを探します。
Projectウィンドウで、Packages > PICO Integration > Assets > Resources > Prefabsに移動します。
LeftControllerModelをModel Prefabにドラッグします。
image.png
同じ手順でRightHand Controllerを設定します。
PICO Unity Integration SDKでは、最新のUnity入力システムが適用されているため、入力制御のためにInput Action Managerスクリプトを追加する必要があります。以下の手順に従ってください:
Hierarchyウィンドウで、XR Originを選択します。
Inspectorウィンドウの下部にあるAdd Componentをクリックします。
Input Action Managerスクリプトを検索し、ダブルクリックして追加します。
Input Action Managerエリアで、Action Assetsリストを展開し、+をクリックして要素(Element 0など)を追加します。
円形アイコンをクリックします。
InputActionAsset選択ウィンドウが表示されます。
XRI Default Input Actionsをダブルクリックして、Element 0に追加します。
これで、シンプルなXRシーンが作成されます。
- ステップ5:ユーザーエンタイトルメントチェックシミュレーションを有効にする
PICOは、PICOストアで公開されたアプリのためにコンテンツ保護メカニズムを設定しています。アプリにユーザーエンタイトルメントチェックが有効になっていると、エンタイトルメントがあるユーザーのみがデバイス上でアプリを実行できます。これは「XRインタラクションツールキットのアップグレード」セクションで完了しています。
アプリをデバッグする際には、エンタイトルメントチェックシミュレーションを使用して、PICOデバイス上でアプリを実行する際の可能性のあるエラーを回避できます。
(オプション)ステップ6:シーンをプレビューおよびデバッグする
PICO Developer Center(PDCツール)を使用して、アプリのシーンをリアルタイムでプレビューし、それに応じてデバッグを行うことができます。詳細な手順については、この記事を参照してください。
- 次のステップ
「シーンのビルドと実行」の記事の手順に従って、シーンをAPKファイルにビルドし、PICOデバイスで実行します。