本記事はQualiArts Advent Calendar 2021の21日目の記事となります。
概要
UnityとMaya双方で簡単な人形のリグを作成し、コントローラのアニメーションを受け渡すことでキャラクタの制御を行います。
Maya | Unity |
---|---|
リギング
アニメーションを付ける際にスキニングされた骨を直接動かして作業するのは大変です。
そこで効率的に作業できるようにコントローラを作成することがあり、このコントローラや制御機構を作る作業をリギングと呼びます。
(この記事ではスキニングを含まないものとします。)
今回は手足のIK、指の一括操作、いくつかのコンストレイントを用いて人形のリグを作成しました。
UnityにはAnimationRiggingという機能があり、TwoBoneIKやコンストレイントを設定することができます。
MayaとUnityで同様のリギングを行い、コントローラのアニメーションを流すことで、コントローラーに応じてキャラが動いていることが確認できます。
Maya | Unity |
---|---|
自作とした機構として、指の一括制御を紹介したいと思います。
手はジョイントも多くモーション付けが大変になりがちで、キーとしても多くなってしまいます。
プロジェクト要件次第ですが、単純な握りだけでよいのであれば一括で操作することも検討できるかと思います。
以下の動画ではコントローラの回転を、各指に一括して与えている様子です。
親指とその他の指は動きが大きく異なるため、別々に操作できるようにしてあります。
アニメーション
一般的にはMayaで作成したアニメーションを基本骨にベイクしてUnityに渡すことになると思います。
ただ今回はUnityとMayaで同一のリグを組む事できているので、ベイクをせずにコントローラのアニメーションを渡します。
ベイクする工程がない代わりにUnityではランタイムでリグを介した動きとなっています。
1:Mayaでモーション作成 | 2:Mayaでベイク | 3:Unityでモーション適応 | |
---|---|---|---|
一般的なケース | |||
今回のケース | なし |
感想と考察
UnityとMaya双方で簡単な人形のリグを作成し、コントローラのアニメーションを受け渡すことでキャラクタの制御を行いました。
メリット
MayaとUnityでリグを共通化できているため、特殊な動作でも完全に再現することが可能です。
基本人体はベイクし、特殊な機構だけリギングするなどハイブリッドな使い方でも十分有効です。
例えば手足の伸縮や変形、武器の持ち替えなど特殊な動作をさせたい場合に、対応方法の選択肢に入ると思います。
リグ次第ではリダクション時に累積しやすい末端の誤差(特に足滑り)を抑制したり、アニメーションファイルの容量削減も期待できます。
デメリット
リグの共通化はハードルが高く、エンジニアというよりリガーとして能力が求められると感じました。
各コンポーネントの挙動を把握し、UnityかMayaか、コンポーネントか階層か、どこで辻褄を合わせるのか考えながら共通化する必要があります。
例えばUnityのTwoBoneIkは完全なワールド合わせでは無いように見えたため、独自のコンポーネントを作成するか、階層を工夫して使用する必要があると感じました。(勘違いであれば申し訳ないです...)
さらに複雑なリグを組んだ場合、ランタイムで負荷がかかってしまうため、使用する際には注意する必要があります。
最後に
UnityのAnimarionRiggingの執筆時点でのバージョンは1.1で正式版ですが、あまり活用事例を聞きません。
この記事が皆様の参考になれば幸いです。