VR開発メモトップ

UE4+Oculus Rift開発メモ

最終更新日:2017年01月10日

UE4でOculus Rift対応ソフトを開発する方法やTipsをまとめています。Oculus Rift自体についての説明は、「Oculus Riftについて」を参照してください。

更新履歴

(2017年1月10日)Start in VRオプションについて追記
(2017年1月3日)UE4.14.1にあわせて更新
(2016年10月2日)UE4.13のVirtual Realityサンプルについて簡単に追記
(2016年8月28日)「レンダリング解像度を変えるには」にAdaptive Viewport Scalingについて追記
(2016年8月23日)「レンダリング解像度を変えるには」を追加

目次


UE4でOculus Rift対応ソフトを作るには

UE4はデフォルトでOculus Riftに対応しています。Oculus RiftプラグインとOculus Inputプラグインが標準で付属しており、Oculus Riftで動作するアプリケーションを作ることができます。

新規プロジェクトを作成して、エディタの プレイ(Play) > VRプレビュー(VR Preview) を選択し、Riftをかぶるとすぐプレビューできます。Escキーで終了します。また、プロジェクト設定で「Start in VR」をオンにしてパッケージすると、VRモードで起動する実行ファイルになります(「stereo on」コンソールコマンドでVRモードに切り替えることもできます)。

なおUE4はデフォルトで描画負荷の高い設定になっているため、そのままでは十分なフレームレートが出ない場合があります。「UE4での描画最適化について」を参照して最適化を行ってください。

また、新規プロジェクトに「Virtual Reality」というテンプレートプロジェクトが用意されており、テレポート移動をしたり、モーションコントローラーでオブジェクトを操作するサンプルになっています。


開発Tips編

Oculus Rift関連のブループリントノードについて

HMD全般のノードが「インプット > ヘッドマウントディスプレイ」および「Input > Head Mounted Display」に、Oculus関連のノードがInput > Oculus Libraryにあります。

Oculus Touchは「インプット > ゲームパッド イベント」のMotionControllerおよびOculus Touchノード群を使用します。

その他、ルートにOculus Boundary Systemのノード群があります。

位置トラッキングをリセットするには

「Reset Orientation and Position」ノードを使用します。例えばRキーでリセットするならレベルブループリントで以下のようにしてください。

PC画面の表示方法を変えたい

「hmd mirror mode」コマンドがあります。「hmd mirror mode 0」から「hmd mirror mode 4」まで変更できます。デフォルトは0です。特に4の単眼表示が便利です。

PCの画面に別視点の映像を表示するには?

残念ながら今のところ方法はないようです。プログラムをもう1つ動かして、ネットゲームの要領で同期表示するのがいいかもしれません。

レンダリング解像度を変えるには

「hmd pd {数値}」コンソールコマンドでピクセルの密度を下げられます。デフォルトは1.0です。下げるほど画面がぼけてしまいますが、描画が軽くなります。

また、GPU負荷が85%を超えると自動的にレンダリング解像度を下げてフレームレートを維持しようとするAdaptive Viewport Scalingという機能が用意されています。「hmd pdadaptive on」コンソールコマンドで有効にできます。「hmd pdmax {数値}」「hmd pdmin {数値}」で最大・最小のピクセル密度を指定できます。

Oculus Audio Pluginを使うには

UE4にはOculus VR社開発のOculus Audio SDKのプラグインが標準で添付されています。使用すると、シーン内の音声がより現実的な定位で聴こえるようになります。対応プラットフォームはPCのみです。

使用するには、設定(Settings) > PluginsのAudioでOculus Audio Pluginをチェックして再起動してください。また、オーディオのAttenuationの設定でSpatialization AlgorithmをSPATIALIZATION HRTFに変更してください。

なお、パッケージするときは「Windows (64-bit)」でパッケージしないと有効にならないようです。

また、今のところ、Unreal Engine内蔵のオーディオシステムではOculus Audio SDKのHRTF(頭部伝達関数)の機能しか使用されず、環境モデリング等の高度な機能を使用するにはWwiseを使う必要があるとのことです。将来的には改善する計画があるようです。

Oculus Remoteを使うには

ブループリントで右クリックして「Oculus Remote」とタイプすると、Oculus Remote関係の入力イベントが出てきます。

VRモードにすると視点が変な位置になるんだけど

VRモードにすると、CameraコンポーネントのトランスフォームがLock to Hmdによってオーバーライドされます。もしCameraのトランスフォームを原点以外にしたり操作している場合は、CameraをChild Actorコンポーネントの子にして親のほうを動かしてみてください。

Follow Hmd Orientationはどこ?

UE4.10ではPlayer Camera Managerの「Follow Hmd Orientation」というオプションを有効しないとヘッドトラッキングに追随しませんでしたが、UE4.11以降ではこのオプションはなくなりました。代わりにCameraコンポーネントに「Lock to Hmd」という項目ができて、デフォルトでトラッキングに追随するようになっています。

その他のTips

「hmd stats」コマンドで、Oculus Riftの現在の設定(hmd pdの値、IPD、視野角、遅延など)を表示できます。消すには「hmd stats off」です。

Play > Advanced Settinds…でViewport Gets HMDControlをチェックすると、標準のビューポートでプレビューしたときもRiftのヘッドトラッキングが有効になります。


参考リンク

公式のドキュメントがあります。

UE4.11以降のVRカメラについての解説があります。

最新情報はUnreal EngineとOculus VRのフォーラムで追いかけることができます。Unreal Engineのフォーラムのほうが活発です。

書いた人:こりん(@k0rin
リンク切れや間違いなどございましたらメールやTwitterでご指摘ください。
VR開発メモトップ RSS