kikki's tech note

技術ブログです。UnityやSpine、MS、Javaなど技術色々について解説しています。

SpineでIK (Inverse Kinematics)を使って自然なアニメーションの手助けに

本章では、SpineでIKの作り方について共有します。

IKの概念について

IKとは

IKは、ある動作で発生するボーンの移動や回転に必要な移動量や回転量を、ソフトウェア側で自動計算し補間する概念です。例えば、腕振りの動作について、どのようにIKを採用できるか確認してみます。上腕・前腕のボーンに対してIKを採用すると、腕振り開始点と終了点の位置を決めるだけで、上腕・前腕・手のアニメーションに必要な移動・回転を計算し反映され、滑らかな動きが作成されます。

IKを使うことによる利点

IKには、以下のような利点があります。

  • アニメーション間の自動補間
  • 接地面におけるアニメーションの作成

IKの設定・力の流れ方

IKを設定する流れは、「根本から先へ」とボーンを順に指定し、動きの指針となる「IK制約オブジェクト」を設定することで完了します。また力の伝わり方については、IKを設定した順と逆に、「先から根本へ」と力が伝わります。仮にIKを「上腕→前腕→手」といった順で設定すると、「手→前腕→上腕」へと力が伝わります。
なおSpineでは、ボーン2つまでIKを設定することができます。

IKとFK

Mayaなどの一般的な3DCGソフトウェアには、IKの他にFKという概念があります。
※Spineでは、IKのみ設定が可能です。
IKは、「直線的な動き」を演出するに対して、FKでは「回転の動き」を演出できます。IKとFKの違いについては以下の通りです。

IK FK
利点 一定の位置での停止が可能 フリップの発生が少ない
直線的なアニメーションの作成が容易 親の動きに同期して自然なアニメーションの作成が容易
欠点 フリップの発生頻度が多い world座標で指定した位置への移動が困難
親の動きと連動したアニメーションの作成が困難 アニメーション中の一時停止が困難

本来は、IKとFKを組み合わせることで、お互いの欠点を埋め合い、非常に滑らかで正しい動きを作成できます。Spineでは、IKのみであるため、アニメーションさせるキーの数を増やすなどで対応しましょう。
それでは、SpineでIKの作り方について解説します。

SpineでのIKの作り方

以下の手順でIK制約を追加します。

  1. IKを設定するボーンを2つまで指定します
  2. 「Constraints」を選択します
  3. 「New IK Constraint」を選択します

f:id:kikkisnrdec:20150624112533p:plain

  1. IK制約オブジェクトの名前を入力します
  2. オブジェクトの配置先を指定します

f:id:kikkisnrdec:20150624112702p:plain

Spineでは、IKの対象となるボーンが2つまでのみ指定できます。そのため、以下のように「上腕・前腕」と「手」に対するIK制約オブジェクトを2つに分けて配置することで、自然な腕振りのアニメーションを作ることができます。
f:id:kikkisnrdec:20150624112927p:plain

総括

IKを利用することで、アニメーションの作成工数は大きく減らすことができます。特に、地面といった設置型オブジェクトがある場合、衝突時のアニメーションの再現で役立ちます。作成コストも少ないため、是非ご利用頂けたらと思います。


※無断転載禁止 Copyright (C) kikkisnrdec All Rights Reserved.