AnimMontage(アニメーションモンタージュ)について、前回より続きです。
UE4 AnimMontage(アニメーションモンタージュ)について 解説編 - Let's Enjoy Unreal Engine
今回は実際にアニメーションモンタージュを作成して、実際に使っていきます。まずは画像の通りにアニメーションモンタージュを作成していきましょう。名前も自由につけておきます。なお、UIは全てUE4.6.1の日本語版のものです。
アニメーション合成を行なう
次は何もないアニメーションモンタージュにアニメーションを追加していきます。アニメーションモンタージュを開いた状態で、追加したいアニメーションシーケンスをマウスでドラッグ&ドロップします。
これで普通のアニメーションは再生されるようになると思います。この後はアニメーションを複数追加して、アニメーション合成を行ないます。
複数回同様の操作を行なう事で複数のアニメーションがアニメーションスロットに追加されて、シーケンスに流れる事で1つのアニメーションになっていると思います。これだけでも複数アニメーションを1つのアニメーションとして扱う事が出来ます。
ちなみに、アニメーションは"StartTime"と"EndTime"を指定する事により、自由にアニメーションフレームを追加する事が出来ます。特定アニメーションのあのフレームだけがほしい!といった事も可能です。
セクションを追加する
モンタージュUI内で右クリック→"新規のモンタージュセクション"を選択する事でセクションを追加する事が出来ます。これは自由に行き来可能なジャンプ先だと思うとわかりやすいです。
今回は緑の縦ラインで表示されている"SecondCombo"というセクションを置きました。これはつまり、次に再生したい2段目のコンボ攻撃です。1段目の攻撃の最中に入力があると2段目に飛ぶという場所の指定です。もし入力がなければこのままアニメーションを停止させます。
ブランチポイントを追加する
最後はブランチポイントを作成します。操作はセクションとほぼ同じでモンタージュUI内で右クリック→"新規の分岐点"を選択します。
ちょうとSecondComboセクションの終わる手前くらいに配置します。ここで終了を検知し、分岐するかを決めます。ブランチポイントを作るとアニメーションブループリント内にイベントノードが出現するようになります。
もしアニメーションブループリント内を探してみても、該当する名前のイベントノードが出現しない場合は、まずコンパイルを試してみます。それでも出現しない場合は一旦エディターの再起動を行なう事で出現する可能性が高いです。
入力イベントで分岐を行なう
さて、ここからは入力イベントに応じてブランチポイントでコンボ攻撃の分岐を行ないます。入力はクラスブループリントで取り、その情報をアニメーションブループリントで操作します。クラスブループリントとアニメーションブループリントの連携方法は以前解説していますので、そちらをご参照ください。
UE4 クラスブループリントとアニメーションブループリント間で相互連携をさせる - Let's Enjoy Unreal Engine
コンボ攻撃入力イベントがきたタイミングで制御を行ないます。今回はMultiGateノードを使って、初回はアニメーションモンタージュ再生を行ない、次回はSecondComboセクションへとジャンプさせるようにします。
そして、ブランチポイントのイベントの方では、アニメーションモンタージュの再生を停止させるノードを入れておきます。
これで何もボタンを押さないままであれば、そのままアニメーションモンタージュが終了し、コンボ終了です。ただし、このままだと2回目以降には正常に動きません。MultiGateノードをリセットできるようにRerouteノードを挟み、セクションジャンプ後とモンタージュストップ後にResetに入れるように改良します。
少しややこしくなりましたが、これでコンボ終了後にリセットが入り、何度でも同じことが行なう事が可能となりました。ただし、これだけではまだアニメーションモンタージュは再生ができません。
スロットアニメーションの再生を行なう
アニメーションモンタージュの再生は必ずスロットアニメーションとして行なう必要があります。スロットアニメーションとは複数のアニメーションを同時に再生する事が出来る機能です。アニメーションモンタージュはスロットを必ず持っているので、あらかじめモンタージュ内で設定しておきましょう。
モンタージュUI内の虫めがねボタンでグループとスロットが追加できます。スロットはグループに必ず所属するので、まずはグループを追加してからスロットを追加します。これでスロットの設定はOKです。
あとはアニメーションブループリント内のAnimGraphを開きます。ここは本来アニメーションステートマシンの設定を行なうところですが、スロットアニメーションはここで呼び出しを行ないます。
AnimGraph内で"Slot"ノードを作ります。日本語の場合だと"スロット"と表示されていますが、それでOKです。あとはノードを選択してから"Settings"の中で"Slot Name"を設定しておきます。
最後はアニメーションステートマシーンの結果をSlotノードに渡す形で、最終アニメーションポーズへと渡します。
これで遂にスロットアニメーションを行なう事が出来るようになりました!スロットアニメーションは通常のアニメーションとは別軸で動くアニメーションなので、いくらでも再生する事ができます。なので、ステートマシンに依存しない形で再生する事ができます。
あとは実際に動作を確認してみます。
かなり強引なやり方になっているので、そこは直す必要がありますがご覧の通り2段階目の攻撃は途中からコンボとなって違うセクションから再生されているのがわかります。うまくタイミングや繋ぎ方の調整をしてあげるともっとスムーズになりますが、ここはあくまでもアニメーションモンタージュの解説なので、それは置いておくとします。
以上のように一通りアニメーションモンタージュの使い方を解説しましたが、これでまだ終わりではないのです。アニメーションモンタージュとスロットアニメーションを使いこなせば、アニメーションブレンディングによるプロシージャルアニメーションの作成も可能となります。次回はそれを解説します。
前回
UE4 AnimMontage(アニメーションモンタージュ)について 解説編 - Let's Enjoy Unreal Engine
つづき
UE4 AnimMontage(アニメーションモンタージュ)について プロシージャルアニメーション編 - Let's Enjoy Unreal Engine