Version: 2017.2
xR SDK
Vuforia SDK overview

Google VR SDKの概要

Google VR は Google DaydreamGoogle Cardboard の両方の背後にある技術です。Google VR には、スマートフォン、ヘッドマウントビューアーとコントローラー、スタンドアロンヘッドマウントディスプレイとアプリケーションのサポートが含まれます。Google VR は “SDK for Unity” を提供しており、この豊富なデバイスエコシステムの VR コンテンツを作成することができます。

Google VR 技術には、Daydream が含まれます。Daydream は高品質のモバイル VR と Cardboard 用のプラットフォームで、手頃な VR 体験と 360 ビデオ向けに構築されています。Daydream は、Daydream 対応の携帯電話、ヘッドセット、コントローラー、体験から成り、Daydream を通じてハイエンド Android モバイルデバイスをサポートします。Daydream がサポートするデバイスの全リストは、Google VR ウェブサイトを参照してください。Cardboard は、iOS と Android のほぼすべてのスマートフォンで使用できます。

Google Cardboard は最も使いやすいモバイル VR ソリューションで、iOS や Android スマートフォンを持つすべてのユーザーが VR アプリケーションを使用できます。Cardboard を使用するには、最低限の推奨される要件がありますが、Daydream よりハードウェアに拘束されるものが少なく、主にオペレーティングシステムや基本的な制御システム (ジャイロスコープ など) により異なります。ユーザーは公式の Google Cardboard ビューア、または Google VR コンテンツをサポートするサードパーティの VR ビューアで VR アプリケーションを体験できます (ハードウェアとソフトウェア要件のセクションを参照)。Cardboard は、より複雑なインタラクションを必要とするアプリケーションのために、さまざまなサードパーティのハンドヘルドコントローラーもサポートしています。

Daydream を使うと Cardboard よりも多くの豊富な体験が可能ですが、Daydream 対応のデバイスだけしかサポートしません。それは例えば、高解像度ディスプレイ、スムーズなグラフィックス、正確なヘッドトラッキング用の忠実度の高いセンサーなどによる VR のために作られたDaydream 対応のスマートフォンなどです。Daydream スマートフォンのアプリケーションは、Daydream 対応スマートフォンを使用して、Daydream View、Google のヘッドセット、高品質の VR を体験するためのモーションコントローラーでアクセスできます。Daydream は、元々設計した製造業者が開発した Daydream Standalone HMD もサポートします。Daydream Standalone は、より豊富なコントローラー入力やモーショントラッキングを含む、Android OS 上で実行される制限なしのヘッドマウントディスプレイです。

Cardboard と Daydream の要件と機能の詳細は、Google の VR に関するドキュメント を参照してください。

ハードウェアとソフトウェア要件

このページでは、Unity で Google VR SDK を使用するための推奨ハードウェアとソフトウェア要件の概要を説明します。

Google VR SDK をサポートするデバイスの最小プラットフォーム要件と、いくつかの重要な点は以下のとおりです。

  • Android API SDK レベル 21 (“Lollipop” と呼ばれています) がインストールされている必要があります。

  • Google VR アプリケーションを開発するには、Cardboard か Daydream がサポートするモバイル機器が必要です。

  • Daydream 開発用に Android モバイルを設定する方法は、Google の Daydream Hardware を参照してください。

最小ハードウェアとソフトウェア要件

このセクションでは、Google VR SDKを使用して開発するためのハードウェアとソフトウェアの最小要件の概要を説明します。

Device ハードウェア ソフトウェア
Cardboard - ジャイロスコープを使用して Android 4.1 以降を実行するデバイス
- ジャイロスコープを使用して iOS 8 以降を実行するデバイス
- Cardboard と互換性のある表示デバイス
- Unity Cardboard のインテグレーションには Android Lollipop 以上が必要です
- Google Cardboard アプリケーションがインストールされた iOS デバイス
Daydream - Daydream 対応のデバイス。Daydream と互換性のあるデバイスのリストは、Google Daydream Hardware を参照してください。

推奨するハードウェアとソフトウェア要件

ここでは、Google VR SDK を使用して開発するために推奨されるハードウェアとソフトウェアの要件の概要を説明します。

