UE4+HTC Vive開発メモ

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

UE4でHTC Vive対応ソフトを開発する方法やTipsをまとめています。HTC Viveの概要やLighthouseについては、「HTC Viveについて」を参照してください。

更新履歴

(2017年1月10日)Start in VRオプションについて追記、不適切な記述を削除
(2017年1月4日)ルームスケールのカメラの配置方法を追記
(2017年1月3日)UE4.14.1にあわせて更新
(2016年10月2日)UE4.13のVirtual Realityサンプルについて簡単に追記
(2016年8月23日)「レンダリング解像度を変えるには」を追加


UE4でHTC Vive対応ソフトを作るには

UE4はデフォルトでHTC Viveに対応しています。

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

ただ、そのままだとHTC Viveでは視点がおかしい(浮いている)状態になっていると思います。デフォルトのルームスケールモードでは、カメラがプレイエリアの中央地面にあることを想定しているためで、カメラをそのように配置する必要があります。

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

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


位置トラッキングについて

HTC Viveでは、ルームスケールもしくは着席状態のいずれかのモードを使用できます。デフォルトではルームスケールになっています。

モードを変更するには、レベルブループリントなどでSet Tracking Originノードを使用します。Floor LevelまたはEye Levelが選択できます。

Floor Level

ルームスケールのモードです。HTC Viveのルームセットアップで設定したプレイエリアの中央地面がカメラの位置になります。

カメラを地面に置く方法としては、たとえば、カメラを原点に持つPawnを地面の高さに配置してください(手順を追記予定)。

Eye Level

着席モードです。カメラをシーン内のプレイヤーの頭の位置に配置します。

ダッシュボードで、現実空間のプレイヤーの頭の位置を基準にリセットできます。SteamVRを起動した状態でヘッドセットをかぶって、Viveコントローラのシステムボタン(電源ボタン)を押してダッシュボードを表示してください。右下にある設定ボタン>「一般的なVR設定」>「座位のリセット」でヘッドセットの位置・向きがカメラの位置・向きとしてアプリケーション間で保存されます。

もしくは、Reset Orientation and Positionノードでリセットできます。


開発Tips

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

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

Viveコントローラの入力について

ひとまず、Motion Controller Component の設定を参考にしてください。また、ボタンの配列についてはこちらのチートシートが分かりやすいです。

(あとできちんと書きます)

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

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

Oculus Riftで使用するhmd pdコマンドは効かないようです(UE4.14.1現在)。

ミラー表示が映らなくなったんだけど

HTC Viveで「hmd mirror mode」等のコンソールコマンドを実行すると、PC側の画面が止まってしまうようです。

プロジェクトでこれらのコマンドを実行している場合は取り除いて、Unreal Engineが動いていない状態で、プロジェクトフォルダのSavedフォルダとIntermediateフォルダを削除してみてください。

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

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

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

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

Follow Hmd Orientationはどこ?

UE4.10ではPlayer Camera Managerの「Follow Hmd Orientation」というオプションを有効しないとヘッドトラッキングに追随しませんでしたが、UE4.11以降ではこのオプションはなくなりました。

代わりにCameraコンポーネントに「Lock to Hmd」という項目ができて、デフォルトでトラッキングに追随するようになっています。


サウンド編

Oculus Audio Pluginを使うには

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

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

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

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


VRエディタについて

UE4にはVR空間内でシーンを編集できるVRエディタが実験的に搭載されています。HTC Vive、またはOculus RiftとTouchに対応してします。

エディタの環境設定(Editor Preferences…) > 実験段階(Experimental)> Enable VR EditingをチェックするとツールバーにVRボタンが出てくるのでクリックすると起動し、「VRエディタチュートリアルへようこそ」のウィンドウが表示されます。

VRエディタについては以下のページに解説があります。


参考リンク

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

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

SteamVRの公式フォーラムです。

公式ドキュメントにSteamVRの項目がありますが、情報が古いです。

書いた人:こりん(@k0rin
VR開発メモトップ