Blender : リギングに必要なBone > IK > Limit x/y/zとBone Constraints > Limit Rotation Limit x/y/zは,なぜ一致しないのか

Cropped d4cd7ac1381dc72b731d1c4cdf542dd3.png

はじめに

blenderで人体リグを作成していると、手首・肘・肩のような関節を、できるだけ少数のTarget BoneやPole Boneで自然に動かしたい場面,すなわちポージングがあります。特に、IKを使って腕全体を制御しながら、関節ごとの可動域を人間らしく制限したい場合、Boneの回転制限をどの機能で管理すべきかが問題になります。

その中で分かりにくいのが、Bone > Inverse Kinematics > Limit X/Y/Z と、Bone Constraints > Limit Rotation > Limit X/Y/Z の違いです。どちらも一見すると「Boneの回転範囲を制限する機能」に見えるため、IK側で目視調整した関節可動域を、そのままLimit Rotation Constraintへ反映できるのではないか、と考えたくなります。しかし,設定可能範囲は,Bone > Inverse Kinematics > Limit X/Y/Z では,min値は-180~0度,max値は0~180度と、Bone Constraints > Limit Rotation > Limit X/Y/Z では,min/maxともに,-360度~360度と,少しトリッキーです.

従って、IK Limitの値をLimit Rotationへ単純にコピーしても、同じ可動域にはなりません。これは個別の設定ミスというより、Blender内部でIK Solver用の制限と通常Constraint用の回転制限が別系統として扱われているためです。

この問題は新しいものではなく、Blenderユーザーコミュニティでも以前から繰り返し質問されてきました。本記事では、人体リグにおける自然な腕の制御を念頭に置きながら、IK LimitとLimit Rotation Constraintの違い、なぜ単純変換が難しいのか、そして実務上どのように使い分けるべきかを整理します。

― 回転制限が2つある理由と、リギング実務での使い分け ―

Blenderでキャラクターリグや機械リグを作っていると、Boneの回転制限に関して混乱しやすい場面があります。

特に紛らわしいのが、次の2つです。

Bone > Inverse Kinematics > Limit X/Y/Z

Bone Constraints > Limit Rotation

どちらも「Boneの回転を制限する機能」に見えます。
そのため、次のように考えたくなります。

Bone > IK > Limit X/Y/Z で設定した関節可動域を、
Bone Constraints > Limit Rotation の min/max に自動変換できるのではないか?

しかし、実際に試してみると、単純には一致しません。
IK側のLimit値をLimit Rotationへコピーしても、同じ可動域にならないことがあります。

これは単なる操作ミスではなく、Blender内部でこの2つが別の制御システムとして扱われているためです。


1. 結論:IK LimitとLimit Rotationは別用途の機能

まず結論から言うと、両者の役割は次のように違います。

機能主な用途評価される場所
Bone > IK > Limit X/Y/ZIK Solver内部での関節制限IK Solver内
Bone Constraints > Limit RotationFK操作・通常Constraint後の回転制限Constraint Stack上

つまり、どちらも「回転制限」ですが、同じものではありません。

IK Limitは、IK SolverがTarget Boneへ向かってチェーン全体を解くときに使う制限です。
一方、Limit Rotation Constraintは、Pose BoneやObjectのEuler回転値をmin/maxでクランプする通常Constraintです。

Blender公式マニュアルでも、Limit Rotation Constraintについて、IKの影響を受けるBoneでは期待どおり動かないため、BoneのIKパネル側のLimit設定を使うように説明されています。


2. IK Solverとは何をしているのか

IK、つまりInverse Kinematicsは、Targetに向かってBoneチェーン全体を自動的に曲げる仕組みです。

たとえば腕のリグで、手首のIK Targetを動かすと、前腕・上腕が自動的に回転して手先がTargetへ届くようになります。

Blender公式マニュアルでも、IK Constraintは「1本のBoneだけでなく、Boneチェーン全体をTargetに追従させる」機能として説明されています。

このときIK Solverは、単純に1本のBoneのEuler角だけを見ているわけではありません。

Targetに届くか
Pole Target方向を維持するか
チェーン長はどうか
各BoneのIK制限はどうか
親Boneの姿勢はどうか

といった条件を見ながら、チェーン全体の姿勢を解きます。

そのため、IK Limitは「このBoneのEuler Xを何度から何度までにする」というより、IK Solverの解探索の中で使われる関節制限と考える方が自然です。


コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA