読者です 読者をやめる 読者になる 読者になる

ぼっちプログラマのメモ

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

UE4+OculusTouch用サンプルプロジェクトを公開しました!

UE4 Oculus Rift Oculus Touch

はじめに

この記事はUnreal Engine 4 (UE4) Advent Calendar 2016の9日目の記事です。
qiita.com

f:id:pafuhana1213:20161208215122j:plain
OculusTouch発売、おめでとうございますー!
twitterを見てみると、無事に着弾している方が沢山もいて何よりです!

ということで、
これからUE4とOculusTouchを使ったVRコンテンツを作成する方向けにサンプルプロジェクトを作成・公開しました!
github.com

www.youtube.com
youtu.be


このサンプルプロジェクトを使って頂くことで、
「物を掴む・離す」「掴んだ物を使う」「状態に応じた手の表示」などの
OculusTouchを使ったVRコンテンツで必要となる要素を
実装する手間を省くことができます。

製品レベルのクオリティを実現するためには要改造ですが、
プロトタイプ製作・ゲームジャムでの使用レベルなら、耐えられるかと思います。
…たぶん、きっと、おそらく、いや、まあ、じこせきにん、てきな…うふふ…

今後もサンプルなどの要素を増やしていきたいと思うので、
是非使用した感想・要望・不具合報告・クレームなどを送って頂ければと思います。


中身の細かい解説は後日するとして…
ざっくりと要素・使い方の説明をしたいと思います。
(いや、サボりとかではなくて…別の記事がね?…ゴニョゴニョ…)

方針

今回公開したこのプロジェクトですが、
以前公開したViveコン向けのサンプルプロジェクトのリベンジ
という意味合いを持っていたりします。
pafuhana1213.hatenablog.com

↑で以下の内容が問題になっていました

  • とにかく複雑過ぎる
    • 必要となるBPの数、制約などが多い
    • 掴む・離すタイミングでメッシュを再生成などの面倒な処理
    • BPインターフェイスを無駄に使いすぎてよく分からない
      • ほぼ専用な関係性なら、cast使うなりその型で変数を持たせた方がシンプル
  • 新規で掴まれるオブジェクトを作るのが手間だった
    • 専用のBPを継承したBPを新たに作って…専用の処理を書いて…
  • などなど


ということで、今回のプロジェクトでは以下の内容の実現を目標としました

  • 掴み対象BPはコンポーネントを追加 + 専用イベントに処理を登録するだけ
    • 簡単に新規の掴み対象BPを作れるように。また既存のBPへの捕まれ対応を容易に
    • 掴み対象BPを実装する方がなるべく制約を意識しない形に
  • 可能な限りシンプルな構成に
  • OculusTouchの操作に全対応
    • 各入力イベントに対して処理を登録可能
    • 各入力情報に応じた手モデルの表示

f:id:pafuhana1213:20161208222324j:plain
できました! たぶん…

掴み対象BP側の実装について

掴む側の実装については…長くなりそうなので後ほど別の記事に書きます…

掴み対象のBPで肝になるのは、専用コンポーネントである「BPC_GrabTarget」です。
基本的にはこのコンポーネントを掴み対象BPに追加して、
「掴まれた(Grabed)」「離された「Released」」イベントディスパッチャーに
対応するイベントを実装・登録するだけで対応完了です。ね、簡単でしょ?
https://dl.dropboxusercontent.com/u/30427841/GrabTargetSample.jpg

掴まれ、離され以外にも、「使う」「掴まれた状態でボタン入力された」などの
動作に関係するイベントを用意しています。
また、BPC_GrabTargetからアクセスできるBP_MotionControllerからは
OculusTouchの各入力情報(OculusTouchInputData)が取れます。
(スティックの傾き情報や、サムズアップなど)

これらの機能・情報を使うことで「持ったものに対して何らかの操作を行う」ことが
簡単に実現することができます。…たぶん


掴む側、つまり手に当たるBPでは以下の処理を行っています。

  • Overlapした相手がBPC_GrabTargetを持っているか?
  • 持っている相手なら各イベントをBPC_GrabTargetにリクエスト

この辺りの処理は余程特殊な処理をしない限りは変わらないと思うので、
BPC_GrabTargetの各イベントディスパッチャーに登録する処理の実装に専念する形になります。


掴み対象のBPは幾つかサンプルを用意しています。まずはその中身を眺めていたければ、
どんな感じで処理を組めば良いのかが分かるかと思います。
"Content\StartOculusTouch\Blueprints\GrabSample"

さいごに

Githubの方にも書いていますが、今後もサンプルなどを追加していこうと思います。
リクエストなどがありましたら、是非是非ご連絡頂ければと思います。

あとは…このプロジェクトをベースに何か面白いものができたときは
ご連絡頂けると幸いです。喜びます、小躍りします

このサンプルが少しでも皆様のお役に立てれば幸いです



明日は@shop_0761さんの「簡単な音声認識をしてみる」です!楽しみです!
…フォーラムにあったあのプラグインかなぁ…でもあれは英語だけだし
…精度はどうなんだろう…