ふわーりんの勉強まとめ

勉強したことを忘れない為のブログ

UE4でMAYAやBlenderを使用せずに既存アセットの組み合わせでアニメーションを作成する。

今回はゲーム作成などを作成する際にMAYAやBlenderなどのDCCツールを一切使用せずにUE4上の機能を使用してアニメーションを作成していく方法を紹介します。

 

 

使用環境

今回使用したものはUnrealEngine4のVersion4.22.3です。

使用アセット

使用アセットは以下のとおりです

f:id:konapurinn:20190921132408p:plain

GenericNPCAnimPack

https://vimeo.com/260579397

 

使用するアニメーション

以下の2つのアニメーションを使用します。

f:id:konapurinn:20190921130916g:plain

Anim_Talking_1

 

f:id:konapurinn:20190921130639g:plain

Anim_Sit_Bench_1

 

Anim_Talkingの上半身のパーツとAnim_Sit_Bench1の下半身のパーツ組み合わせて以下のようなアニメーションを表示します。

 

f:id:konapurinn:20190921134757g:plain

 

作成手順

 作成する手順としては

  1. アニメーションをブレンド
  2. アニメーションの書き出し  の2つになります。

 

それでは解説に移ります。

 

アニメーションをブレンドする。

UE4にはアニメーションをブレンドする「Layered blend per bone」というノードがあります。(エディタが日本語の場合はボーン毎のレイヤードブレンドで表示されます)

 

 

Layered blend per bone

LayerSetUpで指定したボーンの下の階層から

BasePoseピンにつなげたアニメーションとBasePoses0ピンにつなげたアニメーションをBlendWeightの値でブレンドします。

 BlendWeight=0なら ブレンドなし

 BlendWeight =1なら BasePoses0ピンのアニメーションをブレンド

(もし間違っていましたらコメント下さい)

f:id:konapurinn:20190921154007p:plain

※ドキュメント

 https://docs.unrealengine.com/en-US/Engine/Animation/NodeReference/Blend/index.html

 

 

それでは実装します。

まずはAnimationMontageを作成する際に指定したSkeltalMeshのAnimationBlueprintを作成します。

 

f:id:konapurinn:20190921154357p:plain

AnimatioBlueprint作成

今回はMyAnimBlueprintという名前で作成しました。

 

作成したMyAnimBlueprintを開きアニムグラフから「Layered blend per bone(ボーン毎のレイヤードブレンド)」ノードを作成します。

 

次にアセットブラウザタブからAnim_Talking_1とAnim_SitBench_1をドラッグ&ドロップしBasePoseピンにAnim_Talking_1をBlendPoses0ピンにAnim_SitBench_1ピンをつなぎBlendWeightを1.0にします。

 

そうすると次のような画面になります

f:id:konapurinn:20190921211415g:plain

 

まだこの段階ではAnimTalking_1のアニメーションが流れたままです。

次からブレンドさせていきましょう。

 

「Layered blend per bone(ボーン毎のレイヤードブレンド)」を選択し詳細タブからLayerSetUpを選択しBranchFiltersのエレメントを追加します。

f:id:konapurinn:20190921173249p:plain

 

エレメントを追加すると次のような画面になります。

f:id:konapurinn:20190921173314p:plain

ここで指定するボーン名はアニメーションをブレンドさせるボーンの起点になります。

ここで指定したボーン階層より下の階層のボーンがブレンドされます。

 

わかりにくいと思いますので今回のアニメーションに例えてみましょう

今回はAnimTalking_1の上半身の部分とAnim_SitBench_1の下半身の部分を組み合わせたアニメーションを作成したいです。

ボーン構造を見るために一旦スケルトンを開きます。

f:id:konapurinn:20190921173044p:plain

 

ケルトンを開くと左側にボーン構造が表示されています。

f:id:konapurinn:20190921173139p:plain

今回は足の部分でブレンドをさせたいので

thigh_l
thigh_r

の部分になりますね

 

再度MyAnimBlueprintを開き「Layered blend per bone(ボーン毎のレイヤードブレンド)」を選択して先程のBoneNameの部分にthigh_lを記述します。

このままでは左足のみブレンドになってしまうのでBranchFiltersのエレメントをもう一つ追加しBoneNameにthigh_rを記述します。

f:id:konapurinn:20190921173225p:plain



これでコンパイルをかけると以下画面にようになります。

 f:id:konapurinn:20190921211618g:plain

 

これでアニメーションのブレンドが完了しました。

次にこのアニメーションの書き出しを行います。

 

 

 

UE4のアニメーションには録画機能があり

アニメーション中に録画ボタンを押すとAnimatioBlueprint中のアニメーションを録画し、アニメーションシーケンスに書き出すことができます。

MyAnimBlueprintを開きプレビュー画面の下に以下のようなボタンがあります。

f:id:konapurinn:20190921175813p:plain

左から録画ボタン

再生・一時停止ボタン

次へボタンになります

 

再生・一時停止ボタンを押下しアニメーションを止め

現在再生されているアニメーションを最初の初期位置に戻します。

f:id:konapurinn:20190921175930p:plain

 ※一時停止ボタンを押すと上記画面のように一時停止ボタンのアイコンが再生ボタンに変更されます。

 

次に録画ボタンを押下し、新規のアニメーションシーケンスを保存する場所を指定します。

f:id:konapurinn:20190921180102p:plain

 

 今回はMyAnimationという名前で保存しました。

 

場所を指定すると録画が開始するのでアニメーションが1モーション終わったところで録画ボタンを押せば書き出し完了です。

※アニメーションの録画が成功した際には画面右下に以下のようなウィンドウが出ます。

f:id:konapurinn:20190921180334p:plain

 

無事に書き出されました。

 

f:id:konapurinn:20190921180733p:plain

最後にアニメーションの切り取りを行います。

録画した際は止まっている状態から録画されているので最初から数フレームはとまったままで表示されています。

これでは良くないので止まっている部分を切り取ります。

 

先程作成したMyAnimationを開きます。

アニメーションが再生されているので一番下にあるシークバーを選択します。

f:id:konapurinn:20190921181352p:plain

アニメーションを停止させ、シークバーでアニメーションが停止している部分で右クリックをしフレーム0~n値まで削除を選択します。(サンプルでは48フレームでした。)

f:id:konapurinn:20190921181648p:plain



以上でアニメーションの作成が完了です。

あとは従来のアセットの通りにアニメーションを組み込むことができます。

 

また今回スケルトンデータが同じものでやりましたが、ボーンのリターゲットを行えば同じような方法でアニメーションブレンドができると思います。

※検証はしていないです。

 

最後に

この機能を使用しぷちコンにゲームを応募しました。

動画がありますのでご覧下さい。

https://youtu.be/wU11vDRHabo

 

ダウンロードリンクは以下にありますのでよければ遊んでください。

 

https://drive.google.com/open?id=1JX7Q90UQFPyznw3ERsZ2PO4xqt5dG7_N