NIFF2.0でのIKシステムは下記のような2BoneのIKシステムが使用可能です。Chain Root -> Joint0 -> Joint1 -> Effectorという形で構成されています。
Chain RootとEffectorの位置を決定することによりJoint0、Joint1の変換マトリクスを求めます。
IKのJointの軸は下記のように決定されます。 図 2Bone IK
また、IKの変形はレゾリューション・プレーンと呼ばれる平面上でおこなわれます。 図 Jointの軸
この平面は基本的には下図のようなJoint0のZ軸を法線とし、joint0の原点を通る平面です。
ただし、レゾリューション・プレーンの法線を変更することができます。 図 Resolution Plane
下図のように変更されたレゾリューション・プレーンの軸を指定することで、本来のIKの動作を歪めることができます。
この場合、Joint0にPreferred Axis ConstraintやUp Vector Constraintをかけると、Constraintするオブジェクトは本来のレゾリューション・プレーンを決定し、Joint0、Joint1は変更されたレゾリューション・プレーン上で動作します。
IKシステム上ではEffectorの移動により、Joint0とJoint1の変換マトリクスが決定します。その場合、Joint0に与えられたフラグによって、二通りの変形があります。 図 Resolution Planeの変更
一つはNIFF2_JOINT_UPフラグがJoint0に設定されている場合です。この場合、下図のようにJoint0のY軸の向きにEffectorが移動した場合にIKは「曲がる」動作をします。
図 NIFF2_JOINT_UP指定時
逆にNIFF2_JOINT_DOWNフラグがJoint0に設定されている場合は下図のようにJoint0のY軸と逆の向きにEffectorが移動した場合にIKが「曲がり」ます。
図 NIFF2_JOINT_DOWN指定時