はじめに
RazerHydraというオーパーツを先日頂いたので、
早速、UE4で使ってみました。
もう生産されていないデバイスですが、
その過程で使用するMotionControllerコンポーネントは、
他のデバイス(OculusTouch, Move, HTC Vive Controller)でも
使うことになると思うので、少しは参考になるかと思います。
目的は、OculusTouchを想定したVRコンテンツ製作をできる環境づくりです。
Razer Hydraについての記事
結果動画
www.youtube.com
https://www.youtube.com/watch?v=2qJH-Zp_EyA&feature=youtu.bewww.youtube.com
www.youtube.com
本記事では、UE4でRazer Hydraを使うまでの流れと
実際にどう使うかについて書いてます。
手のモデルとの連動は、次の記事で…
(MotionControllerコンポーネントとAnimationBPとの連動が主です)
UE4でRazer Hydraを使えるようにするまで
有志の方がUE4用のプラグインを公開しています。
しかも、UE4のバージョン更新に即対応してくれるため、
こちら側でビルドする必要はほぼありません!ありがたや~
Razer Hydra Plugin
getnamo/hydra-ue4 · GitHub
手順は以下のとおりです。
- ↑のGithubページの右にある「Donwload ZIP」からzipファイルをダウンロード
- zipファイルを解凍
- 「HydraPlugin」フォルダを、使用するプロジェクトのPluginsフォルダに入れる
- Pluginsフォルダがなければ、プロジェクトのルート(uprojectファイルがある所)にPluginsを自分で作成
- プロジェクトを開いている場合は、エディタを再起動
これで準備完了です。
MotionControllerコンポーネント( with Razer Hydra )
公式ドキュメント(未翻訳)
Unreal Engine | Motion Controller Component Setup
概要
UE4.9にて、モーションコントローラ用のコンポーネントが追加されました。
はじめに書いた通り、様々なモーションコントローラ系デバイスに対応しています。
Unreal Engine 4.9 リリース!
↑の説明にあるように、デバイスに依存しないインターフェースであるので、
このコンポーネントを使うことで、他のモーションコントローラに
実装を流用できる可能性が格段に高くなる…筈です。
また、UE4.10で反応・精度の向上対応が入ったりと、
今後にかなり期待できるコンポーネントです。
Unreal Engine 4.10 リリース!
使い方
(githubの説明画像を引用)
まずは↑のように、
左手用・右手用のMotionControllerコンポーネントを
Actorに追加します。
次に、各コンポーネントにパラメータにある「Hand」のパラメータを、
そのコンポーネントが担当する手に応じて設定します。
最後に、
RazerHydraを使う場合は「HydraPlugin」コンポーネントを、
HTC Vive Controllerの場合は、「SteamVRChaperone」コンポーネントを
Actorに追加します。
これで終わりです。実行すると、
各コンポーネントの座標がデバイスの位置に応じて変化します。
そのままだと座標が分かりづらいので、各コンポーネントに
メッシュコンポーネントを親子付けすると確認しやすくなります。
(公式ドキュメントより引用)
または、Arrorコンポーネントを親子付けすると
座標と向きの確認がしやすくなります。
その他の機能に関しては、Githubページにある解説を
参考にするのがいいかと思います。
絵付きでとてもわかり易いです。
getnamo/hydra-ue4 · GitHub
注意
コンポーネントのTransformに関して
各コンポーネントを追加したアクターのワールド座標・回転(レベル上での値)が、
そのデバイスにおける基準点になります。(自信はあまりないですが…)
そして、MotionControllerコンポーネントの初期座標・回転は無視されて、
↑の基準点と各コントローラの基準点からの座標を元に計算されたワールド座標・回転が
そのコンポーネントのワールド座標・回転に置き換わります。
なので、MotionControllerコンポーネントのBP上での座標(RelativeLocation)は
好きな位置に設定して大丈夫です。
私の場合は、どっちが右手用か左手用か分かるように、
中心座標から少しズラして配置してます。
コンポーネントを追加するActorに関して
MotionControllerコンポーネントは、Cameraを持っているActorとは
別のActorを用意し、そのActorに追加した方がいいと思います。
もしCameraを持ったActorに追加した場合、カメラ操作により、
デバイス基準点のUE4上における座標・回転が変化してしまうため、
想定しているものとは異なる挙動を起こすようになります。
現実空間でのデバイス基準点をユーザの胸元にくっ付ける場合は、
カメラを持ったActorに持たせてもいいかも知れませんが、
大抵のケースでは別のActorに持たせたほうが良いと思います。
とりあえず、今回はここまで。
次回は手のモデルとの連動部分や、説明をサボった箇所について触れます
追記
ようやく続き書きました
pafuhana1213.hatenablog.com