【Unity】Animation Rigging、人型以外のキャラクターにもIKを!
今回はUnity 2019.1のPackageManagerで使えるようになるAnimation Riggingについてです。
Animation Rigging
AnimationRiggingは、Animation C# Jobsの上でキャラクターを手続き的に動かす機能みたいです。例えばIKをセットアップしたり、動きを調整したり。
それ以外でもTimelineで動くキャラクター(Humanoid)の腰に回転を加えてみるなど、特定のシーンでの微調整といった意味では中々に面白い機能です。
IKで言えばAnimator(Mecanim)に標準で付いているじゃん!という考えもありますが、MecanimのIKはHumanoid限定なのに対して、AnimationRiggingはGenericなRigを持つキャラクターでもIKを利用出来ます。正確にはIKを実装すれば使えるというのが正しく、最初から付いてるのはTwoBoneIK
だけです。(サンプルだとフルボディIKがあったんだけど…)
例えば下のキャラクター(明らかに人型ではない)の足の動きはIKで作成しています。足の最終的な位置だけを示して、後はIKの機能で調整していると言った感じです。
他にもアニメーションで動くキャラクターのTransformのオーバーライドや、複数の動きのブレンドなど色々と出来るみたいです。
- Blend Constraint
- Chain IK Constraint
- Damped Transform
- Multi-Aim Constraint
- Multi-Parent Constraint
- Multi-Position Constraint
- Multi-Referential Constraint
- Multi-Rotation Constraint
- Override Transform
- Twist Correction
- Two Bone IK Constraint
実際に使ってみる
実際にコレを使ってみます。今回試す機能はTwoBoneIKです。2つの関節でIK表現を行います。
アームの先端を動かすと、先端につながるようにアームの位置が補完されています。
試した環境
- .NET 4.x
- Unity 2019.1
- Animation Rigging ver 0.1.4
手順
まずアームを作ります。
最も親となるGameObject「ARM」の下に、Root > Mid > Tipになるように親子構造を構築します。この時、親となるGameObjectを回すと綺麗に子のボーンが回るようにメッシュの位置を調整しておきます。
次にRigを設定します。
ARMの下にRigというGameObjectを作成し、Rig
コンポーネントとTwoBoneIKConstraint
コンポーネントを追加します。
Rigオブジェクトの下にTargetとHintというGameObjectを生成し、TwoBoneIKConstraint
に登録していきます。この時TargetはTipと大体同じ位置に配置しておくが吉です。
あとはRigBuilder
を作成し、先ほど作成したRigオブジェクトを登録します。これでゲーム実行時にTwoBoneIKが動作します。
動画でみたい場合、下の動画が分かりやすいです。
また導入の際、パッケージからサンプルが導入出来ます。中に色々とサンプルが入っているので追ってみるのも面白そうです。