matrix [] solvefbik(matrix xforms[], int parents[], int targets[], matrix targetxforms[], int iters)
matrix [] solvefbik(matrix xforms[], int parents[], int targets[], matrix targetxforms[], int iters, float tolerance, int pinroot)
matrix [] solvefbik(matrix xforms[], int parents[], int targets[], matrix targetxforms[], int iters, float tolerance, int pinroot, float targetweights[], int targetpriorities[], int targetdepths[])
matrix [] solvefbik(matrix xforms[], int parents[], int targets[], matrix targetxforms[], int iters, float tolerance, int pinroot, float targetweights[], int targetpriorities[], int targetdepths[], int targettypes[], matrix targetoffsets[])
matrix [] solvefbik(matrix xforms[], int parents[], int targets[], matrix targetxforms[], int iters, float tolerance, int pinroot, float targetweights[], int targetpriorities[], int targetdepths[], matrix goalxforms[], vector4 constrainedxforms[], vector jointlimits[])
matrix [] solvefbik(matrix xforms[], int parents[], int targets[], matrix targetxforms[], int iters, float tolerance, int pinroot, float targetweights[], int targetpriorities[], int targetdepths[], int targettypes[], matrix targetoffsets[], matrix goalxforms[], vector4 constrainedxforms[], vector jointlimits[])
以下の場合は空っぽの配列を返します:
-
xforms
がparents
と同じサイズでない。 -
targets
がtargetxforms
と同じサイズでない。 -
goalxforms
、constrainedxforms
、jointlimits
の配列が空っぽでないものの、xforms
と同じサイズでない。
goalxforms
、constrainedxforms
、jointlimits
のパラメータは、Agent Configure Joints SOPで生成される形式のものを指定してください。
xforms
計算されるリグ内のすべてのトランスフォームのワールドトランスフォーム。
parents
各トランスフォームの親トランスフォームインデックス。-1の値はルートを示します。
targets
スケルトン内のエンドエフェクターのトランスフォームインデックスのリスト。
targetxforms
エンドエフェクターのターゲットワールドトランスフォームのリスト。このリストの順番はtargets
と同じです。
iters
実行する反復回数の最大数。
tolerance
パラメータを使用すれば、ソルバを早く終了させることができます。
tolerance
収束をチェックする時に使用する許容値。デフォルトは1e-5です。
位置がこの許容値内に収束すれば、アルゴリズムが停止します。
0にすると、ソルバは常にiters
の反復回数をそのまま実行します。
pinroot
ルートを移動させずに開始位置にピン留めするかどうか。 これは、例えば、エージェントのスケルトンのサブセットを計算する時に役立ちます。 デフォルトは0(オフ)です。
targetweights
各エンドエフェクターのウェイトを含んだリスト。このリストの順番はtargets
と同じです。
複数の子ジョイントを持ったジョイントに関しては、正規化されたウェイトが位置の決定に使用されます。
つまり、他のターゲットよりもウェイトの高いターゲットの方に到達するようになります。
デフォルトのウェイトは1.0です。
targetpriorities
各エンドエフェクターの優先度レベルを含んだリスト。このリストの順番はtargets
と同じです。
低い優先度レベルのターゲットほど、高い優先度レベルのターゲットへの影響が弱くなります。
例えば、優先度レベルを使用することで、足のターゲットを常に最優先させると同時に上半身のターゲットの相対ウェイトを制御することができます。
デフォルトの優先度は0です(つまり、すべてのターゲットの優先度は同じです)。
targetdepths
各エンドエフェクターに対して、ターゲットトランスフォームに到達できるように調整可能なチェーン内のターゲットよりも上流のジョイント数を指定します。 マイナスの値を使用することで、ターゲットより上流のすべてのジョイントが影響を受けるように指定することができます。 デフォルトの深度は-1です。
targettypes
各エンドエフェクターのターゲットタイプを含んだリスト。このリストの順番はtargets
と同じです。
このターゲットタイプを使用することで、エンドエフェクターがターゲットトランスフォーム(targetxforms
)の位置または向きに合わせる方法を指定することができます。
0
の値は、位置のみのターゲットを意味し、1
の値は、向きのみのターゲットを意味し、2
(デフォルト)の値は位置と向きの両方に合わせます。
targetoffsets
各エンドエフェクターの追加ローカル空間トランスフォームを含んだリスト。このリストの順番はtargets
と同じです。
このトランスフォームは、エンドエフェクターのジョイントトランスフォームと組み合わさって、ソルバがターゲットトランスフォームに整列させようとするトランスフォームを生成します。
これを使用することで、ジョイントからのオフセット位置(例えば、ボーンの端)にターゲットを配置することができます。
goalxforms
Agent Configure Jointsで生成されるような一部のジョイント拘束。
空っぽの配列は、ジョイント拘束がないことを示します。
constrainedxforms
Agent Configure Jointsで生成されるような一部のジョイント拘束。
空っぽの配列は、ジョイント拘束がないことを示します。
jointlimits
Agent Configure Jointsで生成されるような一部のジョイント拘束。
空っぽの配列は、ジョイント拘束がないことを示します。
See also | |
crowds | |
solve | |
transform |