Since | 17.0 |
int agentsolvefbik(<geometry>geometry, int outgeo, int prim, int targets[], matrix targetxforms[], int xformgroup, int iters)
int agentsolvefbik(<geometry>geometry, int outgeo, int prim, int targets[], matrix targetxforms[], int xformgroup, int iters, float tolerance, int pinroot)
int agentsolvefbik(<geometry>geometry, int outgeo, int prim, int targets[], matrix targetxforms[], int xformgroup, int iters, float tolerance, int pinroot, float targetweights[], int targetpriorities[], int targetdepths[])
int agentsolvefbik(<geometry>geometry, int outgeo, int prim, int targets[], matrix targetxforms[], int xformgroup, int iters, float tolerance, int pinroot, float targetweights[], int targetpriorities[], int targetdepths[], int targettypes[], matrix targetoffsets[])
int agentsolvefbik(<geometry>geometry, int outgeo, int prim, int targets[], matrix targetxforms[], int xformgroup, int iters, float tolerance, int pinroot, float targetweights[], int targetpriorities[], int targetdepths[], string goalxformattrib, string constrainedxformattrib, string jointlimitsattrib)
int agentsolvefbik(<geometry>geometry, int outgeo, int prim, int targets[], matrix targetxforms[], int xformgroup, int iters, float tolerance, int pinroot, float targetweights[], int targetpriorities[], int targetdepths[], int targettypes[], matrix targetoffsets[], string goalxformattrib, string constrainedxformattrib, string jointlimitsattrib)
prim
が範囲外またはエージェントプリミティブでない場合、または、targetsとtargetxformsが同じ長さでない場合は、-1
を返します。
Agent Configure Joints SOPで生成されるような“agent_jointgoalxforms”、“agent_jointconstrainedxforms”、“agent_jointlimits”のアトリビュートがエージェント上に存在すれば、それらのアトリビュートは、計算中に使用するジョイント制限として解釈されます。
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
outgeo
書き出し先のジオメトリのハンドル。geoself()
を使用することで、現行ジオメトリのハンドルを取得することができます。
prim
エージェントプリミティブのプリミティブ番号。
targets
エージェント内のエンドエフェクターのトランスフォームインデックスのリスト。
targetxforms
エンドエフェクターのターゲットワールドトランスフォームのリスト。このリストの順番はtargets
と同じです。
xformgroup
トランスフォームグループのインデックス。ここには、IKソルバで使用するジョイントを指定します(トランスフォームグループに入っていないすべてのトランスフォームは無視されます)。 agentfindtransformgroupを使用すれば、名前でトランスフォームグループを検索することができます。 -1の値を指定すると、エージェント内のすべてのトランスフォームが含まれます。 エージェントのボーン構造に該当するトランスフォームのみを含んだトランスフォームグループを使用することを推奨します。
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
と同じです。
このトランスフォームは、エンドエフェクターのジョイントトランスフォームと組み合わさって、ソルバがターゲットトランスフォームに整列させようとするトランスフォームを生成します。
これを使用することで、ジョイントからのオフセット位置(例えば、ボーンの端)にターゲットを配置することができます。
goalxformattrib
“agent_jointgoalxforms”の代わりに使用する別アトリビュートを指定するためのオプションパラメータ。
constraintedxformattrib
“agent_jointconstrainedxforms”の代わりに使用する別アトリビュートを指定するためのオプションパラメータ。
jointlimitsattrib
“agent_jointlimits”の代わりに使用する別アトリビュートを指定するためのオプションパラメータ。
See also | |
crowds | |
solve | |
transform |