当たったらどうすんだよ

当たらなければどうということはない

UE5のIK的なアレソレコレドレ

こんにちは!なんです。今年もアドカレ記事書きます!
というわけで、こちらは
Unreal Engine (UE) Advent Calendar 2022 の 14 日目にあたる記事です。

では、出だし。

近況!

毎日朝からUnrealな開発ディレクターをやっています。メタバース(今やあまり良い響きとは思えないので別の言葉を使いたくなりますがとりあえず公用語として)的なナニカのUnreal部分全部を開発する仕事のディレクターですね。チームは現在12人かな。そしてなう、年末なう、いろいろヤバイイソガシイです!

とはいえ、今年は3年ぶりのUnrealFestも京都で開催されましたし、スゴイヒサシブリヤンな面々ともお会いできたり、我が開発チームに新しくて頼もしいメンバーが合流してきたり、けっこうかなり充実しているのも間違いありません。

と、ほぼ年1更新しかしていないのでブログとして近況など最初に綴ってしまいましたが、とりあえず元気です!

イントロ!

めっきりすっかりUnreal Engine 5。

ですです、ですよ。とにかくUnrealEngine5です。それ以外は考えられない、それ以外は目に入らないくらいUE5です。特にUE5.1に追加されたり修正された機能は素晴らしいものばかりで「あーそれ欲しかったんや!」という機能や「なんやそれどないしたらそないなこと思いつくん!?」みたいなものまで触っているとワクワクします。

そんなエキサイティングな毎日ですが…UE5の鼻血モノなトピックを集めた動画をまずはご紹介。

www.youtube.com

↑は今年のUnreal Fest本国版からの動画ですね。35の知られざるUE5の機能。

知っている機能も15くらいはあったけれど、20くらいは知らなかったです!

ネギトロ!

いやぼくネギトロあんま食べないんだよね…

本題、リグリグリグ…リグゥ?

UE4の終盤バージョンからControl RigなるリグシステムがUEに導入されました。

それまでも「リグ」という単語はUE内にあったのですが、たとえばヒューマノイドリグというものは「ボーンマッピングを定義したもの」であって、多くの場合「Epicヒューマノイドケルトンとの互換性を担保するもの」でした。要するにグレーマンと互換性のあるスケルトン(=リターゲットでアニメーションを流用できるヨ)であることを示したり、設定するために「リグ」という言葉が使われていました。

上記のリグはそういう「設定」に過ぎないもので、リグを使ってアニメーションを作るということはできません。MayaとかBlenderなどで言うリグとは随分と違う概念を表すものだったわけです。

しかし、Control Rigはそうではありませんでした。

従来からAnimation BPのスケルタルコントロールというノード群を利用して、一般的なDCCで使うようなコンストレイントや位置・回転コピーを利用することはできました。が、それらはあくまでも二次的に、言い換えるとプロシージャルにボーンを制御するためのもので、便利ではありましたが「アニメーションを作る」という目的で使えるものではありませんでした。

Control Rigの実装例

ところがControl Rigは、様々なボーンの制御と同時にギズモを設定することでIKを利用したアニメーションを作成できる、という点が革新的でした。また、Control RigはIK制御では必須のレイキャスト(Sphere Trace)による地面とのコリジョンチェックもリグ内で完結することが出来、ある程度の汎用性も確保できるなどUnreal Engineを使ったアニメーションの作成や制御において大きな一歩を踏み出すもの、と言えます。

UE5時代のリグ

Control Rigのおおよその機能はUE5を待たずにUE4.27でだいたい今の状態までブラッシュアップが行われました。UE5.1では、スケルトンに対してプロシージャルにリグを生成する機能が追加されているようですが、この辺はぼく的にまだ未検証の部分が多いので今回は触れません。ただ、Control Rigで出来ることそのものは、UE5.0.3とUE5.1.0の間ではそれほど変化がない、と捉えてOKです。

続いて、UE5.0で追加された新しいリグ機能…それがIK Rigと呼ばれているものです。

ぶっちゃけ、セットアップの楽なところでいうと「Control Rigより遥かに良い」もので、いっそ全部こっちでいったらえんちゃう?と思うのですが…IK Rigはどちらかというと「IKリターゲッタを使うためのお膳立て」としての建付けで語られることが多いものとなっています。

IK Rigの実装例

チェーンを選択してソルバを追加、ルートとゴールを設定したらソルバの出来上がり!

この辺は一般的な3D DCCで作成するリグと手順が似通っているので、Control Rigより分かりやすい!と捉える方が多いでしょう。実際、ぼくもそう思います。

IKリグとIKリターゲッタのTips

というわけで「かんたんMech v3号」で見てみましょう。

かんたんMech v3号

IKリグとIKリターゲッタによる設定の解説や紹介では「フルボディIKが前提になっている」ことがなぜか多いのですが、実はIKリグには様々なソルバが用意されています。

特にかんたんMechのように「人体に近い構造だけど一部の骨の配置がおそろしく違う」という場合、フルボディIKだと関節がひねられてしまうなど不具合を潰すのが大変です。

かんたんMechのIKリグ

そのようなケースでは、フルボディIKではなくボディムーバーと手足IK(リムIK)を使った「普通のIKリグ」を設定したほうが、難しい設定もなく運用することができます。

↑の画像を見ていただければ一目瞭然ですが、Pelvisにボディムーバーという移動用のソルバを設定し、残りは手足のIKソルバを設定しただけです。

