ENGINEER BLOG

ENGINEER BLOG

Unity+Google CardbordでカンタンVR

こんにちは、コンサルティングサービス本部の朝日です。  DayDreamも間近っぽいのに今更ですが、Unityを使ったGoogle CardbordでのVRアプリ開発のさわりを紹介します。

用意する物


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)

がインストールされた状態にしておいて下さい。

img1

サンプルを動かしてみる


Unityを起動して、プロジェクトを作ります。

プロジェクトが開いたら、まずFile→Build Settings…で「Android」を選択し「Switch Platform」ボタンを押して切り替えます。

img2

あと、スマホの向きよって縦向き表示にならないように、Player Settings…から

img3

Resolution and Presentation→Orientation→Default Orientationを「Landscape Left」に設定し、

img4

ビルドに必要なのでOther Settings→Identification→Bundle Identifierを適当な名前に変更しておきます。

img5

次に、Assets→Import Package→Custom Package…から、展開しておいたGoogle VR SDK for Unityの中のGoogleVRForUnity.unitypackageを選択し全てImportします。

img6

Importが終わったら、デモ用シーンを開きます。 ProjectウィンドウからAssets→GoogleVR→DemoScene→HeadsetDemoの中のDemoSceneをダブルクリックして下さい。

img7

Play Modeボタンを押して下記の様な画面が表示されれば大丈夫です。

img8

最後に、実機で動かすためにPCとスマホをUSBケーブルで接続します。 スマホ側では「開発者向けオプション」で「USBデバッグ」をONにしておきましょう。

img9

File→Build Settings…から「Build And Run」ボタンを押すと、スマホにアプリがインストールされて起動するはずです。 (うまくいかない場合は、作成されたapkファイルをスマホに転送してからインストールしてみてください。 その際は「セキュリティ」で「提供元不明のアプリ」のインストール許可が必要です)

img10

アプリが起動したらViewerにスマホをセットする前に、歯車アイコンをタップして、Viewerのセットアップをしておきます。

img11

DSCVRでは本体の横にQRコードがあるので、それを読み込ませて完了です。 スマホをViewerにセットして見てみましょう。

img12

簡単なアプリを作ってみる


次は、デモではなく新規に簡単なアプリを作ってみましょう。

File→New Sceneで新規シーンを作成したあと、いくつかのオブジェクトを追加してみます。

GameObject→3D Object→Cube、Sphere、Capsule、CylinderとGameObject→Particle Systemを追加します。

img13

そして、それぞれの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

img14

これでカメラの上と前後左右にオブジェクトが配置されました。

VR対応するにはAssets→GoogleVR→Prefabsの中のGvrViewerMainをHierarchyウィンドウにD&DすればOKです。

img15

あとは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」ボタンを押してください。

img16

次に、背景に設定するためのマテリアルをAssets→Create→Materialで作成します。

作成されたマテリアルを選択して、InspectorウィンドウでShaderを「Skybox/Cubemap」に設定し、Cubemap(HDR)に先ほどの画像をD&Dします。

img18

最後に、Window→Lightingを開いて、作成したマテリアルをSkyboxにD&Dします。

img19

一眼版にする

VRなどの3D映像は子供の眼の成長に悪影響を及ぼす可能性が指摘されているため、たいていのVRデバイスでは年齢制限していることが多いと思います。

子供でも見られるように立体視しないアプリにするにはGvrViewerMainのVR Mode Enabledのチェックを外してください。(ハコスコ一眼モデルやスマホ単体で見る形になると思います)

img20

以上、今回は非常に簡単なアプリでしたが、さらに移動できるようにするなどより高度なことについてはUnityについて調べてチャレンジしていってもらえればと思います。