Unityで作った3DゲームをOculus Rift対応VRゲーム化したときの話

この記事は Oculus Rift Advent Calendar 2015 14 日目の記事になります。
昨日はyouten_redo さんの「Gear VRでBLEビーコンによるポジトラ」でした。難しい内容でしたが、スマホVRでポジトラができるようになれば可能性が広がりますね!

はじめに

私が初めてVRゲームを作ったときの話を記事にします。
Macで開発しており、Oculus Runtimeは「Oculus Runtime for OS X V0.5.0.1-beta」、Unityのバージョンは5.1.1f1 Personalを使用していますので、参考にされる場合はご注意ください。

今回は習作のこいつをVR対応させてみました。
BITBプレイ動画.gif
ボールを飛ばして箱の中に入れていくゲームです。
三回連続で失敗するとゲームオーバーとなります。

これがこうなりました。
VRgif.gif

VR対応の流れ

VR対応って難しいのかな・・・。
d6ccd49a895e64a0d966c6f93b9a2b34.gif
- 手順 -
1.Unity上でVirtual Reality SupportedをONにする
2.UI位置の調整
3.入力方法の調整

たったこれだけ!
単純にVR化したいだけなら 1.の手順だけで完了します。

それでは少し詳しく解説していきます。
1.Unity上でVirtual Reality SupportedをONにする
Player Settings...からVirtual Reality Supportedのチェックボックスにチェックを入れた状態にするとOculus Riftに対応した状態になります。
スクリーンショット 2015-12-13 1.06.22.png
たったこれだけでVR対応のゲームになるなんてすごいですね!

2.UIの配置・入力
通常のディスプレイに表示する感覚でUIを配置すると、Oculus Riftで確認した時に様々な不都合が発生します。UIが表示されていなかったり、視点に近すぎたり、画面の端すぎて見辛かったりといった感じです。
また、解像度もあっていなかったのでCanvasの設定をこのように変更しました。
スクリーンショット 2015-12-13 2.42.00.png
あとは地道に適切なポジションにUIを配置するだけです。

3.入力の方法
何も設定しなければ、VRモードでゲームをしている間マウスでuGUIのボタンを押すことはできません。
そのため、UIの入力はこちらの記事を参考にさせていただきました。
Unity VRモードとuGUIの連携 - Zabaglioneのさもありなん
こちらの記事に沿って、BasicLookInputModule.csを作成してEventSystemにアタッチ。
「画面の中心にボタンを置いて左Ctrlボタン押下」することでuGUIのボタンからonClickイベントを呼び出せるようになりました。
ついでに画面の中心がわかりやすいようにレティクルを作りました。
これで無事にUIの入力も完了です!

Unityエディタ上で見るとこんな感じです。
スクリーンショット 2015-12-13 3.16.26.png
レティクルはちっちゃく見えるし全体的に中央よりに見えますが、Riftをかぶってみると意外とちょうどいい感じです。

VR化するときに困ったこと、難しかったこと

・UIの表示位置を調整しにくい
Unityのエディタ上とOculus RIftをかぶった時の見え方が違うので、エディタで調整してはかぶって確認するという手順を踏むことになりました。

・画面隅にスコア表示などするとすごく見にくくなる
UIのデザインを考え直したりしなければなりません。

・オプション画面が操作できない
導入したスクリプトではuGUIのスライダーを操作することができませんでした。

・エディタ上でRift画面出力時の中心がどこだかわからない
手作業で探しました。いい方法があればぜひ教えていただきたいです...

今後の課題

・ランキング画面でスクロールできなくなった
もともとはドラッグすることでスクロールするUIなのですが、Rift使用中は使えない機能となっています。こちらもいい解決方法を探していきたいです。leap motionやOculus Touchを使えば操作できる気がします。

・視点変更機能を削ることになった
サブカメラがうまく機能しないため、Main Camera以外のカメラを使えないようにしてあります。
視点変更難しい...

・UI配置
VRゲームのためのUIデザインを考えないといけないですね。現状はとりあえずここにおいておきますね的な配置なので、快適な配置を模索していきます。

・VR酔い
エディタ上だと30FPS程度しか出てない模様...。これだとさすがに酔ってしまいます。Oculus Rift DK2では75FPSの確保が必須なのでこりゃいかんって感じです。私の環境はMac Book Proなので、いいPCだったらサクサクなはずと思いたい。
FPSを出すためには通常のゲーム作成時と同様に負荷の削減をすればよいとのこと。とりあえずライト沢山使ってるのでこれを削るだけでも軽くなりそうです。

ということで、これを...
スクリーンショット 2015-12-13 3.42.31.png

こう!
スクリーンショット 2015-12-13 3.43.48.png

結果、平均30FPSから平均60FPSまで改善されました!
ライトは重い。

おわりに

VRゲーム作るのって難しいのかな?と思いつつ始めたVR化作業でしたが、意外とすんなりできました。
もっと良質なVRコンテンツを作るためには考えることも身につけることもまだまだ沢山ありますが、先人たちの知恵やUnityの力を集結すればVRゲーム制作だって怖くない!
2016年というVR元年に向けて、VR技術を身につけていきましょう!!

今回作ったVRアプリはこちらからダウンロードできますが、win版は動作確認取れないのでmac版のみとなっております。
Win版はMacのbootcamp環境が整ったらあげたいと思います。

明日はxxxxMakotoさんです!

この記事へのコメント


この記事へのトラックバック