Google VR SDKのバージョンアップ

第12回、第13回では当時の最新版である「1.10.0」に問題があったこともあり、その一つ前のリリースバージョン「1.0.3」を使用していました。その後、バージョンアップが繰り返され、執筆時点(2017年8月18日)では「1.70.0」が最新リリースとなっています。

試用してみたところ、アセットの名称やファイル配置が変わりましたので、今回は、第12回、第13回の手順を、最新版で再現する方法を説明します。

またこのバージョンでは、Unityが5.6.2p1以降のみが対応となっていますので、ご注意ください。本記事では現時点での最新バージョン 2017.1.0f3 を使用します。

Google VR SDKのダウンロード


URL : https://developers.google.com/vr/unity/download

上記URLよりDOWNLOAD SDKリンクをクリックし、リンク先のGitHubから「GoogleVRForUnity_1.70.0.unitypackage」をダウンロードします。

既存プロジェクトのアップデート

今回は触れませんが、古いGoogle VR SDKを使っているプロジェクトで、新しいGoogle VR SDKに置き換える手順も下記URLにて公開されています。

URL : https://developers.google.com/vr/unity/release-notes#upgrade_instructions

新規プロジェクトの作成

第12回と同様に進めていきます。今回も、新規プロジェクトファイルを「SimpleVR」という名前で作成します。

最初のシーンを「Test」という名前で作成し開きます。

「File > Build Settings」を選んで「Add Open Scenes」ボタンを押し、「Scenes in Build」に「Test」が追加されたのを確認します。

左下の「Platform」で、「Android」を選び「Switch Platform」ボタンを押します。

「Player Settings…」を押して出てくるInspector設定パネル内で、「Bundle Identifier」を設定しておきます。

筆者の場合はそれぞれ「jp.torques.SimpleVR」と設定しました。

VR化

「Virtual Reality Supported」のチェックボックスをONにします。

その下部に出てくるリスト「Vritual Realities SDKs」に「DayDream」か「Cardboard」を追加します。両方追加しても構いません。右下の+ボタンを押すとリストが表示されますのでそこから選んで追加して下さい。

今回の「Minimum API Level」は、「Android 7.0 Nougat」にしておきます。必要に応じて調整してください。

Google VR SDKのパッケージ取り込み

「Assets > Import Package > Custom Package…」で先ほどダウンロードした「GoogleVRForUnity.unitypackage」を選択します。

すべてを選んでいる状態で「Import」ボタンを押すとSDKのインポートが始まります。

カメラの配置

Main Cameraの配置ですが、実行時に強制的に位置が「x:0, y:0, z:0」に設定されてしまうので、親オブジェクトを階層の上に入れ、その親オブジェクトで位置調整する必要があります。

筆者の場合は、親オブジェクトをHeadとし、その親にPlayerを入れました。

初期位置は、「Player(プレイヤーの立ち位置 x:0, y:0, z:0)」-「Head(頭の相対位置 x:0, y:1.5, z:0)」-「Main Camera」となります。

座標や位置などは自分のアプリに合わせて調整して下さい。

Google VR SDKのプレファブ取り込み

  • 「Assets/GoogleVR/Prefabs/GvrEditorEmulator」
  • 「Assets/GoogleVR/Prefabs/Controller/GvrControllerMain」
  • 「Assets/GoogleVR/Prefabs/UI/GvrEventSystem」

上記の3つのプレファブファイルを、シーンに配置します。

ここまで設定したあと書き出したapkファイルをAndroid端末に入れると、ステレオ画面で動かすことができます。

また、Unityエディター上では、Altを押しながらマウスカーソルを動かすと、上下左右に首を向けたようにカメラを動かすことができます。

視線ターゲットの実装

続いて、第13回で実現したように、視線ターゲットを実装します。

「Main Camera」の子要素に、「Assets/GoogleVR/Prefabs/UI/GvrReticlePointer」を追加します。

uguiのCanvasと、Buttonを、下記のような設定で配置します。

<Canvasの設定>

  • 名前 : UICanvas
  • Canvas - Render Mode:Word Space
  • 「Pos X:0, Pos Y:2, Pos Z:3」
  • 「Width:10, Height:4」


<Buttonの設定>

  • 「Pos X:0, Pos Y:0, Pos Z:0」
  • 「Width:100, Height:30」
  • 「Scale X:0.01, Y:0.01, Z:1」

ボタン押下時のイベントを試すために、C#スクリプトと、スクリプトをアタッチするオブジェクトを配置します。


<TestSystem.csの作成>

  • 「Assets/Scripts/TestSystem.cs」というスクリプトを作成し、下記のような関数を追加します。
    public void buttonPressed(){
    
        Debug.Log ("Button Pressed!");
    
    }


<Empty Objectの設定>

  • 名前:TestSystemObj
  • 「Pos X:0, Pos Y:0, Pos Z:0」
  • 「Assets/Scripts/TestSystem.cs」をアタッチ
    先ほど作成したボタン「Button」押下時の処理に「TestSystemObj」の「TestSystem」コンポーネントの「buttonPressed」メソッドを適用して下さい。
    このOnClickイベントの使い方が分からない方は、本連載の第8回内の「ボタン押下時の処理と数字の処理」という項目に詳しく書いているので参照してください。

ここまでの作業で、視線移動と画面タッチでボタン押下の処理が可能になりました。

特定のキューブに反応させる

UGUI以外のGameObjectに反応させるためには、GvrAllEventsTriggerコンポーネントをオブジェクトに適用させます。その後の処理は、UGUIのOnClickと同様に、OnPointerClickに処理を適用することで実装可能です。

Demo

この先は、アプリごとの実装になります。「Assets/GoogleVR/Demos」以下のシーンを参考にしてください。

事例紹介

今年7月、新宿に国内最大級のVR施設「VR ZONE SHINJUKU」がオープンしました。

エヴァンゲリオンやマリオカート、ドラゴンボールなどメジャーIPを使った設置型のコンテンツが勢揃いしています。

この施設は、エンターテインメント系へのVRの活用の仕方の一つの究極系と言えるでしょう。

  • 営業時間 : 10:00 - 22:00 (最終入場時間 21:00)
  • 営業日 : 年中無休 (期間限定)
  • 料金 : 入場料 800円、こども(6歳?12歳) 500円、5歳以下 無料、1day4チケットセット 4,400円
  • 年齢制限 : VRアクティビティの対象年齢は13歳以上

著者紹介


山田宏道 (YAMADA Hiromichi) - 株式会社トルクス 代表取締役

千葉大学工学部卒業。ゲームプログラマーを経て、2005年よりフリーランス、2012年 株式会社トルクスを設立し、コンシューマ用途、ビジネス用途等、様々なiOSアプリ、ARアプリ等を受託開発。

2016年4月より島根県奥出雲町在住。現在、VR関連技術に注力しており、2016年10月に「地域おこしVR研究会」を立ち上げ、観光向けVRコンテンツなどを企画、開発中。