
こんにちは、コンサルティングサービス本部の朝日です。 DayDreamも間近っぽいのに今更ですが、Unityを使ったGoogle CardbordでのVRアプリ開発のさわりを紹介します。
用意する物
- Unity 5.4.1 Personalで大丈夫です。
- Google VR SDK for Unity 1.0
- Android SDK 「コマンドライン ツールのみ入手する」でOKです。
- Java SDK
- Androidスマートフォン
- Google Cardboard Viewer
ViewerはGoogleのサイトなどを参考に、「Works with Google Cardboard」の表記のあるものを用意します。
今回はI AM CARDBOARDのDSCVRを使いました。
インストール
Unity、JDKについては省略。 Google VR SDK for Unity はどこかのフォルダに展開しておいて下さい。
Android SDKはインストール or 展開後にSDK Managerを実行して、
- Android SDK Tools
- Android SDK Platform-tools
- Android SDK Build-tools(Rev.23.0.3)
- Android 6.0 (API 23) – SDK Platform(API23 Rev.3)
がインストールされた状態にしておいて下さい。
サンプルを動かしてみる
Unityを起動して、プロジェクトを作ります。
プロジェクトが開いたら、まずFile→Build Settings…で「Android」を選択し「Switch Platform」ボタンを押して切り替えます。
あと、スマホの向きよって縦向き表示にならないように、Player Settings…から
Resolution and Presentation→Orientation→Default Orientationを「Landscape Left」に設定し、
ビルドに必要なのでOther Settings→Identification→Bundle Identifierを適当な名前に変更しておきます。
次に、Assets→Import Package→Custom Package…から、展開しておいたGoogle VR SDK for Unityの中のGoogleVRForUnity.unitypackageを選択し全てImportします。
Importが終わったら、デモ用シーンを開きます。 ProjectウィンドウからAssets→GoogleVR→DemoScene→HeadsetDemoの中のDemoSceneをダブルクリックして下さい。
Play Modeボタンを押して下記の様な画面が表示されれば大丈夫です。
最後に、実機で動かすためにPCとスマホをUSBケーブルで接続します。 スマホ側では「開発者向けオプション」で「USBデバッグ」をONにしておきましょう。
File→Build Settings…から「Build And Run」ボタンを押すと、スマホにアプリがインストールされて起動するはずです。 (うまくいかない場合は、作成されたapkファイルをスマホに転送してからインストールしてみてください。 その際は「セキュリティ」で「提供元不明のアプリ」のインストール許可が必要です)
アプリが起動したらViewerにスマホをセットする前に、歯車アイコンをタップして、Viewerのセットアップをしておきます。
DSCVRでは本体の横にQRコードがあるので、それを読み込ませて完了です。 スマホをViewerにセットして見てみましょう。
簡単なアプリを作ってみる
次は、デモではなく新規に簡単なアプリを作ってみましょう。
File→New Sceneで新規シーンを作成したあと、いくつかのオブジェクトを追加してみます。
GameObject→3D Object→Cube、Sphere、Capsule、CylinderとGameObject→Particle Systemを追加します。
そして、それぞれのPositionを以下のように設定します。
name | x | y | z |
---|---|---|---|
Cube | 0 | 5 | -10 |
Sphere | -5 | 1 | -10 |
Capsule | 5 | 1 | -10 |
Cylinder | 0 | 1 | -5 |
Particle System | 0 | 1 | -15 |
これでカメラの上と前後左右にオブジェクトが配置されました。
VR対応するにはAssets→GoogleVR→Prefabsの中のGvrViewerMainをHierarchyウィンドウにD&DすればOKです。
あとはFile→Save Sceneで保存してから、File→Build & Runで起動します。
以上のように3Dモデルさえあれば、容易にVR表示することができます。(実際はその3Dモデルを用意するのが大変だったりするのですが…)
アセットストアなどに無料の3Dモデルもありますので、色々試してみるのも良いでしょう。
応用編
その他、簡易なVRとしてRICOHのTHETA Sなどの360度カメラの画像をVR Viwerを通してみるタイプがあるので、そういった画像を見られるようにしてみます。(ストリートビューやCardboardカメラのような感じです)
先ほどのアプリの背景を全天球画像にしてみましょう。 360度カメラがない場合、Googleで「equirectangular」というキーワードで画像検索したものが使えます。
まずは用意した画像をプロジェクトにD&Dします。 取り込んだ画像を選択して、InspectorウィンドウでTexture Typeを「Cubemap」に、Mappingを「Latitude-Longitude Layout(Cylindrical)」に設定して「Apply」ボタンを押してください。
次に、背景に設定するためのマテリアルをAssets→Create→Materialで作成します。
作成されたマテリアルを選択して、InspectorウィンドウでShaderを「Skybox/Cubemap」に設定し、Cubemap(HDR)に先ほどの画像をD&Dします。
最後に、Window→Lightingを開いて、作成したマテリアルをSkyboxにD&Dします。
一眼版にする
VRなどの3D映像は子供の眼の成長に悪影響を及ぼす可能性が指摘されているため、たいていのVRデバイスでは年齢制限していることが多いと思います。
子供でも見られるように立体視しないアプリにするにはGvrViewerMainのVR Mode Enabledのチェックを外してください。(ハコスコ一眼モデルやスマホ単体で見る形になると思います)
以上、今回は非常に簡単なアプリでしたが、さらに移動できるようにするなどより高度なことについてはUnityについて調べてチャレンジしていってもらえればと思います。