Device ハードウェア ソフトウェア
Cardboard - Android の場合、互換性のあるデバイスの全リストは、Cardboard ビューアーに付属のドキュメントを参照してください
- iOS の場合、iPhone 5 シリーズ以降のモバイル
- Cardboard と互換性のある表示デバイス
- Android 5.0以降
- Google CardboardアプリケーションがインストールされたiOS 8以降
Daydream - Daydream 仕様と互換性のあるデバイス。Daydream と互換性のあるデバイスのリストは、Google Daydream Hardware を参照してください。 Android 7 以降

Google VR 開発に関する詳細は、Google Developer site for VR を参照してください。このサイトには、SDK へのリンク、教材、API とストア公開に関するドキュメントが含まれています。

クイックスタートガイド

ここでは、Unity を使用して Google VR アプリケーションの開発を開始するのに役立つ情報を提供します。Google VR コンテンツの開発に必要な情報の多くは、Google VR Developer ウェブサイト で入手できます。

Unityをインストールし、Google VR SDKのプラットフォーム固有の設定手順に外部リンクを使用するには、以下の手順を行います。

Unityエディターをインストールするには、Unityマニュアルのインストールを使用します。

i)Androidをターゲットとする場合は、Unity Android Supportを __Unity installer__ からインストールしてください。

ii) iOS をターゲットにする場合は、__Unity Installer__ を通して Unity の iOS サポート がインストールされていることと、コンパイルしてデバイスにデプロイする macOS マシンがあることを確認してください。
  1. ターゲットとするプラットフォームのGoogle Developer site for VRに記載されている手順に従います。

Google は、Android と iOS 用 Google VR アプリケーションを Unity で開発するためのスターターガイドを提供しています。それぞれのガイドへのリンクは以下の通りです。

プラットフォームの設定

ここでは、Google VR アプリケーションをビルドするために Unity プロジェクトの環境設定を行うための手順を提供します。

次のセクションの説明に従って、Unity プロジェクトがターゲットの Google VR デバイス用に正常にビルドされるようにします。

ターゲットとするボールボード(AndroidとiOS)

Unity は、Cardboard をサポートするデバイスにアプリケーションをビルドするために、多くのプラットフォーム特有のビルドオプションを提供します。

To access these settings, open the Player Settings (menu: Edit > Project Settings > Player) and navigate to either the Android or iOS section__ (click either on the iPhone or Android icon) depending on which device you want to build to. Navigate to XR Settings__ and make sure the Virtual Reality Supported checkbox is ticked. Next, navigate to the Virtual Reality SDKs list and click the plus__ (+)__ button. Select Cardboard to add it to the list.

Finding Cardboard-specific settings for iOS/Android (Edit > Project Settings > Player > XR Settings)
Finding Cardboard-specific settings for iOS/Android (Edit > Project Settings > Player > XR Settings)

CardboardVirtual Reality SDKs リストに加えたら、横にある折りたたみ用の矢印をクリックして他の Cardboard 設定を表示します。

VR SDK リストの Cardboard 特有の設定
VR SDK リストの Cardboard 特有の設定

以下の表は、Cardboard 設定で使用可能なプロパティーのリストと機能の説明を示しています。

プロパティー 説明
Depth Format このドロップダウンを使用して Z バッファの深さを設定します。Unity は可視データをソートし、何が実際に画面にレンダリングされるかを決定します。
Enable Transition View 遷移ビューは、Google VRがユーザーにデバイスをCardboard互換のビューアに配置する必要があることを知らせるために提供するビューです。これを有効にすると、ユーザーがデバイスをビューアーに挿入する時間を確保できます。デフォルトでは無効になっていますが、有効にすると、ユーザーがデバイスをビューアーに挿入するのに時間がかかります。

Cardboard の最低限のプラットフォーム要件は Android 5.0 (Lollipop) (SDK API レベル 21) です。

Unity が正しい APK を使用し、Android の最新バージョンにアップグレードしたデバイスでのみ実行されるようにするには、Minimum API Level を変更する必要があります。

これを行うには、Player Settingsに移動し、Other Settings に移動します。 IdentificationのMinimum API Level ドロップダウンを使用して、リストの最新のAPIに設定します。

Target API Level を Cardboard の専用の API レベル 21 以上に設定します。Daydream をターゲットにしている場合は、レベル 24 以上にする必要があります。デフォルトでは、このプロパティーはインストールした中で最高のレベルを使用します。Android の API レベルの詳細は、Android PlayerSettings を参照してください。

