LoginSignup
1
1

More than 5 years have passed since last update.

UE4でVR空間にカノジョを錬金 18日目

Last updated at Posted at 2017-12-17

UE4でVR空間にカノジョを錬金する Advent Calendar 2017 18日目の記事です。

12/1~25日までに一人で、UE4を用いてサ○○レッスンとかVR○○ジョっぽいゲームを作って仮想彼女を生み出すことにチャレンジします。

今回は呼吸しているように見えるようなアニメーションを実装していきます。
今回処理がかなり長いので、複数回に分けます。

参考にしたサイト

[Unity] キャラクターが呼吸するスクリプトが公開されていますで掲載されていたフルートさんの記事と公開されているスクリプト、スクリプトで呼吸させる - 第2回 | Unity3Dを参考にしています。
同じような感じで、特定のボーンを回転させて、呼吸をしているように実装していきます。

変数設定

呼吸に必要な変数をセットします。
image.png

色々と変数を設定しているので簡単に説明していきます。

変数名 説明 初期値
SpineRotator 腰の回転を示す変数 Rotator 0,0,0
ChestRotator 胸の回転を示す変数 Rotator 0,0,0
NeckRoator 首の回転を示す変数 Rotator 0,0,0
HeadRoator 頭の回転を示す変数 Rotator 0,0,0
durationRate 呼吸1サイクルに要する時間を調整 float 1
effectRate 呼吸の深さを調整 float 1
inhale 息を吸う時間 float 1.2
exhale 息を吐く時間 float 2.4
rest 呼吸モーションの待機時間 float 0.2
spineInhale 吸うときの腰の回転値 float 2
spineExhale 吐く時の腰の回転値 float -2
chestInhale 吸うときの胸の回転値 float -3
chestExhale 吐く時の胸の回転値 float 3
neckInhale 吸うときの首の回転値 float 0.5
neckExhale 吐く時の首の回転値 float -0.5
headInhale 吸うときの頭の回転値 float 0.5
headExhale 吐く時の頭の回転値 float -0.5
phase 呼吸のフェーズを示すenum(日本語だと列挙型) Phase Inhaling
StartTime 各呼吸のフェーズを開始した時間 float 0

Phaseというenum型は自作です。中身は以下の通りです
image.png

アニムグラフ実装

まずアニムグラフを実装していきます。
以下のようにボーンをトランスフォームで修正するノードで腰、胸、首、頭、左肩、右肩をセットします。
image.png

各ノードの詳細にある全てのRoatationにあるRotationModeをAdd to Existingにします。

image.png

後はすべてのボーンを設定するだけです。

ボーン設定

腰、胸、首、頭のボーンをセットします。
これは各モデルによってボーン名が違うので、以下は参考例として出します。

・ユニティちゃんの場合
image.png

・グレイちゃんの場合
image.png

上記画像の通り、Rotatonにそれぞれの回転量を示す変数をセットします。

続いて右肩、左肩のボーンをセットします。

・ユニティちゃんの場合
image.png

・グレイちゃんの場合
image.png

RotatorにはChestRotatorに-1をかけて、値を反転させています。

呼吸のモーションが不自然であれば上腕のボーンをセットするのもいいかもしれません。
ユニティちゃん:Character1_LeftArm,Character2_RightArm
グレイちゃん:UpperArm_L,UpperArm_R

これでアニムグラフの設定が終わりました。
複数のアニムグラフがある場合、全てこの設定をする必要があるので、コピペで貼り付けましょう。

本日は以上となります。

次回以降

呼吸のロジックを実装していきます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1