[UE4]第11回UE4ぷちコン反省:Overshoot_Blend

概要

第11回UE4ぷちコン応募作品で作ったOvershoot Blendの記録。

・単純な線形補間だと味気なさそうだったのでダメ元でAnimNode自作

・補間終わり際の関節角速度を使ってフォロースルーつけた

・それなりに上手くいったけど構成が危うい

仕組み

ほげたつ先生の慣性ベースドなアニメーションブレンド(解説編)を参考に、ノード自作に挑戦した。

ノードの作り方などは上記記事からさらに参照されている記事などで解説されているので、

ここでは単に自作した機能だけ述べる。

このノードは以下のように動作する。

・常に全身の関節角度を2frameぶん保存する

・Blend Triggerが切り替わると、以下の動作をする

・最新の保存姿勢を「開始姿勢」として保存する

・開始姿勢から入力姿勢に対して、Blend Sec秒の線形補間を始める

・線形補間が終わる際の関節角速度を計算する

・その速度を初速度として、Overshoot Sec秒で入力姿勢の関節角度に戻ってくる放物線を計算する

・放物線を目標角度からのオフセット量として扱いながら適用する

ブレンドノードのくせに入力ピンが1個しかないという謎の仕様になっているが

ポージング機能との合わせ技でこうなった。

このTweetを投稿した時は、まだ入力ピンが2つあった。


経緯

・戦隊ものの資料を見るにつけ、かっこいいポーズには勢いが必要だと感じた

・勢いが付きすぎて若干ポーズ崩れるぐらいでよさそう

・UE4には、線形補間以外にもいろいろな補間が選べるが、α=1.0を超えるようなものはない(当たり前だが)

・ブレンドカーブ指定機能でα>1.0にしても、1.0にClampされる(当たり前だが)

・作るしかねぇ…!

・最悪ゲームに繋がらなくても、AnimNode作成が勉強できるからいいやと思い最初に取り組んだ

・ポージング機能ができた後に入力を1つにする改造を行った

感想

・それっぽく見えるようになってよかった(個人の感想です)

・だが、フォロースルーのつけ方など、まだまだやれる事は多い

・Anim Node自作の勉強になった

・しかし、非常に流用しにくい構成になってしまった…

・実装中も気にはなっていたが、YAGNIYAGNIと唱えてごまかした

・ポーズ保存ノードとかを使えばもうちょっとマシになる…か?

・イキスギブレンドと呼びそうになるのをこらえるのが大変だった

・コードコメントに「ここでイキスギ」とか書いてあるのを提出後の賢者タイムにそっと直す日々

以上