UnityによるOculus Questアプリ開発
Oculus Quest
PC不要の一体型HMDかつトラッカーレス6DoF対応という未来を体感してみたくて、Oculus Questを買ってしまった。
Questめちゃ良い pic.twitter.com/O40xsUJVUu
— Yuki (@yuki_tkd) 2019年5月25日
あまりゲームをするタイプではなく、スマブラ目当てで買ったSwitchが1ヶ月で飽きて放置されているので、買うのを躊躇っていたけど好奇心に勝てなかった。 5/1から買うかどうか迷っていて、結局5/15くらいにOculus公式で発注したけど、5/24の夕方に届いた。海外から発送されるのに早い。
早速beat saberやvr chatをやってみたけど、久々に凄い感動した。 HTC ViveとかOculus Riftでもやったことあるけど、全然ユーザ体験が違った。 準備の手間がほとんどかからず、被るだけでVR世界に行けるなんて、完全にレディープレイヤーワンの世界。 もうHMDはこれで良いです。完成。って感じ。
せっかく買ったので、南極に行ってペンギンに囲まれるVRアプリを自分のためだけに作ろうと思います。
Quest アプリ開発とOculus Store
Oculus Questの開発は個人でできないという噂があったのですが、結果から言うと個人でも開発はできます。 Oculus QuestはOculus Goと同じくAndroidベースのOSが搭載されているので、Androidアプリとして書き出すことができる開発環境があればOKです。
個人では難しそうなのは、作ったアプリをOculus Storeで販売すること。 審査を通過しないと販売することができず、その審査基準がかなり高いらしい。 Quest向けアプリはクオリティの高いものから展開していく方針らしいので、2019年5月現在は個人で開発して販売するのは結構ハードルが高そう。
環境
- Unity 2018.4.0f1 (2018.1.0だと動かなかったので注意)
- Android Studio 3.1.3
Oculus Quest向けアプリをUnityで作る
Unityプロジェクトの作り方
事前準備として、UnityからAndroidアプリをビルドできるようにAndroid SDKを入れておく必要がある。以前UnityからAndroidアプリを作ったことがある人は不要。
Unityを立ち上げて新規プロジェクトを作る。
Questに搭載されたセンサによる6DoF移動やOculus Touchに反応させるため、Unity StoreからOculus IntegrationをDownload & Import (Import結構時間かかることが多い) assetstore.unity.com
Quest向けにビルドするため、Build Settingsを以下の設定に変える。
- プラットフォームをAndroidに変更
Player Settings
から Minimum API LevelをAndroid 4.4 ‘KitKat’ (API level 19)
に変更- API Level 19未満にしたらエラーが出たので、おそらく現在はこれで良さそう。
Package Name
のcom.Company.ProductName
のCompanyとProductNameを登録した組織名とプロジェクト名に置き換える。Androidの
XR Settings
のVirtual Reality Supported
をチェックして、右下の+ボタンを押してOculusを追加以上でUnity側の設定は終わりなので、後は適当にUnityでアプリを作る。
アプリのインストール
Questの開発者モードをオンにする
USBケーブルでPCと接続する
PCと接続すると、Questの画面内に
このPCにファイルアクセスを許可しますか?
みたいな感じのアラート画面が出るのでYes
を選択Unityから
Build & Run
でAndroidアプリとしてビルド&書き込みQuestの画面内に
このPCからアプリのインストールを許可しますか?
みたいな感じのアラート画面が出るのでYes
を選択Questの
Home
->Library
->Unknown sources
の一覧からインストールしたアプリを選んで起動できる。
以上で、Oculus Quest上で動くアプリを作ることができます。
今回は簡単なアプリなので問題ないけど、FPSを稼ごうとすると結構テクニックが必要そう。 周辺視野部分を荒くレンダリングするFoveated Rendering(中心窩レンダリング)や、左右の視差映像を1枚のフレームとしてレンダリングする手法などを使って、 CPU/GPUのリソースをなるべく減らす必要がありそうでした。