僕の私のUnrealな日々

UE4のBluePrintを使って小さなギミックを作ったりしてます。ブログを通じて情報共有ができたらなと思います。

UE4:Oculusを使ってMMDに壁ドンしてもらう方法

f:id:Bussan_dayo:20150203163307p:plain

 

どうも僕です。

 

みなさん

「壁ドン」という言葉を知っているでしょうか。

 

この言葉、ネットスラングで隣の部屋でワチャワチャしてる声が聞こえた時に壁を殴りつける事を壁ドンと言っていましたが、今ではイケメンが女性に対してする行為のことです。メディアは怖い。

 

f:id:Bussan_dayo:20150203131051j:plain

 参考画像:左がお前らで右が僕らリア充

 

で、ふと思ったのです。

小さな女の子に壁ドンされたらどんな気持ちになるのか。

身長175の男性が女の子より小さくなるとどんな気分になるのか。

 

ということで、UE4とOculusで実験してみよう!

 

UE4とOculusでMMDに壁ドンされてみよう!

(実際MMDデータ初めて触ったので、何か間違ってたらごめんなさい)

 

MMDのモデルデータとモーションデータを用意します。

今回使うのはこれです。

 

そして使うのは壁ドンデータ


Rick式壁ドンモーション - BowlRoll

 

 

これらMMDデータはMMD4Menicamを使用してFBXデータに変換しました。配布ページ(詳しくはチュートリアルを見てね)

 

 で壁ドンのモーションをロリドロンジョにぶっこんだデータをUE4に召喚!(マテリアルが崩れているのでそこを直しましょう)

 

 

 壁ドンしてる・・・

 

f:id:Bussan_dayo:20150210154100p:plain

で、FPSテンプレートをキャラクターに設定してStartコンポーネントを設置すれば

f:id:Bussan_dayo:20150210154112p:plain

完成っていうわけではありません。これ微調整がめんどくさい。例えば場所を変えるってなった時、いちいちカメラがモデルに入らないようにしたりと毎回微調整はしんどい。嫌だ。

 

なので一つのBluePrintにまとめましょう!

新規からBluePrintを選択します。そして、「ポーン」又は「キャラクター」を選択します。今回は「ポーン」を選択します。

f:id:Bussan_dayo:20150210154124p:plain

そして、コンポーネント追加でスケルトンメッシュとカメラを選択します。

そしてスケルトンメッシュを選択しメッシュをドロンジョ、そしてアニメーションを壁ドンを選択します。

f:id:Bussan_dayo:20150210154135p:plain

 

そして、ロリドロンジョをカメラの方角に回転させます。

コンポーネントを追加からCapsuelを選び以下のように親づけします。(Capsuelはノーコリジョンでもよかです)

f:id:Bussan_dayo:20150203162658p:plain

 

 そして、GameModeを選択しDefaultPawnClassをこのドロンジョのBluePrintを設定します。

f:id:Bussan_dayo:20150210154204p:plain

f:id:Bussan_dayo:20150203132843p:plain

 

これでPlayを押すと目の前にロリドロンジョが出てきます。しかし、動けません。次はBluePrintでプログラムを組んでいきます。

 

周りを見回すBluePrintを作成しよう!

では、BluePrintを記述していきます。普通だとFPSのテンプレートから見回すBluePrintを持ってくればいいのですが

f:id:Bussan_dayo:20150203133100p:plain

(動かない場合はUse Pawn Controll Rotationにチェックを付ける)

f:id:Bussan_dayo:20150203133149p:plain

 

これだとあたりを見回すとロリドロンジョも一緒移動してしまいます。

 

 

これは良くないぞ1ということでカメラのみを動かすようにします。

 

まずノードエディタを開きます。そして左にあるCamera1を取得としてノードエディターに設置します。そして青い点から線をひっぱりRelative Rotationを呼び出します。これはCameraの回転情報を得るようなものです。今回、Pitch、Yawのみ使用するのでBreak Rotノードを設置します。

f:id:Bussan_dayo:20150203133515p:plain

 

そして、LookUp、Turnを取得するノードを出し、Pitch、Yawに足しあわせMakeRotでRotation情報を完成させます。f:id:Bussan_dayo:20150203133646p:plain

 

 Turn,LookUpとは

プロジェクトの設定を開いてみてください。そして入力をクリックすると以下の画面が出てきます。

f:id:Bussan_dayo:20150203133851p:plain

 Turnの下にマウスXボタン、LookUpはマウスYボタンとあります。これらは各設定されているボタンの名前です。なので入力情報先ほどTurn,LookUpを取得するノードがありましたが、それらは入力情報を取得しているということです。

 

 

Set Relative Rotationノードを出し、Rotationに先ほどの回転情報を接続し、TargetをカメラにしEvent Tickにつなげます。

f:id:Bussan_dayo:20150203134229p:plain

 

 すると、

f:id:Bussan_dayo:20150203143543p:plain

カメラが動いたよ!!!(カメラの位置が少し低いですね)

 

これでOculusに接続すれば壁ドンを体験できる!

 

Oculusに繋げよう!

Oculusにつなげてみると・・・(スタンドアローンゲーム起動、Alt+Enter)

f:id:Bussan_dayo:20150203143809p:plain

動かないよ・・・?

 

なぜかと考えていると前に、VRコンテンツ「ねこるんば」の製作者さんがブログで作り方を書いていたのですが、そこに対策が書かれていたのを思い出しました。

 

 

 

2つ目の記事に対策が書かれていたので

 

この通りに設定してみると、

f:id:Bussan_dayo:20150203144647p:plain

わーい動いたー。(みんな凄すぎ・・・

 

ということで、Oculusで壁ドンを体験することが出来ます。

ただやってみた感想としてはなんとも言えない微妙な感じになりました。

なんだろう・・・。なんか真顔になる感じです。

 

ただ壁ドンをやるやられる=リアルが充実してるとする。仮想現実であっても壁ドンやられたという事には変わらない。

つまり普段出会いがなく友達も少ない自分もこれでリア充ということになるのでしょうか。(勿論なります!

 

ちなみに、このBluePrintを応用すると、

 

f:id:Bussan_dayo:20150203144829p:plain

f:id:Bussan_dayo:20150203144831p:plain

 

踏まれることも出来ますので、紳士の皆様是非お試しください。

 

 

 

今回のはまだまだ未完成な部分が多いと思いますので、もう少し触ってみようかなと思います。

これを見てもし作られた方がいらっしゃいましたら、これより良い亜種を作って頂いて教えていただけると嬉しいです。フィードバックもお願いします。

 

 あと文章的にわかり辛くなってたらごめんなさい。

次はOculusのポジショントラッキングを使って何か作ってみたいですね。

 

以上です。

 

 

(といいますか、UE4をこんな使い方していいのかな・・・)