多数のチェインを含むスケルトンを作成した後にIKを起動すると、それぞれのチェインが必ずしも思い通りには移動しないということがわかります。また、実際の人間の手足とは異なり、チェインの動きにはあまり制約がないという点も問題になります。このため、非常に不自然に脚が曲がってしまうといった問題が起こる可能性があります。このような問題を解決するには、各ジョイントが回転する量を決定する「規則」を設定します。
ジョイントやエフェクタを拘束してその動きを制限する方法を、以下に列挙します。
[回転制限](Rotation Limits)と[硬さ](Stiffness)を設定してジョイントの動きを制限します。「回転制限の設定」を参照してください。
アップベクターおよび軸参照コンストレイントを使って、チェインの向きを拘束します。詳細については、「 チェインのアップ ベクター(方向)を拘束する」を参照してください。
[Skeleton][Rotation Limits]コマンドは、チェインエレメントの回転範囲を制限します。たとえば、回転制限を設定して、頭部が180度回転しないように制限できます。
エレメントが階層化されている場合はグローバル座標で制限され、それ以外の場合は常にローカル座標で制限されます。
A |
回転制限: ボーンはZ軸を中心に回転し、ブロックのサーフェイスを越えることはありません。 |
B |
設定: Z軸を中心とする回転について、最小値(時計回り)と最大値(反時計回り)を設定します。X 方向と Y 方向の回転を制限します。この図では、最小値が –138 度で、最大値が 42 度です。 |
制限するジョイントを選択します。通常、チェインの最初のジョイントから始めます。チェインのボーンは、それぞれ次にあるボーンの親になるため、3方向の軸すべてを考慮し、変更が後続ジョイントに与える影響を確認する必要があります。
[Transform]パネルの[回転ツール]ボタンをクリックします。
2D チェインを使用している場合は、2D ジョイントの回転軸が Z であることに注意してください。Z 軸だけで回転すると、レゾリューション プレーン内でジョイントが正確に保持されます。
ジョイントを最小の位置に回転させます。これは、Z軸が手前を指しているとして、時計回りの最も遠い、ジョイントを停止させる位置です。
[Animate]ツールバーから[作成](Create) [スケルトン](Skeleton) [最小回転制限の設定](Set Minimum Rotation Limit)を選択します。
[Animate]ツールバーから[作成](Create) [スケルトン](Skeleton) [最大回転制限の設定](Set Maximum Rotation Limit)を選択します。
[Kinematic Joint]プロパティエディタから回転制限を適用するには
チェインに回転制限を追加しても、ジョイント角度は自動的に再計算されません。チェインを更新するには、エフェクタを移動させる必要があります。
制限するジョイントを選択します。通常、チェインの最初のジョイントから始めます。チェインのボーンは、それぞれ次にあるボーンの親になるため、3方向の軸すべてを考慮し、変更が後続ジョイントに与える影響を確認する必要があります。
[Transform]パネルの[回転ツール]ボタンをクリックします。
2D チェインを使用している場合は、2D ジョイントの回転軸が Z であることに注意してください。Z 軸だけで回転すると、レゾリューション プレーン内でジョイントが正確に保持されます。
ジョイントを最小の位置に回転させます。これは、Z軸が手前を指しているとして、時計回りの最も遠い、ジョイントを停止させる位置です。
[アクティブ](Active)をオンにして、ジョイントの回転制限をアクティブにします。
制限されたオブジェクトは、[Kinematic Joint]プロパティエディタで設定した最小値および最大値を超えて回転することはありません。
ジョイントの動く範囲を制限する別の方法として、硬さの設定があります。ジョイントの硬さは、IKを使用している間の折り曲げに対する抵抗の大きさを表します。キャラクタに関節を付けたくないかもしれませんが、ジョイントに少しの硬さがあると効果的なものになる場合があります。