これで、Cardboard 用の Unity コンテンツを作成する準備が整いました。通常の Android や iOS の開発と同じワークフローに従ってください (詳しくは Android 開発iOS 開発 を参照)。Cardboard 対応のデバイスでゲームをビルド、実行してください (File > Build&Run) 。

Daydream をターゲットにする (Android のみ)

Unity は、Daydream をサポートするデバイスにアプリケーションをビルドするために、多くのプラットフォーム特有のビルドオプションを提供します。

To access these settings, open the Player Settings (menu: Edit > Project Settings > Player) and navigate to the Android section (click the Android icon marked in the figure below). Navigate to XR__ Settings__ and make sure the Virtual Reality Supported checkbox is ticked. Next, navigate to the Virtual Reality SDKs list and click the plus (+) button. Select Daydream to add it to the list.

Finding the Daydream-specific settings for Android (Edit > Project Settings > Player > XR Settings)
Finding the Daydream-specific settings for Android (Edit > Project Settings > Player > XR Settings)

DaydreamVirtual Reality SDKs リストに加えたら、横にある折りたたみ用の矢印をクリックして他の Daydream 設定を表示します。

VR SDK リストの Daydream 特有の設定
VR SDK リストの Daydream 特有の設定

以下の表は、Daydream 設定で使用可能なプロパティーのリストと機能の説明を示しています。

プロパティー 説明
Depth Format このドロップダウンを使用して Z バッファの深さを設定します。これは可視のデータをソートし、何が実際に画面にレンダリングされるかを決定するために使用されます。
Foreground Icon プレゼンテーション用のフォアグラウンドのアイコンを Google VR Play ストアに設定します。
Background Icon プレゼンテーション用の背景のアイコンを Google VR Play ストアに設定します。
Sust Sustained Performance Mode Sustained Performance Mode を有効にすると、より長時間 XR 経験を継続できます。これは、パフォーマンスを低下させて、バッテリー寿命を向上させます。
Enable Video Surface Enable Asynchronous Video Reprojection. For more information, see the documentation about Asynchronous Video Reprojection for more information.
Enable Protected Memory Enables memory protection for DRM protected content when using Asynchronous Video Reprojection. This option only appears if Enable Video Surface has been selected. For more information, see Asynchronous Video Reprojection

Unity Player SettingsでDaydreamに使用できるプロパティー

Daydream のみをターゲットとするための最小限のプラットフォーム要件は Android 7.0 (Nougat) (SDK API レベル 24) です。Daydream と同様に Cardboard をターゲットにしている場合、サポートされてる最低 API レベルは 21 です。

Unity が正しい APK を使用し、Android の最新バージョンにアップグレードしたデバイスでのみ実行されるようにするには、Minimum API Level を変更する必要があります。

これを行うには、Player Settingsで Other Settings に移動します。 IdentificationのMinimum API Level ドロップダウンを使用して、リストの最新のAPIに設定します。

Target API Level を Daydream をターゲットにしている場合は、API レベル 24 以上に設定します。デフォルトでは、このプロパティーはインストールした中で最高のレベルを使用します。Android の API レベルの詳細は、Android PlayerSettings を参照してください。

これで、Dayream 用の Unity コンテンツを作成する準備が整いました。通常の Android の開発と同じワークフローに従ってください (詳しくは Android 開発 を参照)。Daydream 対応のデバイスでゲームをビルド、実行してください (File > Build&Run) 。 

Google VR for Unity を使って作業する

このセクションでは、UnityでGoogle VRコンテンツを作成するときに注意する必要がある重要な考慮事項について説明します。

Google VR for Unityを使用する場合は、以下の点に注意してください。

  • デバイス名のdaydreamとcardboardを使用して、特定のデバイスをXRを有効にしたい場合は、特定のデバイスを読み込みます。これを行うには、XRSettings.LoadDeviceByNameを呼び出し、デバイスの文字列名を渡します。

  • UnityへのDaydreamの統合は、Unityアクティビティのビュー階層を引き継ぎます。つまり、Daydream for Unityを初期化する前に、ビュー階層に加えられたすべての変更は、XRモードでは削除されます。

Daydream and Cardboard

DaydreamCardboard は、Virtual Reality SDKs リスト(File > Project Settings > Player > XR Settings)で別々のエントリを持ちます。 Unityは、動作するデバイス設定を見つけるまでリストを上から下に読み取ります。

