書評『UnityによるVRアプリケーション開発』

Unityを使ってVRアプリを作ろうという本です。実際に全て作成しながら読んでいきましたがUnityの操作方法などは丁寧に書かれているので特にUnityを使ったことがなくても大丈夫と思います。

Oculusを対象に書かれてますがVIVEでもSteamVR Pluginを使って問題なく動作しました。

VRについての考察

第1章ではVRとは何か、ARとの違い、VR体験の種類、VRに必要な技術スキルなどVR全体についての考察が記されています。

VRが利用される分野として以下を挙げています。

  • 観光と旅行
  • 機械工学と工業デザイン
  • 建築と土木工学
  • 不動産
  • 医療
  • 心の健康
  • 訓練
  • エンターティンメインとジャーナリズム

個人的にもVRはゲーム以外の分野でより活躍しそうな気がしてます。

準備作業

2章からは実際にUnityを起動してこれからのアプリで使用するオブジェクトなどを配置しながらUnityの基本的な使い方を学びます。

UnityのStandardAssetの一つ、ThirdPersonControllerをEthanと名付け配置します。

またBlender(フリーの3Dモデリングソフト)を使って簡単なオブジェクトをモデリングしてUnityにImportして使います。Blenderに関しても操作方法がしっかり書いてあるので問題はありません。

これでとりあえず世界ができて見渡すことができるようになります。

3章ではビルド方法の説明があります。

また、ビルド方法に加えてVRの専門用語の説明もありました。

  • FOV
  • IPD
  • 視覚的歪曲補正
  • スクリーンドア効果
  • FPS
  • ヘッドトラッキング
  • 位置トラッキング(インサイドアウト/アウトサイドイン)
  • Oculusのタイムワープ

等、VR界でよく聞く言葉たちです。

実際に作成していく

4章からは実際の作成作業が始まります。

Ethan

まずは第2章で配置したEthanをThirdPersonControllerからAIThirdPersonControllerに変更してNavMeshを利用してランダムに歩いてもらいます。

そこからさらにインタラクティブな要素が加わってきます。カメラ(HMD)からレイを飛ばして自分が見た方向にカーソルを表示させます。

そしてEthanをそのカーソルに向かって動くようにします。

さらにEthanを見るとEthanがパーティクルをだし、

3秒見続けると爆発するようになります。

かわいそうなEthan…

UI

VR向きのUIのサンプルをUnityのCanvas上に構築していきます。

バイザーヘッドアップディスプレイ(バイザーHUD)

視界上にオーバーレイ表示され、頭を動かしても常に同じ位置に表示されます。

右上に表示されている文字”ようこそ!…”がそれです。ヘルメットの顔のシールド(透明な風よけ)部分に情報が表示されているイメージです。

またこの変形版として照準カーソルが紹介されています。

ちょっと見にくいですが赤い十字架がカーソルです。

どこを見ても常に画面の同じ位置に表示されているのが特徴です。

ウィンドシールドヘッドアップディスプレイ(ウィンドシールドHUD)

バイザーHUDに似ていますが位置は固定されていません。自動車のフロントガラスに情報が表示されているイメージです。

ゲーム要素UI

スコア表示などに使われるものです。

特定の位置にくっついていて、そっちを向かないと見えません。

個人的にはスコアはバイザーHUDの方がいいような気もしますが…

情報バブル

マウスカーソルを乗せると表示されるようなやつ、あれです。

ゲーム内ダッシュボード

コックピットの計器盤のようなものです。

レスポンシブルオブジェクトUI

例えば普段は表示されてないけどヘッドセットの動きに応じて表示されるようなUIです。

サンプルとして先ほどのゲーム内ダッシュボードを下を見たときのみ表示されるような仕組みを説明しています。

一人称のキャラクター

次は一人称です。ここまではヘッドセットの向きを変えることはできましたが、自分が動くことはできませんでした。VRの1番の魅力はやはり一人称だと思います。RigidBodyFPSControllerを使って話が進んでいきます。

この章では自分自身を動かしたり、キャラクターの高さの調整・センタリングなどの説明があります。より没入感が得られるように頭と体の動きを分離する、自分の足をみえるようにする、などといった話も出てきます。

また自分の鼻を見えるようにするとVR酔い防止に効果があるとのことです。モニタゲームでもFPSなんかだと微妙に気分悪くなることもありますが、VR酔いは半端ないですね。酔うとその日1日中ダウンしてます。ただ鼻は見た目はちょっといまいちな気がしますけどね…

他にもVR酔いのために考慮すべきことが書かれています。

  • 早く動きすぎない
  • 前を見る
  • コンフォートモードの提示

等々、全部で10項目挙げられています。

物理

Unityの物理挙動についてアプリを作りながらの説明が続きます。

弾むボール

ボールが跳ねます。

ヘディング

ボールをヘディングして弾ませます。

トランポリン

青い丸がトランポリンです。

この上に乗ると…

飛びます。

雲、地球、ロゴ、エレベーターそしてジャンプ

空に雲を表示して、地球が回って、会社のロゴが表示され、エレベータで上下して、ヘッドセットの動きで(急激にY座標を変化させることで)ジャンプします。

ちなみにこの本、日本語版はO’REILLYからでてますが、オリジナルの英語版はPACKTからの出版です。

もともとのPACKT版ではもちろんここのロゴはPACKTでした。

O’REILLYとPACKTってライバル企業だと思うんですが…でも他社であってもいい本があれば翻訳してくれるってのはいいですね。

ウォークスルー

建物の中に展示されている絵画を見て回るアプリです。自分では動かずレールの上を自動的に動く感じです。ちょっと酔います…

Blenderで作った建物をインポートして、スポットライトを使って演出します。

めんどくさかったのでかなり端折って作りました…

またこの章ではモデルの簡素化、メッシュの代わりにテクスチャを使う、等パフォーマンスを上げるためのテクニックについても記述されています。

360度映像メディア

この章では360度を活用したメディアの表示についてです。

水晶玉

球体の外側にテクスチャを貼ります。

魔法の球体

写真では分かりにくいですが球体の内側に写真が貼り付けており、球体に頭を突っ込むと写真が見れます。

パノラマ画像

パノラマ画像が円柱の内側に貼り付けられています。

インフォグラフィック

インフォグラフィックとは”情報またはデータを表すために使用される視覚的なグラフや図のこと”だそうです。

円柱の内側に歴史の年表が貼り付けられています。

円柱は結構高さがあり、内部をエレベーターのように上下に移動して年表を見ることができます。

上記以外にもいくつか360度メディアのサンプルが説明されています。

マルチプレイヤー

VRを使ったマルチプレイヤーのアプリを作ります。Unityのネットワーク機能を使ったクライアントサーバー方式のアプリです。

VR内にはプレイヤーのアバターが表示されます。

VRを使ったSNSはキラーアプリがでると社会が変わりそうな気がします。

感想

VRに興味を持ったUnity初心者が対象という印象です。Unityに詳しくてこれからVRアプリを作る、という人にも十分参考になりそうです。

VRはまだ新しい技術ということもあって大手のゲームメーカーであっても試行錯誤しているというのが正直なところでしょう。まだ情報が少ない中まずはスタート地点としていい書籍だと思います。

ちなみにOculus TouchやVIVEが発売される前に書かれていることもあってコントローラーに関する記述はほぼありません。付録でDayDreamコントローラのプログラミングについては若干の記載があったくらいです。

それにしてもいつになったらDayDreamを日本で発売してくれるんでしょうね…

※2017/10/06追記:日本でも発売決定しました!