かんたんMechのIKリターゲッタ

IKリターゲッタのヒント

チェーンの設定

UE5.0以降のアニメーション新機能では大半がルートモーションを前提とした動作になっています。IKリターゲッタではルートモーションをリターゲットすることが可能ですが、ターゲットとソースのチェーンにルート階層にあるボーンがなければなりません。

ルートチェーンのFK設定

↑で示したようにルートモーションをリターゲットする際には平行移動モードをGlobally Scaledに設定しておく必要があります。ただ、作例のようにもともとの体格差が10倍レベルだと…さすがにルートモーションの移動量が合わないことはありますね(笑

また「IKリターゲッタ」という名称ではありますが「FKリターゲット」も得意です。これは特にソルバを設定せず、ボーンのチェーン(リム)だけを作成すればリターゲットが可能です。IKがないと体格に応じた手足の位置決めが合わなくなりますが、特にIK設定の必要がないアセット同士であれば、わざわざソルバを設定しなくてもリターゲットできてしまうことも覚えておくと役に立つかと思います。

次に、フルボディIKを利用したアニメーションリターゲットでは、↓の画像に赤枠で示した部分で各ゴールの位置をリターゲット時に調整することが可能です。

フルボディIKのチェーンマッピング

デフォルト状態

スタティックオフセットのZを調整

こうした設定は各ゴール毎にできますので地面への設置状態を微調整する必要がある場合は活用してみましょう。

UE5対応・Blender to UnrealなAutoRig Pro設定

Blender3.3LTSでAutoRigPro

ぼくの場合メインの3D DCCがBlenderなのですが、リグ用のアドオンとしてAutoRig Proを愛用しているのは既報の通りです。

blendermarket.com

AutoRigProは相変わらずアップデートも真摯に対応が続いていて、当然のことながらUE5以降のメタヒューマン系スケルトン(マネキンスケルトン)互換のFBX出力が可能になっています。

ただ…実際に運用してみると「背骨6本もいらなくね?」とか色々言いたいことも出てきたりして、個人的には旧グレーマンスタイルの背骨4本型でスケルタルメッシュ出力することが多いです。

この際注意しなければならないこととして、UE5以降のマネキンスケルトンとグレーマン時代のUE4ヒューマノイドケルトンでは、ツイストボーンの位置(と階層)が異なります。

謎の位置補正をしているマネキンさん

そのためUE5マネキンのControl Rigを見てみると、ツイスト補正ノードの部分で謎のトランスフォーム補正が入っていますが、これはUE5マネキンだと必要ですがUE4互換のスケルトンでは必要ありません。

ツイスト3本!豪華なUE4互換スケルト

UEヒューマノイドの場合、ツイストボーンの数には特に制限がないので程よく増やしてツイストボーンを3本にしておくと腕の捩じりに対して痩せにくいスキンを維持することが可能です。

このスケルトンを出力する際、LegacyというパネルがARPにありますので…

Legacyオプション

↑のようにOld UE humanoid twist bones positionをチェックしてあげることで正規の位置にツイストボーンを配置することが可能になります。

IK IK IK ?

さて…こうして眺めていくとUE5には

  1. Animation BPのAnimgraphで使えるIKノード
  2. Control RigによるIK
  3. IK RigによるIK

以上の3つのIKが「分かりやすいところで」存在することになります。

しかしもう少し細かく見ていくと

  1. Foot Placementノード
  2. Physics Control コンポーネント

でもIKもしくはIK的な表現が可能になっています。

特にFoot Placementノードは昨日のアドベントカレンダー、EGJおかずさんのスライドの97ページでも紹介されていて、すごく便利なノードですので是非使える場面では使っていきたいです。

www.docswell.com

また、Physics Control Componentについては

↑こんな感じに動作することをUE5.1 Preview時から確認しています。今だと5.1正式版のコンテンツサンプルにも作例が紹介されているのでチェックしてみてください。

Physics Control実装例

Physics Controlセットアップ例

↑はLimb Setup Dataの中身です。やっていることはIK Rigと似ていて一連のボーンチェーンをLimb(リム)として設定し、追加していくというものです。

もともと物理シミュレーションというのはIK的な動作をするものなので「ぶん殴ってよろめかせたい敵キャラが実装していないはずのFoot IK動作をしていた!」時はPhysics Control Componentの恩恵かも知れません。あるいは、恋。

さて、このように複数のIKが実装されているUE5ですが、どのIKが一番良いのでしょうか?それは皆さんが取り組むプロジェクトの要望と実装コスト次第…と答えるのが大人な回答ではありますが、とにかく手っ取り早くIKを実装したいのであれば今だとFoot Placementノードが一番手軽で高機能だと思います。

一方、もっと詳細に各部を制御するのであればControl RigによるIKを使えばIKソルバも複数用意されているし、各制御部分を変数化してAnimation BPから渡すなどの外部制御が出来たり、レイキャストまでリグ内で包含させてスケルトンとプロシージャルアニメーション全般を完結させることが可能になります。

その他、UE5.1から実装された様々なアニメーション周りの機能については、昨日のおかずさんによるアドカレ記事をご覧ください。(タイムループ)

pafuhana1213.hatenablog.com

オタッシャデー

今年の記事もどうにか書き終えることができました。

明日のアドベントカレンダーも楽しみですね!