ジャンプ先: 概要. 戻り値. 関連. フラグ. Python 例.
ikHandle(
object
, [autoPriority=boolean], [connectEffector=boolean], [createCurve=boolean], [createRootAxis=boolean], [curve=name], [disableHandles=boolean], [enableHandles=boolean], [endEffector=string], [exists=string], [forceSolver=boolean], [freezeJoints=boolean], [jointList=boolean], [name=string], [numSpans=int], [parentCurve=boolean], [positionWeight=float], [priority=int], [rootOnCurve=boolean], [rootTwistMode=boolean], [setupForRPsolver=boolean], [simplifyCurve=boolean], [snapCurve=boolean], [snapHandleFlagToggle=boolean], [snapHandleToEffector=boolean], [solver=string], [startJoint=string], [sticky=string], [twistType=string], [weight=float])
注: オブジェクトの名前と引数を表す文字列は、カンマで区切る必要があります。これはシノプシスに示されていません。
ikHandle は、取り消し可能、照会可能、および編集可能です。
ikHandle コマンド は、Maya 内でハンドルを作成、編集、および照会するために使用します。編集と照会機能には、標準の編集(-e)と照会(-q)フラグが使用されます。
ジョイントが 2 つ選択されているときに、フラグ -startJoint と -endEffector が両方とも指定されていない場合、選択したジョイントからハンドルが作成されます。
単一のジョイントが選択されているときに、フラグ -startJoint と -endEffector が両方とも指定されていない場合、ハンドルがエンド エフェクタとして選択したジョイントを使用して作成され、スタート ジョイントがエンド エフェクタを含むジョイント チェーンの先頭となります。
フラグの既定値は次のとおりです。
- -name "ikHandle#"
- -priority 1
- -weight 1.0
- -positionWeight 1.0
- -solver "ikRPsolver"
- -forceSolver on
- -snapHandleFlagToggle on
- -sticky off
- -createCurve true
- -simplifyCurve true
- -rootOnCurve true
- -twistType linear
- -createRootAxis false
- -parentCurve true
- -snapCurve false
- -numSpans 1
- -rootTwistMode false
これらのアトリビュートは作成モードで指定できます。また、編集は編集モード(-e)、照会は照会モード(-q)で行います。
照会モードでは、戻り値のタイプは照会されたフラグに基づきます。
connectJoint, ikHandleDisplayScale, ikSolver, ikSystem, ikSystemInfo, insertJoint, joint, jointCluster, jointDisplayScale, jointLattice, mirrorJoint, removeJoint
autoPriority, connectEffector, createCurve, createRootAxis, curve, disableHandles, enableHandles, endEffector, exists, forceSolver, freezeJoints, jointList, name, numSpans, parentCurve, positionWeight, priority, rootOnCurve, rootTwistMode, setupForRPsolver, simplifyCurve, snapCurve, snapHandleFlagToggle, snapHandleToEffector, solver, startJoint, sticky, twistType, weight
ロング ネーム(ショート ネーム) |
引数タイプ |
プロパティ |
name(n)
|
string
|
|
|
startJoint(sj)
|
string
|
|
|
ハンドルのジョイント チェーンのスタート ジョイントを指定します。
|
|
endEffector(ee)
|
string
|
|
|
ハンドルのジョイント チェーンのエンド エフェクタを指定します。エンド エフェクタは、ジョイント、またはエンド エフェクタとともに指定できます。ジョイントが指定されている場合、エンド エフェクタがジョイントと同じ位置に作成され、この新しいエンド エフェクタが、エンド エフェクタとして使用されます。
|
|
priority(p)
|
int
|
|
|
ハンドルの優先順位を設定します。論理的には、優先順位の値が小さいハンドルは、優先順位の値が大きいハンドルよりも先に処理されます。つまり、優先順位の値が 1 のハンドルは、優先順位の値が 2 のハンドルよりも先に処理されます。ハンドルの優先順位の値は、ゼロより大きくなければなりません。
|
|
autoPriority(ap)
|
boolean
|
|
|
このハンドルの優先順位が自動的に割り当てられるように指定します。優先順位は、スケルタル チェーンのルートからハンドルの開始ジョイントまでの階層距離に基づいて、割り当てられます。
|
|
weight(w)
|
float
|
|
|
エラー計算でのハンドルのウェイトを指定します。ウェイトは、ハンドルのゴールがコンフリクトして同時に処理できない場合にのみ、適用されます。この場合、ハンドルのウェイトによってゴールからソリューションまでの「距離」に重みが付けられ、この値を最小化することにより、ソリューションが計算されます。ウェイトの値は、ゼロより大きくなければなりません。
|
|
positionWeight(pw)
|
float
|
|
|
ハンドルの位置/方向ウェイトを指定します。ゴールの位置とエンド エフェクタの位置の間の「距離」を計算するために使用されます。positionWeight の値が 1.0 の場合、距離はゴール位置とエンド エフェクタ位置の間隔だけが計算され、方向は無視されます。positionWeight の値が 0.0 の場合、距離は方向の距離として計算され、位置は無視されます。positionWeight の値が 0.5 の場合、距離は均等に重みが付けられますが、単位が異なるため、実際には計算できません。これは直線の単位と角度の単位を合計する方法がないためです。
|
|
solver(sol)
|
string
|
|
|
ソルバを指定します。ソルバの中にはプラグインとして実装されるものもあるため、使用可能なソルバの全リストはランタイムまでわかりません。現時点で使用可能なソルバは、ikRPsolver、ikSCsolver および ikSplineSolver だけです。
|
|
forceSolver(fs)
|
boolean
|
|
|
強制的に常にソルバが使用されるように設定します。これは animSticky とも呼ばれます。したがって、最初のキーを設定すると、ハンドルは sticky になります。
|
|
snapHandleFlagToggle(shf)
|
boolean
|
|
|
ユーザがエンド エフェクタを移動する場合に、ハンドルの位置をエンド エフェクタの位置にスナップするように指定します。このフラグをオンに設定すると、スケルトンのポーズや調整のためにフォワード キネマティクスを使用でき、インバース キネマティクスを使用してアニメートできます。
|
|
snapHandleToEffector(see)
|
boolean
|
|
|
すべてのハンドルを直ちに移動します。ハンドルの位置と方向は、エンド エフェクタの位置と方向に一致します。
|
|
sticky(s)
|
string
|
|
|
このハンドルが、「スティッキー」であることを指定します。有効な値は、「off」、「sticky」、「superSticky」です。スティッキー ハンドルは、スケルトンをインタラクティブに操作しているときに処理されます。キャラクタの足がスティッキーである場合、ユーザがキャラクタのルートを動かしても、足が常に同じ位置に固定されて動きません。スティッキーでない場合、足はルートとともに移動します。
|
|
connectEffector(ce)
|
boolean
|
|
|
既定では、このオプションは true に設定されています。これは、エンド エフェクタによる変換が、endJoint による変換と接続されていることを意味します。
|
|
jointList(jl)
|
boolean
|
|
|
ハンドルにより操作されるジョイントのリストを返します。
|
|
exists(ex)
|
string
|
|
|
setupForRPsolver(srp)
|
boolean
|
|
|
ikSolver が ikRPsolver の場合、新規 ikHandle のために RPRotateSetup をコールします。これは ikRPsolver に対してのみです。
|
|
enableHandles(eh)
|
boolean
|
|
|
特定のハンドルをフル ik に設定します(ikBlend アトリビュート = 1.0)。
|
|
disableHandles(dh)
|
boolean
|
|
|
特定のハンドルをフル fk に設定します(ikBlend アトリビュート = 0.0)。
|
|
curve(c)
|
name
|
|
|
ikSplineHandle で使用するカーブを指定します。ジョイントはこのカーブに位置合わせするように移動されます。-freezeJoints オプションを使用するときの必須フラグです。
|
|
createCurve(ccv)
|
boolean
|
|
|
ikSplineHandle に対してカーブを自動的に作成するかどうかを指定します。
|
|
freezeJoints(fj)
|
boolean
|
|
|
-curve オプションで指定したカーブを既存のジョイント チェーンに強制的に位置合わせさせます。false または指定なしの場合は、ジョイントは指定したカーブ上の位置に移動されます。
|
|
simplifyCurve(scv)
|
boolean
|
|
|
ikSplineHandle カーブを単純化するかどうかを指定します。
|
|
rootOnCurve(roc)
|
boolean
|
|
|
ルートを ikSplineHandle のカーブにロックするかどうかを指定します。
|
|
twistType(tws)
|
string
|
|
|
ikSplineHandle が使用する補間のタイプを指定します。補間オプションには、「linear」、「easeIn」、「easeOut」、および「easeInOut」があります。
|
|
createRootAxis(cra)
|
boolean
|
|
|
ikSplineHandle に作用されるジョイントの上に、ルート トランスフォームを自動的に作成する場合に指定します。このオプションは、モーション パスでルートが単独で反転するのを防止するために使用されます。
|
|
parentCurve(pcv)
|
boolean
|
|
|
ikSplineHandle により影響を受ける最初のジョイントの親が、自動的にカーブの親となるかどうかを指定します。
|
|
snapCurve(snc)
|
boolean
|
|
|
ikSplineHandle により影響を受ける最初のジョイントに、カーブが自動的にスナップされるかどうかを指定します。
|
|
numSpans(ns)
|
int
|
|
|
自動的に生成された ikSplineHandle のカーブにあるスパンの数を指定します。
|
|
rootTwistMode(rtm)
|
boolean
|
|
|
スタート ジョイントのツイストを許可するかどうかを指定します。許可しない場合、必要なツイストは残りのジョイントに分散されます。この設定は全種類のツイストに適用されます。
|
|
フラグはコマンドの作成モードで表示できます
|
フラグはコマンドの編集モードで表示できます
|
フラグはコマンドの照会モードで表示できます
|
フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。
|
import maya.cmds as cmds
# Will create a handle from Joint-1 to an end-effector at
# the location of Joint-5 with a priority of 2 and a
# weight of 0.5
#
cmds.ikHandle( sj='joint1', ee='joint5', p=2, w=.5 )
# Create a handle called leg from the start joint
# named hip to the end-effector named Ankle.
#
cmds.ikHandle( n='Leg', sj='Hip', ee='Ankle' )