リスト内のSDKを削除または並べ替えると、ビルドされた最終的なアプリケーションの機能が以下のように影響されます。

  • DaydreamCardboard の両方が Virtual Reality SDKs リストにある場合、非同期再投影は、それをサポートするハードウェアで実行されている場合に有効になります。 Sustained Performance Mode は、それをサポートするハードウェア上で実行されている場合と、Player Settings で有効になっている場合に有効です(前のDaydreamのターゲット設定を参照してください)。アプリはすべてのGoogle Playストアに表示されます。

  • CardboardDaydreamVirtual Reality SDKs リストの上にある場合、Daydreamハードウェアの場合でもアプリケーションはDaydreamモードで実行されないことがあります。

  • DaydreamVirtual Reality SDKs リスト内の唯一のアイテムである場合、UnityはXRのAndroidマニフェストエントリを追加し、XR特有のGoogle Playストアに表示されます。デイドリームは非同期の再投影を必要とするため、デイドリームをサポートするすべてのデバイスも非同期再投影をサポートします。

  • CardboardVirtual Reality SDKs の唯一の項目である場合、アプリケーションはGoogle VR Playストアに表示されません。非同期再投影と Sustained Performance Mode は、可能なハードウェアであっても無効になります。

  • GearVRやDaydreamやCardboardをサポートする予定の場合は、Oculus をリストの一番上に置きます。 GearVRをサポートする電話機はGearVR SDKを通して実行され、それをサポートしない電話機は DaydreamCardboard にフォールバックします。

  • リストの最初のデバイスとして None を追加すると、Unityは通常のアプリケーションとして開始し、スクリプトを通してXRを切り替えることができます。詳細については、APIドキュメントXRSettings.enabledXRSettings.LoadDeviceByNameを参照してください。

Cardboard for iOS

Googleは、Cocoapodsライブラリ管理システムを通してiOS用の Cardboard Native Development Kit(NDK)を配布しています。 Google VRのUnityインテグレーションは、Cocoapodsマネージャーの特定のバージョンの Cardboard NDK を使用します。このNDKはXCodeプロジェクトの作成にも使用されます。

つまり、生成されるプロジェクトは、標準のUnityプロジェクトとは異なる方法で生成されます。 Cocoapodsは、Unityプロジェクトと Cardboard NDK ライブラリとその依存関係のプロジェクトを含むラッピング XCode ワークスペースを作成します。 Cocoapodsのライブラリがないためリンカのエラーを避けるために、プロジェクトだけでなく、ワークスペースを開いたり、使用したりすることを常に確認してください。

Magicウィンドウモード

開発中、ヘッドトラッキングを利用した 非立体視ビュー を使用したい場合があります。これは、XR で2D画像を表示したり、XRアプリケーション の2Dプレビューを提供する必要がある場合に便利です。これはプロモーションマテリアルにも役立ちます。これを行うには、head tracking data にアクセスします。XRSettings.enabledプロパティーがfalseで、XRSettings.loadedDeviceNamedaydream または cardboard に設定します。

次のC#コードの例では、XRヘッドトラッキングを使用してシーン内のメインカメラを回転させ、XRSettings を使用して立体視表示を無効にします。

UnityEngine.XR.XRSettings.enabled = false;
Camera.main.GetComponent <Transform>()。localRotation = UnityEngine.XR.InputTracking.GetLocalRotation(XRNode.CenterEye);

上記の詳細については、XRSettings.LoadDeviceByNameのAPIドキュメントを参照してください。

Hardware volume controls

デイドリームSDK for Unityはネイティブオペレーティングシステム(OS)がデバイスの音量コントロールにアクセスするのを防ぎます。これにより、XRモードのときに、OSがボリュームユーザーインターフェース(UI)を表示しなくなります。デバイスの音量コントロールに手動でアクセスするには、標準の UnityPlayerActivity(AndroidのUnity Playerの主要Javaクラス)を拡張し、onKeyDownとonKeyLongPressのキーイベント関数を自分でオーバーライドします。

このプロセスの詳細については、UnityPlayerActivityクラスの拡張に関するJavaのマニュアルを参照してください。

ノート: Unityは Daydream コントローラーの音量コントロールをブロックしません。そのため、ゲームでのみコントローラーを使用したい場合は、UnityPlayerActivity をまったく拡張しないことにします。

Overriding Daydream Android libraries

Unity用の Daydream SDK には、デイドリームデバイスの開発をサポートするための2つのライブラリがあります。

  • デイドリームネイティブライブラリ:* gvr.aar *

  • Google ProtobufNano Javaライブラリ:* libprotobuf-java-nano.jar *

