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

AimOffsetに合わせてAnimMontageをプレイさせる

UE4

お久しぶりです。備忘録ということで記事を書きたいと思います。
記事の題名ですが、一体どういうことかというとこういうことです。

www.youtube.com

下から上に向けてAimしながら発砲しています。発砲の際に AnimMontage を再生しているのですが、どの方向を向きながらでも同じ強度でプレイされています。
今回はこの処理についての記事になります。


用意編
1 : AnimMontage を用意する
今回は銃を発砲した際の反動の AnimMontage を作成します。AnimMontage 作成方法ですが、alweiさんが詳しく解説してくださってますのでこちらの説明は丸投げします。
unrealengine.hatenablog.com


2 : Blueprint に AnimMontage をプレイさせる処理を組み込む
まず、Event BeginPlay やなんやらで meshAssign されている AnimationBP にキャストし、それを変数にします。こんな感じ。
f:id:ikagamedev:20170223010416p:plain

そうしたら AnimInstance を引数に取る、 MontagePlay 関数で AnimMontage がプレイできるようになります。
f:id:ikagamedev:20170223010232p:plain


3 : AnimationBP で Blend を行う
f:id:ikagamedev:20170223012225p:plain


簡単に説明させていただきます。 BS_Walk_Jog_Run と書かれているものは、BlendSpace といって複数の Animation を一つの Animation にまとめ、X, Yのパラメーターで遷移させるといったものです。Editor自体はこんな感じ。
www.youtube.com

なお、BlendSpace の作成方法ですがこちらの公式ドキュメントをご覧ください。
docs.unrealengine.com


もうひとつの AO_AimSpace_Iron は、今回の主役である AimOffset です。こちらのEditorは先ほどの BlendSpace のEditorとあまり変わらないので割愛させていただきます。
AimOffset の作り方ですが、かなり面倒なので今回は割愛。代わりに、こちらをご覧いただければ仕組みは把握できるかと思います。
UE4 #5 Add rifle and create aim offset from AimSpace Animation - YouTube
こちらの動画の、3:50あたりから説明されています。

Slot
こちらが AnimMontage を再生するのに必要なものです。


Layered blend per bone

こちらも重要です。 Bone 毎に独立した Animation をプレイさせたいときに使用するものです。こちらを参照。
f:id:ikagamedev:20170223014551j:plain

今回は spine_01 という Bone から上だけに銃の発砲の AnimMontage を適用したかったので、こんな感じになっています。
f:id:ikagamedev:20170223014820p:plain

ここまで実装できれば AnimMontage は再生されます。しかし、問題点が浮上してきます。
www.youtube.com

ふざけている訳ではありません。これが現実です...。元となっている Animation が下のポーズのままのせいで、しっかりと AimOffset に合わせた AnimMontage のプレイができないのです。
f:id:ikagamedev:20170223015552p:plain

実は、これの解決方法はいたってシンプルです。
AnimMontage の元になっている Animation で設定を行っていきます。

1 : Asset Details のAdditive Settings の Additive Anim Type を変更する
f:id:ikagamedev:20170223021002p:plain
No AdditiveMesh Space に変更してください。


2 : 同項目内の Base Pose Type を変更する
f:id:ikagamedev:20170223021012p:plain
NoneSelected Animatin Frame に変更してください。


3 : Base Animation を追加する
f:id:ikagamedev:20170223021020p:plain
こちらを今回は、 Aim_Space_IronSight に変更しています。


以上で完了です。プレイして試してみてください('ω')
お疲れさまでした。 良い Unreal Engine ライフをお過ごしください。