はじめに
2015/5/3現在、ovr_mobile_sdk_0.5.1\Doc\unity.pdfのp5で書かれている通り、Unity Pro 4.6.3とUnity Free 4.6以上が推奨です。
2015/5/3現在でのUnity5の最新バージョンUnity 5.0.1p3と、Beta accessのUnity5.1.0B4はGear VR開発には問題があるようです。
GalaxyS6を使ってGearVRの実機を使わないGearVRコンテンツ開発の方法をメインにまとめます。
(=ハコスコアプリ開発)
※GearVR 2015/5/1発売、Galaxy S6/Galaxy S6 Edge 4/23発売。
しかし既に Oculus’ Mobile VR Jamは第二マイルストーン。
この差し迫った時期に、GearVRの実機がないから開発ができないという悠長なことはいっていられない
>> Oculus’ Mobile VR Jam 2015 | ChallengePost
http://vrjam.challengepost.com/
目次
環境
- Windows 8.1
- Unity 5.1 B4
-
Cardboard SDK for Unity v0.4.10
PC設定
adbコマンドのインストール
PCの開発環境(UnityやUnreal)から、GalaxyS6の端末にGearVRコンテンツをデプロイする場合は、adbコマンドをPCにインストールする必要があります。
adbコマンドは、Android SDKのplatform-toolsに含まれています。
こちらのサイトを参考にいれましょう。
>> Android SDKのダウンロードとインストール – Android入門
http://www.javadrive.jp/android/install/index1.html
GalaxyS6設定
作ったアプリをPCからGalaxyへデプロイする場合に、GalaxyS6をデベロッパーモードを有効にしてUSBデバッグをONにする必要があります。
デベロッパーモードにする方法。端末情報のビルド番号を連打で「開発者向けオプション」を表示させる。
USBデバッグをONにする方法。「開発者向けオプション」から設定
※参考 Galaxy側の設定をしないでUnityで実行しようとしたときのエラーメッセージ
* Make sure USB debugging has been enabled * Check your device, in most cases there should be a small icon in the status bar telling you if the USB connection is up. * If you are sure that device is attached then it might be USB driver problem, for details please check Android SDK Setup section in Unity manual.
GearVRコンテンツ開発
まずはUnity5.1で、単純なAndroidアプリのデプロイ手順について記載。
Unity5.0以前のVirtual Reality Supportedがないバージョンで、Oculus Mobile SDK 0.5.0を使う場合の方法はこちら
>> Oculus Rift PC SDK, Samsung Gear VR Mobile SDK, Docs, Integrations | Oculus Developer Center
https://developer.oculus.com/documentation/#filter=mobile
Mobile Development Documentation 0.5.0のPDFを参照。
まずは単純なAndroidアプリをデプロイできるようにする
Unityでデプロイ
USBで端末を接続してBuild & Runを実行(Ctrl+B)
※以下の設定を行う
※注意 Windows8.1+Unity 5.1 B5での実行結果です。別のバージョンではエラーなどの挙動が異なる場合があります。
[Unity]初回のみ。アプリのBundle Identifierを設定
PlayerSettingのOther SettingsのIdentification項目にあるBundle Identifierを「com.Company.ProductName」から適当に変更します。
※jp.2vr.GearVRを設定しようとしたら各セグメントの先頭に数字はNGでエラーとなった
(今度からドメイン取得するときは先頭英字にしよう。。)
※参考 もしcom.Company.ProductNameのままや、各セグメントの先頭で数字を設定してBuildした場合
Please set the Bundle Identifier in the Player Settings. The value must follow the convention 'com.YourCompanyName.YourProductName' and can contain alphanumeric characters and underscore. Each segment must not start with a numeric character or underscore.
※2回目以降のBuild And Runで発生
おそらく前のBuild And Runで実行したプロセスが実機で動いているとNG。
いったん端末でHomeボタンを押して実行中のアプリを閉じて、再度Build And Runを行うか、Unity再起動で解決。
Unable to install APK to device. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.
[Unity]初回のみ。Build and Run時にAndroid SDKのフォルダを選択
GearVRなしでGearVRコンテンツ開発
=ハコスコアプリ開発
本来であれば、Unity5.1から実装されたVirtual Reality SupportedをONにするだけで、シーンにあるMain CameraがGearVR用のSide by Sideのカメラに置き換わり、ヘッドトラッキングも有効になるはず。
詳細
待ちに待ったUnityのネイティブOculusRift対応。Unity5.1b3のVR Supportedを試してみたメモ(Pro限定)
http://2vr.jp/2015/04/19/unity5-1-vr-supported/
Google Cardboard SDKで代用する
>direct link to unitypackage からCardboardSDKForUnity.unitypackageをダウンロードして、適宜必要なファイルをプロジェクトにImportする。
https://developers.google.com/cardboard/unity/download
Cardboard SDKでヘッドトラッキング
- CardboardSDKForUnity.unitypackageから下の絵にあるProjectビューの内容をImport
- CardboardHead.csをMainCameraにつければOK
これで、Build And Run(Ctrl+B)で実行すると、端末の傾きで画面が動きます。
Cardboard SDKでSide By Sideのステレオ立体視
=ハコスコDXアプリ開発
GearVRはサイドバイサイドの立体視=2つのカメラで描画負荷が2倍になります。
描画負荷をGearVRの環境に合わせて確認するために、Cardboard SDKでステレオ表示を行います。
→VR Modeで画面が真っ暗未解決。
GearVR本体で動かすためのプロジェクトの設定
TODO: GearVRが届いたときにこの設定を行う。
参考
>> Oculus Rift PC SDK, Samsung Gear VR Mobile SDK, Docs, Integrations | Oculus Developer Center
https://developer.oculus.com/documentation/#filter=mobile
Oculus モバイル提出ガイドライン(PDF)
シグネチャーファイルの作成
Oculusシグネチャーファイル(osig)とAndroidアプリケーション署名を行います。
詳細はOculus モバイル提出ガイドライン(PDF)のp.5参照。
osigセルフサービスポータルでosig発行リクエストを行う
https://developer.oculus.com/osig/
これをやることで、アプリケーションのソースコードからデバイスのローレベルへのアクセスを可能にしているらしい。
コンテンツの実行中に、CPUやGPUのクロックレベル、クロックアップとクロックダウンをプログラムコードから制御が可能になっている。
Androidアプリケーション署名作ってUnityで設定
Unityはデジタル署名を仮で発行しているためデバイスにインストールできるらしい。
英語 >> Signing Your Applications | Android Developers http://developer.android.com/tools/publishing/app-signing.html
日本語 >> 「Androidアプリケーション署名」Google検索
Unityで設定の詳細は、Oculus モバイル提出ガイドライン(PDF)のp.5、「Androidアプリケーション署名とUnity」
AndroidManifest.xmlの設定
Oculus モバイル提出ガイドライン(PDF)のp.6、「アプリケーションマニフェストファイルの要件」を参考に設定。
その他
情報元
Oculus モバイル提出ガイドライン(PDF)のp.9、「よくある質問」
>> Samsung Gear VR | Oculus VR Forums
https://forums.oculus.com/viewforum.php?f=62
- Oculus Homeからアプリ起動(グラフィックの表示)は4秒以内。4秒を超える場合はロード画面を表示したり、何かしら表示を行う。
- 起動時のロゴやライセンス、免責事項などは5秒以内、ステレオ表示、ヘッドトラッキングに対応(OnGUIで画面に張り付けずに、3D Textで空間に浮かべる)
- OculusHomeへの復帰機能をつける。復帰時の画面効果はユーザーが不快に思わぬよう各位で工夫。
Unity5.1のVirtual Reality Supportedに含まれる?
多分含まれなさそうなので、過去バージョン、Ocululs Mobile SDK0.5.0のサンプルDemoシーンに含まれてそう。それっぽい実装かスクリプトを参考にする。
- 電源状態の管理。プログラムコードからCPUとGPUのクロックレベルをそれぞれ弄れるが、アプリが60FPS維持できる最低限のクロックレベルに抑える。コンテンツを最適化してGPUとCPUのクロックレベル引上げは最終手段。
- ゲームパッド
Bluetoothで接続。ゲームパッドにも対応するコンテンツの場合は、明示的にわかるように通知する。快適なユーザー体験を考える。(VR内で3DTextとかで通知、表示したりすればユーザーがわかりやすそう。)
基本GearVR本体側のタッチパッドでできるスワイプ、タップで操作可能(2本以上の指とかできるのかな?)なコンテンツを作る方がいい。
わざわざゲームパッドを用意する必要もない、ユーザーがゲームパッドの操作に慣れていない場合は無いほうがいい。視線で操作や、視線+横タップがよさそう。
- 戻るボタンの挙動について
長押しはユニバーサルメニューの表示が必須。短く押したときは、コンテンツの中での戻る操作。もし特別ない場合はAndroidのアプリと同じく、1度目で確認ダイアログ、2度目でコンテンツを終了してOculus Homeへ戻る。
- 音量ボタン
Unity5.0以前+Oculus Mobile SDK0.5.0の場合は、Oculus Mobile SDKが提供するVR音量UIを使う。
Unity5.1からはVirtual Reality SupportedをONにすれば大丈夫?不明。
- 通信方法
消費電力的な意味でWi-Fiを強く推奨。
ログインやランキング程度ならLTEでも可
Unreal EngineでGearVRコンテンツを開発する方法
おかずさん @pafuhana1213 がまとめられているそうです!
@yuujii おかずさんがまとめてUPしてくれてます!https://t.co/HlIrVjPbZw
— alwei (@aizen76) 2015, 4月 25
UE4でGear VR開発してみる 準備編 – ぼっちプログラマのメモ
http://pafuhana1213.hatenablog.com/entry/2015/04/25/223352
未解決の問題が残っていますが、簡単に纏めてみました UE4でGearVR開発してみる 準備編 – ぼっちプログラマのメモ http://t.co/JwQIUNHbdw #UE4 #UE4Study #Oculus #GearVR
— おかず (@pafuhana1213) 2015, 4月 25
Epic公式も本気
>> Unreal Engine | Samsung Gear VR Headset Prerequisites
https://docs.unrealengine.com/latest/JPN/Platforms/GearVR/index.html
>> Unreal Engine | Samsung Gear VR Best Practices
https://docs.unrealengine.com/latest/JPN/Platforms/GearVR/BestPractices/index.html
>> Unreal Engine | Samsung Gear VR Debugging
https://docs.unrealengine.com/latest/JPN/Platforms/GearVR/Debugging/index.html
うぉ…気づいたらUE4の公式ドキュメントにGear VR用のページが追加されてた…いつのまに… https://t.co/wiiWDMa7Ha
— alwei (@aizen76) 2015, 4月 19
Gear VR用の最適化プラクティスまである。#UE4 https://t.co/oC0V15WRG5
— alwei (@aizen76) 2015, 4月 19
Gear VRのデバッグ方法。adb経由のワイヤレスデプロイのやり方まで載ってる… #UE4 https://t.co/RfhanGyOHJ
— alwei (@aizen76) 2015, 4月 19
Gear VR設定中の方はこちらをチェック。http://t.co/AUNNHvI9k6
— Unreal Engine JP (@UnrealEngineJP) 2015, 4月 25
謝辞
ゆなゆなさん @yunayuna64
@yuujii お、自作アプリならいけそうですね。というかGearVRじゃなく普通のハコスコアプリになってしまう?w
— yunayuna64 SKB03 (@yunayuna64) 2015, 4月 24