テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Animation Rigging、人型以外のキャラクターにもIKを!

f:id:tsubaki_t1:20190120234723j:plain

今回はUnity 2019.1のPackageManagerで使えるようになるAnimation Riggingについてです。

Animation Rigging

AnimationRiggingは、Animation C# Jobsの上でキャラクターを手続き的に動かす機能みたいです。例えばIKをセットアップしたり、動きを調整したり。

それ以外でもTimelineで動くキャラクター(Humanoid)の腰に回転を加えてみるなど、特定のシーンでの微調整といった意味では中々に面白い機能です。

f:id:tsubaki_t1:20190120234137g:plain
キャラクターの腰の動きをオーバーライドする

IKで言えばAnimator(Mecanim)に標準で付いているじゃん!という考えもありますが、MecanimのIKはHumanoid限定なのに対して、AnimationRiggingはGenericなRigを持つキャラクターでもIKを利用出来ます。正確にはIKを実装すれば使えるというのが正しく、最初から付いてるのはTwoBoneIKだけです。(サンプルだとフルボディIKがあったんだけど…)

例えば下のキャラクター(明らかに人型ではない)の足の動きはIKで作成しています。足の最終的な位置だけを示して、後はIKの機能で調整していると言った感じです。

f:id:tsubaki_t1:20190120234505g:plain
足を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表現を行います。

アームの先端を動かすと、先端につながるようにアームの位置が補完されています。

f:id:tsubaki_t1:20190507224513g:plain
TwoBoneIKでアーム

試した環境

  • .NET 4.x
  • Unity 2019.1
  • Animation Rigging ver 0.1.4

手順

まずアームを作ります。

最も親となるGameObject「ARM」の下に、Root > Mid > Tipになるように親子構造を構築します。この時、親となるGameObjectを回すと綺麗に子のボーンが回るようにメッシュの位置を調整しておきます。

f:id:tsubaki_t1:20190507225303j:plain
親子構造でアームを作る

f:id:tsubaki_t1:20190507225722g:plain
FKで動かせる事の確認

次にRigを設定します。

ARMの下にRigというGameObjectを作成し、RigコンポーネントTwoBoneIKConstraintコンポーネントを追加します。

Rigオブジェクトの下にTargetとHintというGameObjectを生成し、TwoBoneIKConstraintに登録していきます。この時TargetはTipと大体同じ位置に配置しておくが吉です。

f:id:tsubaki_t1:20190507230439j:plain

あとはRigBuilderを作成し、先ほど作成したRigオブジェクトを登録します。これでゲーム実行時にTwoBoneIKが動作します。

f:id:tsubaki_t1:20190507231532j:plain

動画でみたい場合、下の動画が分かりやすいです。

www.youtube.com

また導入の際、パッケージからサンプルが導入出来ます。中に色々とサンプルが入っているので追ってみるのも面白そうです。

f:id:tsubaki_t1:20190507231042j:plain