のしメモ アプリ開発ブログ

Unityアプリとかロボットとか作ってるときに困ったこととかメモ

GearVRコントローラーをUnityで使う

GearVRコントローラーを使う方法についてメモです。

GearVRコントローラーがついに日本で発売となり、そのGearVRコントローラーに対応した「ZOMBIE ELEVATOR」が発売されました!
リアル系なゾンビシューティングゲームです。是非やってみてください。

OculusStoreリンクはこちら

【本題】GearVRコントローラーをUnityで使う

1. GearVR用にプロジェクト設定をしておく

PlayerSettingsでPlatformがAndroidになっていることを確認するなど、色々設定項目を確認。
今回は説明をスキップします。

2. OculusUtilities.unitypackageをダウンロード

OculusのサイトからSDKをダウンロードしてくる
https://developer.oculus.com/downloads/package/oculus-utilities-for-unity-5/

3. OculusUtilities.unitypackageをインポートする

ダウンロードしたファイルを解凍し、対象のプロジェクトにインポートする

4. OVRCameraRigを配置

既存のメインカメラを削除し、
Assets/OVR/Prefabs/OVRCameraRigをシーンに配置
これだけでLeftHandAnchor、RightHandAnchorのGameObjectにコントローラーの動きがトラッキングされるようになる

5. GearVRコントローラーのモデルを表示する


GearVRのコントローラーを表示させたい場合

LeftHandAnchorにAssets/OVR/Prefabs/GearVrControllerを配置して、OVRGearVRControllerのControllerの項目をLTrackedRemoteに変更

右手の方も同様にRightHandAnchorにAssets/OVR/Prefabs/GearVrControllerを配置して、OVRGearVRControllerのControllerの項目をRTrackedRemoteに変更する

Hierarchyはこんな感じに

※ 他のモデルを利用する場合は他のモデルをHandAnchorの子供に入れたり、HandAnchorの位置をスクリプトで追従させるなどで対応できる

6. 入力周りのコード

Assets/OVR/Scenes/GearVrControllerTestのシーンを見るとデモシーンが見れる
デモシーンのOVRGearVrControllerTest.csでは様々な数値の取得していることが確認できる

・単純なクリックだけであればFire1等で取得することも可能

・OVRInputからOculusRiftと同じような形で入力を受け取ることが可能

// 右利き用のコントローラーが接続されているか
OVRInput.IsControllerConnected(OVRInput.Controller.RTrackedRemote);

// トリガーの取得
OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger);

・コントローラーを検知して分岐処理を入れたりも

// コントローラーの検知
var controller = OVRInput.GetActiveController();
if(controller == OVRInput.Controller.LTrackedRemote)
{
    // 左利き処理
}
else if(controller == OVRInput.Controller.RTrackedRemote)
{
    // 右利き処理
}
else
{
    // コントローラーが接続されていない場合の処理
}

7. デバッグについて

OculusRift+OculusTouchでUnityEditor上での動作確認ができる
GearVRの実機で見るのが一番だが、通常の確認はOculusRift+OculusTouchでOK

8. GearVRコントローラーが使える

すごい便利。Gaze卒業!

GearVRコントローラーを利用したアプリを作る上で気をつけたいことメモ

・GearVR含め、コントローラーはポジショントラッキングはしていないので、歩き回るようなコンテンツは作れない。
・360度回転するようなコンテンツは、コントローラーのトラッキングがずれていく。ゾンビエレベーターも真後ろは出現しないようにしている。
・コントローラーを全員が持っている訳ではない。まだまだ持ってないGearVRユーザーが多いので、コントローラーがない場合の対応も入れたほうがいい。
・コントローラーは2つ同時に接続できない。
・右利き、左利きの場合の見え方を検討しないといけない。右手のモデルが標準のゾンビエレベーターでは、左利きの場合は手のスケールを-1して反転させている。

Unityで作ったVRアプリをViveportで配信する手順

OculusRift向けにリリースしていたMakeboxをHTC Viveに対応し、Viveportでリリース対応したときのメモ。
既に作っているVRアプリをViveportでリリースしたい人は参考にしてみてください。

Makeboxとは

ViveportにてMakeboxをリリース
Makeboxは簡単にVoxelモデリングができるVRアプリケーションです。

ダウンロードはこちらから

【本題】Viveportへの配信手順

おおまかな流れ

1. 開発者登録する
2. SteamVRを入れる(SteamVR必須ではないかも?要確認)
3. DRM対応をする
4. 申請する
5. 配信される

ざっくりと説明していきます。

続きを読む

Unity5.6でDayDreamのデモを動かす

Daydreamのコントローラーを使ったデモを見るための手順をメモ

環境

Unity 5.6.1f1
gvr-unity-sdk 1.40.0

手順

1. gvr-unity-sdkをダウンロード

リリースしている1.40.0をダウンロードします
https://github.com/googlevr/gvr-unity-sdk/releases

2. サンプルプロジェクトを開く

Unityで`gvr-unity-sdk-1.40.0\Samples\DaydreamLabsControllerPlayground`のプロジェクトを開く

3. Target PlatformをAndroidに変更

Build SettingsからAndroidにSwitchPlatformをする

4. AndroidAPIレベルを設定

PlayerSettingsからMinimum API Level of 24に設定する

5. AndroidManifestを差し替え

Assets/Plugins/Android/AndroidManifest-Daydream.xmlをAssets/Plugins/Android/AndroidManifest.xmlに書き換え

6. ビルドをして端末で確認する

デモ動作する

OculusStoreに登録するスクリーンショットをUnityで作成する

4kモニタを持っていない人用です。
2kモニタ以下ですとOculusStoreに登録するためのスクリーンショットのサイズが撮影できないので、Unityで任意のサイズを指定してスクリーンショットを撮影するスクリプトを書きました。

※ちなみにOculusStoreで必要なスクリーンショットのサイズは2,560 x 1,440

使い方

1. ScreenshotCapture.csを任意のオブジェクトにアタッチ
2. 撮影用のカメラを配置(メインカメラの子供とかに配置するのが望ましいかも)
3. アプリを実行
4. 任意のタイミングで撮影キーを押す(デフォルトはcキー)
5. Assetsの直下にスクリーンショットが生成されていることを確認する

OculusStore等で用意するスクリーンショットをUnityで撮るやつ · GitHub