VRHMDのOculus Questをセットアップしました。

今回は、Unityで作成したVRデータをOculus Questで見てみます。
使用するVRデータ
Unityで作成したサンプルデータを使用します。


Oculus Questを開発者モードにする
Oculus Questで、独自に作成したアプリケーションを動かす場合には、開発者モードにする必要があります。
開発者モードは、スマートフォンのOculusアプリから行うことができますが、その前段階として、Oculusに開発者の申請を行う必要があります。
開発者の申請といっても、それほど難しくはありません。

Oculus公式サイトにログインします。


上部メニューより、コミュニティ-開発者。

左のメニューより、Manageをクリック。
団体名を入力します。

開発者機密保持契約に同意します。

Oculus Quest本体に、Oculusアプリを入れたスマートフォンを接続します。
Oculusアプリの「設定」をクリックし、ヘッドセットを選択します。
選択後、「その他の設定」をクリックします。

開発者モードをクリックします。

オンにすることで、接続している端末が開発者モードとなります。
これで、サードパーティ製のアプリをインストールできるようになります。
Oculus用アセットをインストール
アセットストアよりOculusのアセットをインストールします。

アセットストアで、「Oculus Integration」を検索してダウンロードします。
無料です。

プロジェクトにインポートします。




バージョンについて注意が出たので、アップグレードして再起動を行いました。

Oculus用のアセットのインポートが完了しました。
UnityのOculus Quest用設定
Unityのプロジェクトを、Oculus Questに対応する設定を行います。

ファイル-ビルド設定

Oculus QuestはAndroidをベースに動いているので、プラットフォームから、「Android」を選択し、Switch Platformをクリックします。

プレイヤー設置を押下します。

企業名・プロダクト名に、任意の名前を入力します。
バージョンはデフォルトの0.1としました。

その他の設定より、「自動グラフィックスAPI」にチェックを付けます。

最低APIレベルを、「Android4.4 “KitKat” APIlevel19」とします。

XRセッティングの「VRサポート」にチェックを付けます。

+をクリックし、Oculusを選択します。

Vertual Reality SDK の Oculusから「V2 Signing(Quest)」にチェックを付けます。
OVRPlayerControllerの設定
UnityにOculusの環境設定を行ったので、詳細の作りこみを行います。
今回は、Oculus QuestでVRデータ内を自由に動き回れるようにしたいと思います。
Oculus Integrationの「OVRPlayerController」というプレイヤーの基本アセットを使用します。

「OVRPlayerController」では、「OVRCameraRig」というVR用のカメラを使用します。
※OVRPlayerController内に含まれています。
なので、元々あったMain Cameraをオフにします。
Main Cameraのインスペクターの上部にあるチェックを外します。
これでMain Cameraが無効化されます。

同じく、Cinemachineで使用した「CM BlendListCamera」も無効化します。

Oculus Integrationの「OVRPlayerController」を使用します。
Asets-Oculus-VR-Prefabs-OVRPlayerControllerをヒエラルキーにドラッグアンドドロップします。

OVRPlayerControllerを選択し、インスペクターのトランスフォームで、位置や向きなどを調整します。
調整後、中央上部にある再生ボタンを押します。
VRデータが再生されますが、地面をすり抜けて落下してしまいました。
これは、道路や地形データに物理要素の設定が行われていないからです。

道路を選択後、インスペクター-コンポーネントの追加を押下。

物理

メッシュコライダーを選択します。
道路オブジェクトに、メッシュコライダーコンポーネントが設定されました。
これで道路をすり抜けなくなるはずです。
再度再生しましたが、またもやすり抜けてしまいました。

オブジェクト内に複数の要素が含まれている場合、個別にメッシュコライダーを設定しなければいけないようです。
道路内の各要素を全選択し、再度メッシュコライダーコンポーネントを追加します。

地形オブジェクトに関しても、各要素にメッシュコライダーを設定します。
そのほか、重機や盛土などすり抜けてほしくないものにも同じくメッシュコライダーを追加します。
再生したところ、すり抜けずに動かすことができました。
VRデータをOculus Questにインストール
動き回るだけのデータですが、Oculus Questで実行できるようにインストールを行います。

PCとOculus Quest本体をケーブルで接続します。
接続後、ビルド設定画面を開き、「デバイスを実行します」の選択肢を開くと、Oculus Questの端末番号を選ぶことができます。
選択して、「ビルドして実行」をクリックします。

アプリケーションファイル(.apk)の保存場所を聞かれるので、任意の場所を指定して保存ボタンを押します。

「Package Name has not been set up correctly」
…パッケージ名が正しく設定されていません
パッケージ名でエラーが出ました。

どうやら、ハイフンやドットが入っているとまずいようなので、修正しました。
再度、ビルド実行をします。

Android device is not responding!
今度はデバイスとの接続エラーが出ました。
Oculus Questの画面を見てみると、接続の許可を促すメッセージが表示されていました。
OKを押すと、ビルドが始まりました。
Oculus QuestでVRデータを見てみる
ビルドは時間がかかりましたが、エラーは出ずに終了しました。
そして、Oculus Questを見てみると、無事VRデータ内を動き回ることができました。
メニューのライブラリ-提供元不明のアプリから実行することができます。

VR映像を録画してPCで見る
Oculus Quest上の映像を動画として保存します。
録画は、Oculus Questのメニューから、シェア-録画で可能です。
録画した動画データは、Quest内の共有ストレージ-Oculus-VidoShots内にあります。

Oculus QuestとPCを直接つないで動画をコピーしましたが、PCでは再生できませんでした。
こちらを参考に、Windows10の「画像とビデオのインポート」機能を使用すると、見ることができました。
接続した状態で、エクスプローラからQuestを右クリックして、画像とビデオのインポートをクリック。

その後は、ウィザードに従ってインポートを行います。
VR化について
最初に3DCADであるTREND-COREで3Dデータを作成し、それをUnityでVR化、最終的にOculus Questで見ることができました。
手間はかかりますが、パソコンを用いずに外出先でVRデータを見ることができるため、様々な活用シーンが考えられます。
今後も、検証を行っていこうと思います。

