[UE4]第11回UE4ぷちコン反省:ポージング機能

概要

第11回UE4ぷちコン応募作品で作ったポージング機能の記録。

・Animation作る技術は無いが

・FKで肘や膝曲げる程度ならできるので

・それらをDynamic Montageで合成して姿勢生成した

姿勢生成の仕組み

最終的にゲーム内で使ったシステムについて先に記す。

Animation BPでの処理

↓これ(ポーズパーツと呼んでいる)を

↓こうやって力技で合成している。

※このあとアイドリングを加算合成したり足IK補正が入ったりする。

足IKはヒストリア様の記事を参考にした。

C++側の処理

「スティックを倒した方向に応じたポーズになるようにしたい」という要件のために

命名規則によってポーズパーツを事前に8方向別にリスト化しておく。

例えば腕パーツ “A_Arm_DBN_DBO” なら

“A_(UE4 Style Guide基準)”

“Arm_(腕パーツ)”

“DBN(上腕がDown, Back, Neutral)”

“DBO(下腕がDown, Back, Outside)”

という意味になっている。

これを方向別に正規表現でフィルタして8個のリストを作る。

※どのように合成すれば格好良くなるかわからなかったので、とりあえず細かくルール分けしてパーツを作ったが

実際は下腕の方向情報は使わなかった。あるある。

そして、プレイヤーがスティックをニュートラルから倒した際に

倒した方向のパーツ+反対方向のパーツを集めて、上記のSrcスロットとDstスロットにそれぞれ流し込んでいる。

※つまりスティック半回転で別のポーズになる。

これはもっと分割しても良かった気がするが、検証する時間がなかった。

経緯

上記のようなシステムに至る経緯について記す。

前提

題材が決まったあとに、

要件と現状(理想と現実)を洗い出した。

要件

・レバー倒している方向に応じたポーズになる

・操作してる感の為

・いろんなポーズになる

・飽き対策の為

現状

・かっこいいAnimationをつくる技術は無い

・前回のぷちコンではグレイマンの止めポーズをUE4のPersona Editorで強引に作った

・Animation BPにIKノードが色々あるらしい

All Right Rigというアセットがあるらしい

・UE4機能でControl Rigというのもあるらしい

Control Rig調査

・上記のalwei先生の記事を見ながら、とりあえず使えるコントロールリグを試した

・不意討ちはやめろ

※色々いじってたら画面の隅でこうなってた

・とりあえず姿勢は作れるものの、アニメーションを作るにはなかなか遠そうだ…

・この分だと、All Right Rigでも同じような感想になるだろう

IK調査

・Two Bone IKを手足に仕込んでおいて、IKターゲットをプログラム制御で移動させればいいかと考えた

・そのターゲット位置はどのように決めるのか?

・かっこいいポーズになるように決める

・Animation BP上で動かしながらポーズは作れる

・それをどう保存するのか?

・座標をメモしてcsvにでも…微妙…

・データ化するならIK座標じゃなくて普通にFKデータでいいのでは

・そしてそれはPersona Editorでプレビューしながら作れるのでは

・しかもやったことあるのでは

・そうだったな…(大切なものはいつもすぐそばにあると気づいた顔)

・また、IK座標同士を補間しても姿勢があまりうまく繋がらない問題もある

・例えば、手を上げる状態から降ろす状態に保管すると、IKターゲットは肩を貫通するので不自然な姿勢になる

・FKはFKで、関節の限界を超えて回転してしまうこともあるけど…

Blend Space調査

・ポーズをFKで作るなら、Blend Spaceでスティック入力対応ができそうだ

・試す

・できた

・要件達成!

・要件「いろんなポーズになる」

・そうだったな…(自分は地を這い泥を啜る存在だと再認識した顔)

・Blend SpaceのSample Animation切り替え機能はまだない模様

・C++拡張すればいけるっぽいが…

・C++書くなら、もう自分で方向別にAnimationを選択する処理だけ作ればいいや

Animation Montage調査

・ポーズそのものの量産はどうしよう

・Blend Space検証のために雑に作ったポーズも、そこそこ時間かかった

・この合成してる2つのポーズの下半身と上半身入れ替えればもう2こポーズできるなぁ

・それ言い出したら、右手と左手もわければいいか

・むしろ、それ動的にやればいいか

・再生Animationを動的に選択するのはどうしたらいいんだろう

・Animation Montageに腕なら腕、足なら足で全Animation登録しておいて、PlayするときにSection指定すればいけるか?

・いけた

・でもこれを左右腕と足でやらなあかんし、ポーズパーツ増えるたびに足さなあかんし…

・めんどくさい!

・とか思ってたら、Play Slot Animation as Dynamic Montageというものがあるらしいと知る

・それでええやん!試そ!

・うまくいった

・多少負荷がかかるとの事だったが、計測したらゲームに問題ない程度だった

・そして、上記画像のようなSlotだらけの構成になった

感想

・「配られたカードで勝負するしかない」

・配られたカードで作れる役を調べたり作ったりするのも楽しかったが、期限がある

・勝負に挑むまでに手札を増やしておけば、もっと楽になれそう

・楽する為に頑張ろう

以上