このガイドでは、Unity の Google Cardboard XR Plugin for Unity を使用して、独自のバーチャル リアリティ(VR)を作成する方法を説明します。
Cardboard SDK を使用すると、スマートフォンを VR プラットフォームに変えることができます。スマートフォンでは、立体視レンダリングによる 3D シーンを表示し、頭の動きに追随して反応し、ユーザーがビューア ボタンを押したタイミングを検出してアプリを操作できます。
まず、Cardboard SDK のコア機能を示すデモゲームである HelloCardboard を使用します。ユーザーが仮想世界を歩き回り、オブジェクトを見つけて回収するゲームです。次の方法について説明します。
- 開発環境を設定する
- デモアプリをダウンロードしてビルドする
- Cardboard ビューアの QR コードをスキャンしてパラメータを保存する
- ユーザーの頭の動きをトラッキングする
- 左右の目に正しい歪みを設定して立体画像をレンダリングする
- VR モードをオンまたはオフにする
開発環境を設定する
ソフトウェアの要件:
- Unity 2021.3.44f1 以降
- インストール時に Android と iOS の Build Support が含まれていることを確認してください。
- パッチ バージョン 44f1 以降をインストールしてください。
- Git がインストールされており、
git
実行可能ファイルがPATH
環境変数に存在している必要があります。詳しくは、Unity の Package Manager の git サポートのドキュメントをご覧ください。
SDK をインポートして新しいプロジェクトを作成する
Unity SDK をインポートして新しいプロジェクトを作成する手順は次のとおりです。
- Unity を開き、新しい 3D プロジェクトを作成します。
- Unity で、[Window] > [Package Manager] に移動します。
- [+] をクリックし、[Add package from git URL] を選択します。
- テキスト入力フィールドに
https://github.com/googlevr/cardboard-xr-plugin.git
を貼り付けます。
パッケージがインストール済みパッケージに追加されている必要があります。 - Google Cardboard XR Plugin for Unity パッケージに移動します。[試聴する] セクションで、[プロジェクトにインポート] を選択します。
サンプル アセットはAssets/Samples/Google Cardboard/<version>/Hello Cardboard
に読み込む必要があります。
HelloCardboard シーンの設定
Assets/Samples/Google Cardboard/<version>/Hello Cardboard/Scenes
に移動し、[Add Open Scenes] を選択して [HelloCardboard] を選択して、サンプル シーンを開きます。- [レイヤ] メニューを開き、[レイヤを編集...] を選択します。
- [インタラクティブ] という新しいレイヤを定義します。
- ゲームオブジェクトの [Treasure] をクリックして、インスペクタ ウィンドウを開きます。レイヤを [インタラクティブ] に設定します。すべての子オブジェクトのレイヤをインタラクティブに設定するかどうかを尋ねるポップアップ ウィンドウが表示されたら、[はい、子を変更] をクリックします。
- [Player] > [Camera] > [CardboardReticlePointer] GameObject をクリックして、インスペクター ウィンドウを開きます。「Cardboard レチクル ポインタ」スクリプトで、レチクル インタラクション レイヤ マスクとして [インタラクティブ] を選択します。
Android プロジェクト設定を構成する
[File] > [Build Settings] に移動します。
- [Android] を選択し、[Switch Platform] を選択します。
- [Open Scenes を追加] を選択し、[HelloCardboard] を選択します。
プレーヤー設定
解決策と提示
[Project Settings] > [Player] > [Resolution and Presentation] に移動します。
- [デフォルトの向き] を [左向き] または [右向き] に設定します。
- [Optimized Frame Pacing] を無効にします。
その他の設定
[Project Settings] > [Player] > [Other Settings] に移動します。
- Graphics API で
OpenGLES2
、OpenGLES3
、Vulkan
のいずれか、またはそれらの組み合わせを選択します。 - [Minimum API Level] で
Android 8.0 'Oreo' (API level 26)
以上を選択します。 - [Target API Level] で
API level 33
以降を選択します。 - [Scripting Backend] で
IL2CPP
を選択します。 - [ターゲット アーキテクチャ] で
ARMv7
、ARM64
、またはその両方を選択して、目的のアーキテクチャを選択します。 - [インターネット アクセス] で
Require
を選択します。 - [Active Input Handling] で
Input System Package (New)
を選択します。 - [Package Name] に会社のドメインを指定します。
Vulkan
が [Graphics API] として選択されている場合:- [Vulkan の設定] で [レンダリング中に表示の回転を適用する] チェックボックスをオフにします。
- Unity のバージョンが 2021.2 以降の場合は、[テクスチャ圧縮形式] で
ETC2
を選択します。
- Unity のバージョンが 2023.1 以降の場合は、[Application Entry Point] で
Activity
を選択し、GameActivity
を消去します。
パブリケーションの設定
[プロジェクトの設定] > [プレーヤー] > [公開設定] に移動します。
- [Build] セクションで、
Custom Main Gradle Template
とCustom Gradle Properties Template
を選択します。 Assets/Plugins/Android/mainTemplate.gradle
の dependencies セクションに次の行を追加します。implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.gms:play-services-vision:20.1.3' implementation 'com.google.android.material:material:1.12.0' implementation 'com.google.protobuf:protobuf-javalite:3.19.4'
Assets/Plugins/Android/gradleTemplate.properties
に、次の行を追加します。android.enableJetifier=true android.useAndroidX=true
XR プラグイン管理設定
[Project Settings] > [XR Plug-in Management] に移動します。
- [プラグイン プロバイダ] で
Cardboard XR Plugin
を選択します。
プロジェクトのビルド
[File] > [Build Settings] に移動します。
- [Build] を選択するか、デバイスを選択して [Build and Run] を選択します。
iOS プロジェクトの設定
[File] > [Build Settings] に移動します。
- [iOS] を選択し、[Switch Platform] を選択します。
- [Open Scenes を追加] を選択し、[HelloCardboard] を選択します。
プレーヤー設定
解決策と提示
[Project Settings] > [Player] > [Resolution and Presentation] に移動します。
- [デフォルトの向き] を [左向き] または [右向き] に設定します。
その他の設定
[Project Settings] > [Player] > [Other Settings] に移動します。
- [Camera Usage Description] に「
Cardboard SDK requires camera permission to read the QR code (required to get the encoded device parameters).
」と入力します。 - [Target minimum iOS Version] に「
12.0
」と入力します。 - [Package Name] に会社のドメインを指定します。
XR プラグイン管理設定
[Project Settings] > [XR Plug-in Management] に移動します。
- [プラグイン プロバイダ] で
Cardboard XR Plugin
を選択します。
プロジェクトのビルド
[File] > [Build Settings] に移動します。
- [Build] または [Build and Run] を選択します。
再調整
Cardboard SDK では、Recenter()
を使用してヘッド トラッカーを再調整できます。
サンプル アプリケーションを使用して試す手順は次のとおりです。
- デバイスを、再調整する位置(新しい前向きの頭の向きとして使用)に移動します。
- Cardboard デバイスのトリガーを 3 秒以上長押しします。
- トリガーを離します。
- 初期ポーズがカメラの向いている方向になりました。
VR モードのオンとオフを切り替える
Unity XR Plugin Management API を使用すると、Unity 用 Google Cardboard XR プラグインの VR モードをオンまたはオフに切り替えることができます。エンドユーザー向けのドキュメントと使用例については、Unity のエンドユーザー向けドキュメントをご覧ください。
HelloCardboard サンプルの VrMode シーンは、前述の API の基本的な使用方法を示しています。このシーンでは、[終了] をタップして VR モードをオフにできます。また、画面の任意の場所をタップするだけで再度オンにできます。詳細については、VrModeController.cs をご覧ください。