ぼっちプログラマのメモ

UE4とかUE5とかについて書いたり書かなかったり。

UE4+Viveの開発を始めました その1 (プレイヤー, カメラ, モーションコントローラの配置について)

はじめに

f:id:pafuhana1213:20160328203959p:plain
記事のタイトル通り、UE4+Vive(Pre)で開発を始めたので、
色々と解説を書き始めます。使用するUE4のバージョンは4.11系です。

セットアップ周りはこちら
pafuhana1213.hatenablog.com

サンプルプロジェクトはこちら
github.com

まずは、基本的な以下の点について

  • OculusRiftを使った開発都の違い
  • プレイヤー・カメラの配置について
  • PlayerPawnの移動・回転に関して
  • モーションコントローラの配置に関して

OculusRiftを使った開発との違い

基本的な部分は同じです。が、所々違う部分があります。

この差異部分さえカバーしてあげれば、Rift・Vive両対応は夢では無いと思います。


プレイヤー・カメラの配置について

Viveを使ったVRコンテンツを作る際は、
PlayerPawnになるActor(又はPlayerStart)とそのBPが持つカメラの
レベル上での配置に注意する必要があります。

なぜなら、
「PlayerPawnの座標 = Viveのトラッキングエリアの床面の中心」
だからです。


具体的にどうしたらいいかと言うと、まずは以下の点を守る必要があります

つまり、こんな感じの配置になります。
f:id:pafuhana1213:20160328205324j:plain
この2点を守らなかった場合、現実のHMDとゲーム中のカメラの高さに
差異が生じるため、とても気持ち悪い感覚を得ることになります。

PlayerPawnの移動・回転に関して

「PlayerPawnの座標 = Viveのトラッキングエリアの床面の中心」なので、
PlayerPawnのTransformを操作した場合、その処理に応じて
ラッキングエリアの位置・向きが変化します。


つまり、実際に動くのが面倒だからといって
Add Movement Inputなどを使ってデバッグの移動処理を実装すると
場合によっては大変なことになる可能性があります。

なので、デバッグ用の仮想プレイヤーを作る場合は、
Actor自身ではなく、Actorが持つカメラコンポーネントを動かすようにしましょう。


逆に言うと、トラッキングエリアを動かしたい時は
PlayerPawnを動かせばいいことになります。
上手く利用すれば、以下の様な新たな移動方法を開発できるかもしれません
shiropen.com


モーションコントローラの配置に関して

モーションコントローラ用Actorは、Viveのトラッキングエリア底面の中心、
つまりPlayerPawnと同じ座標に配置する必要があります。
もし異なる座標に配置した場合、現実のコントローラの位置とズレが生じてしまいます。

こんな感じにBPを組んで、常にPlayerPawnに付いて行くようにすると便利です。
f:id:pafuhana1213:20160328210952j:plain



とりあえず今日はここまで。
次は、モーションコントローラ用Actorのセットアップ周りに触れます。