これらのライブラリのいずれかを置き換えるには、プロジェクトの Assets/Plugins/Android フォルダーに異なるバージョンのライブラリファイルを配置します。ライブラリファイルの名前は、正しくオーバーライドされるためには正確に一致する必要があります。

Stereo Rendering methods

マルチパスレンダリングはすべてのGoogle VRプラットフォームでサポートされています。 シングルパスレンダリングは、ドライバーレベルのインスタンス化をサポートするプラットフォームでDaydreamのみがサポートします。

Supported APIs and SDK

このセクションでは、Unity の Google VR アプリケーション開発でサポートされる API と SDK の概要を説明します。

Unity APIサポート

以下の API は Google VR for Unity で サポートされていません

サポートされているグラフィックスAPI

以下の グラフィックス API は、AndroidiOS の両方のデバイスに対して Unity でサポートされています。

Android

  • OpenGL

iOS

  • Metal

  • OpenGL

コントローラーと入力デバイス

Daydream controller

デイドリームコントローラーは回転と位置の情報を提供する3自由度を可能にし、2軸のタッチ/クリックコントローラーと2つの追加のボタンを備えています。このデバイスからの入力方法については、Google Daydream Controllerのドキュメントを参照してください。

Daydream controller
Daydream controller

Features overview

Google VRが提供する機能の詳細については、GoogleのDaydream Developerドキュメントを参照してください。 Google VR SDK for Unityでサポートされている機能の概要については、GoogleのGoogle VR for Unityを参照してください。

以下は、Google VR でサポートされている機能について簡単に説明します。

サポートされている機能セット

以下の表は、Unity で Google VR を使用する際に、サポートされる機能の概要をターゲットのモバイル VR デバイスごとに示しています。

Device Platform Rendering Input
Cardboard Android の Lollipop 以降 - OpenGL
- ステレオインスタンスレンダリング
- ステレオレンダリング
Cardboard
iOS
- OpenGL
- Metal
- ステレオインスタンスレンダリング
- ステレオレンダリング
Daydream Android Nougat 以降、互換性のあるハードウェアを使用 - OpenGL
- ステレオインスタンスレンダリング
- ステレオレンダリング
Daydream コントローラー

Resources

便利なリンク

このセクションでは、Google VR開発のトピックをさらに深く理解するための多くの有用な外部リンクを紹介します。

トラブルシューティングガイド

このセクションでは、Google VR SDKを使用して開発するときに発生する可能性のある最も一般的な問題のリストを示します。

問題 ご意見・ご要望
GvrController/GvrViewer/GvrXXXX/Instant Preview に問題があります。これを解決するにはどうすればよいですか。
これらのタイプは Google VR SDK for Unity の一部で、Google が所有しサポートしています。一般的な Unity コミュニティが質問に答えられるかもしれませんが、技術的な問題に関しては、GitHub の Google VR SDK for Unity サイトを参照してください。
Daydream のキーボードはいつリリースされますか。 Daydream Keyboard for Google VR は Google の技術で、今後の一部のコアの Android システムでリリースされる予定です。この技術のアクセスと使用は、Google とGoogle VR SDK for Unity にのみ基づいています。
iOS プロジェクトの Cardboard をビルドしようとしていますが、Xcode からリンカーのエラーが報告されます。 Google は Cocoapods ライブラリ管理システムを通じて iOS 用の Cardboard の Native Development Kit (NDK) を配布しています。Unity は、Cocoapods マネージャーからの Cardboard の NDK の特定のバージョンと統合され、NDK を使用して XCode プロジェクトを作成します。結果のプロジェクトは、標準の Unity プロジェクトとは異なる方法で生成されます。Cocoapods はラップする XCode ワークスペースを作成し、Unity プロジェクトと Cardboard NDK ライブラリとその依存関係のプロジェクトを加えます。Cocoapods のライブラリが見つからないために発生するリンカーエラーを避けるために、プロジェクトだけでなく、ワークスペースを開いたり使用したりすることを必ず確認してください。

CardboardDaydream に関するトラブルシューティングの詳細については、公式 Google VR 開発者向けウェブサイトを参照してください。


  • 2017–11–21 編集レビュー を行ってパブリッシュされたページ

  • 2017.2 の新機能

xR SDK
Vuforia SDK overview