| On this page | |
| Since | 20.0 |
インバースキネマティクスを使用して、ルートポジション、ゴールおよび捻じれポジションからジョイントの配置および方向付けを行ないます。
ソルバ ¶
solver 入力ポートでは、IKを解くのに使用するソルバを指定することができます。 指定可能なソルバは、 デフォルトの IK Solver ( solver = 0)、 IK with Constraints Solver ( solver = 1)です。
IK Solver ¶
このソルバは、比較的安定した解を生成します。 usetwist がTrueに設定されている場合、その解は、 twist 極ベクトルに合わせて整列されます。
IK with Constraints Solver ¶
このソルバでは、ジョイント毎の回転制限、ジョイント毎の減衰(個々のジョイントの回転の優先順位を付けるのに役立ちます)を指定することができます。 usetwist がTrueに設定されている場合、拘束ありの解は、 twist 極ベクトルに合わせて再整列され、その再整列の際には1番目のジョイントの拘束は無視されます。
ジョイント構成は、 properties ポートの辞書を介して指定することができます。 各辞書エントリは、1つのジョイントのプロパティを設定します。 以下のジョイントプロパティの説明を参照してください。 辞書の形式は以下の通りです:
{
"<joint_in_port_name>" : {
"rotation_upper_limits" : Vector3(M_PI, M_PI, M_PI),
"rotation_lower_limits" : Vector3(-M_PI, -M_PI, -M_PI),
"restangle" : Vector3(0, 0, 0),
"damp" : Float(0.5)
"dampangle" : Vector3(0, 0, 0),
"damprolloff" : Vector3(1, 1, 1),
}
}辞書エントリのキーは、ジョイントの行列が指定された in サブポートの名前と一致していなければなりません。 以下の例は、“base”という名前のジョイントの設定です:
{
"base" : {
"rotation_upper_limits" : Vector3(M_PI, M_PI, M_PI),
"rotation_lower_limits" : Vector3(-M_PI, -M_PI, -M_PI),
"restangle" : Vector3(0, 0, 0),
"damp" : Float(0.5)
"dampangle" : Vector3(0, 0, 0),
"damprolloff" : Vector3(1, 1, 1),
}
}あるいは、辞書エントリのキーとして、 in サブポートのインデックスを指定することも可能です。
例えば、0キーでは、その設定が1番目のジョイントに適用され、1キーでは、その設定が2番目のジョイントに適用されます。
以下は、1番目のジョイントの設定例です:
{
"0" : {
"rotation_upper_limits" : Vector3(M_PI, M_PI, M_PI),
"rotation_lower_limits" : Vector3(-M_PI, -M_PI, -M_PI),
"restangle" : Vector3(0, 0, 0),
"damp" : Float(0.5)
"dampangle" : Vector3(0, 0, 0),
"damprolloff" : Vector3(1, 1, 1),
}
}この辞書は疎であり、辞書に含まれていないジョイントについては、上記の例に示された値がデフォルト値として設定されます。
ジョイントプロパティ ¶
プロパティ |
説明 |
|---|---|
rotation_upper_limits |
Upper Rotation Limit 回転の上限を定義したXYZ角度(単位はラジアン、回転順はXYZ)。 回転の最大値はπラジアンです。 |
rotation_lower_limits |
Lower Rotation Limit 回転の下限を定義したXYZ角度(単位はラジアン、回転順はXYZ)。 回転の最小値は-πラジアンです。 |
restangle |
Rest Angle これは、ジョイントの静止姿勢に事前回転(単位はラジアン、回転順はXYZ)を追加します。 回転制限は、この静止姿勢を基準に適用されます。 |
damp |
Joint Damping これは、ジョイントに適用される減衰を調整する乗数です。 0の値は完全な減衰、1の値は減衰なしを意味します。 減衰の強いジョイントは、自由に動くことができるジョイントに比べて可動範囲が狭くなります。 |
dampangle |
Damp Angle 回転の上限および下限からのXYZ角度オフセット(単位はラジアン、回転順はXYZ)。 この角度に達した時点で追加の減衰が適用されます。 例えば、X軸の回転の上限が60度で、X軸の減衰角度が20度の場合、X軸の角度が40度に達した後に、解に対して追加の減衰が適用されます。 これは、初期のジョイント減衰が効いた後に適用される追加の減衰です。 |
damprolloff |
Damp Angle Rolloff これは、減衰角度に達した後に適用される追加の減衰を調整する乗数です。 0の値は完全な減衰、1の値は減衰なしを意味します。 |
入力 ¶
in:
VariadicArg<Matrix4>
すべての入力ジョイントのワールド空間トランスフォーム。
rootdriver:
Matrix4
出力のルートジョイントを配置するワールド空間トランスフォーム。
twist:
Matrix4
ソルバの極ベクトル。 これは、 usetwist がTrueに設定されている場合にのみ使用されます。
goal:
Matrix4
IKソルバのワールド空間ゴールトランスフォーム。
stretch:
Float
ストレッチ係数。1の値は、ソルバを実行する前のゴールに到達するように、入力ジョイントの長さを均一に伸縮させます。 0の値は、入力長をそのまま維持します。0から1の間の値は、ストレッチ係数を線形補間します。
squash:
Float
スカッシュ係数。伸縮時にジョイントと直交する2つの軸のスケールを制御します。 0の値はスケールがそのままになり、1の値は伸縮時にスケールを圧縮し、負の値はスケールを広げます。 0から1の間の値が推奨されます。
blend:
Float
入力トランスフォームとブレンドさせる結果の割合を制御します。
dampen:
Float
IKの解の収束を遅くします。 0の値は減衰なし、1の値は最大減衰を意味します。 これは、 solver が0(デフォルトのソルバ)に設定されている場合にのみ使用されます。 IK with Constraints Solver ( solver =1)では、ジョイント毎の減衰が使用されます。
trackingthreshold:
Float
精度の閾値。 値が小さいほど解の精度が向上しますが、計算時間が長くなります。 値が大きいほど計算時間は短くなりますが、解の精度が悪くなります。 これは、 solver が0(デフォルトのソルバ)に設定されている場合にのみ使用されます。
twistoffset:
Float
後処理に適用する追加の捻じれ回転(度)。
usetwist:
Bool
Trueに設定されている場合、 twist マトリックスを使用して捻じりを適用します。
resiststraight:
Bool
Falseに設定されている場合、IKゴールがジョイントチェーンの長さ( trackingthreshold の許容値を含む)よりも遠くにある時は、IKチェーンはゴールの方向に完全に真っすぐになります。 Trueに設定されている場合、IKの解をもっと真っすぐにする試みは行なわれません。 解を素早く求めるために、 resiststraight はデフォルトでTrueに設定されています。 これは、 solver が0(デフォルトのソルバ)に設定されている場合にのみ使用されます。
keeproot:
Bool
Trueに設定されている場合、 rootdriver の元のトランスフォームを維持します。 Falseに設定されている場合、IKソルバによって返されるルートを使用します。
keepscales:
Bool
Trueに設定されている場合、出力ジョイントは入力ジョイントと同じスケールを維持します。 Falseに設定されている場合、出力ジョイントは単位スケールを使用します。
usegoalrot:
Bool
Trueに設定されている場合、最後の出力ジョイントはゴールと同じ回転になります。 Falseに設定されている場合、最後の出力ジョイントは最後の入力ジョイントと同じローカル回転になります。
solver:
Int
IKを解くのに使用するソルバ。 0はデフォルトの IK Solver 、1は IK with Constraints Solver です。 詳細は、ソルバを参照してください。
properties:
Dict
solver が1( IK with Constraints Solver )に設定されている場合、この辞書にはジョイント毎のIK設定値を格納します。
出力 ¶
out:
VariadicArg<Matrix4>
すべての出力ジョイントのワールド空間トランスフォーム。
| See also |