ジョイント

ジョイントとは

ジョイントと、同時に作られるボーンはスケルトンにおいて関節と骨を表すものである。
スケルトンを作るためには、まずジョイントによって骨組を構成してゆく。
ジョイントは親のジョイントを指定することによって枝分かれさせることができる。

jointのオプション

-n string
jointの名前
-p float float float
jointの位置
-limitX float float
ローカル座標のX座標まわりの回転する角度を制限する
-limitY float float
ローカル座標のY座標まわりの回転する角度を制限する
-limitZ float float
ローカル座標のZ座標まわりの回転する角度を制限する

ジョイントコマンドの使用例1

最初の簡単な例として、3つのジョイントと2つのボーンで作られたジョイント・チェーンを作ってみる。

joint;
joint -p 5 0 0;
joint -p 5 5 0;

ジョイントコマンドの使用例2

次に人間の骨組を表すジョイントを作ってみよう。
首のジョイントを親にして両手を作り、胴体のジョイントを親にして両足を作る。

joint -p 0 10 0 -n headJoint;
joint -p 0 8 0 -n neckJoint;
joint -p 0 0 0 -n bodyJoint;
joint -p 5 6 0 -n leftArmJoint1 neckJoint;
joint -p 10 8 0 -n leftArmJoint2 leftArmJoint1;
joint -p -5 6 0 -n rightArmJoint1 neckJoint;
joint -p -10 8 0 -n rightArmJoint2 rightArmJoint1;
joint -p 3 -5 0 -n leftLegJoint1 bodyJoint;
joint -p 5 -10 0 -n leftLegJoint2 leftLegJoint1;
joint -p -3 -5 0 -n rightLegJoint1 bodyJoint;
joint -p -5 -10 0 -n rightLegJoint2 rightLegJoint1;

インバース・キネマティクス

上で作ったジョイント(骨組)をもとにしてポーズをつけたり、アニメーションをするためにはインバース・キネマティクスを使用する。
ikHandleというコマンドによって最初のジョイントと最期のジョイントをむすんだインバース・キネマティクスがつけることができる。

ikHandleのオプション

-n string
ikHandleの名前
-startJoint string
インバース・キネマティクスの始まりのジョイントを指定する
-endEffector string
インバース・キネマティクスの終りのジョイントを指定する

ikHandleコマンドの使用例1

3つのジョイントと2つのボーンで作られたジョイント・チェーンに ikHandleによってインバース・キネマティクスをつける。

joint;
joint -p 5 0 0;
joint -p 5 5 0;
ikHandle;

ikHandleコマンドの使用例2

人間の骨組を表すジョイントにインバース・キネマティクスをつける。

joint -p 0 10 0 -n headJoint;
joint -p 0 8 0 -n neckJoint;
joint -p 2 7 0 -n sholderJoint1 neckJoint;
joint -p -2 7 0 -n sholderJoint2 neckJoint;
joint -p 0 0 0 -n bodyJoint1 neckJoint;
joint -p 1 -1 0 -n bodyJoint2 bodyJoint1;
joint -p -1 -1 0 -n bodyJoint3 bodyJoint1;

joint -p 5 6 0 -n leftArmJoint1 sholderJoint1;
joint -p 10 8 0 -n leftArmJoint2 leftArmJoint1;
joint -p -5 6 0 -n rightArmJoint1 sholderJoint2;
joint -p -10 8 0 -n rightArmJoint2 rightArmJoint1;

joint -p 3 -5 0 -n leftLegJoint1 bodyJoint2;
joint -p 5 -10 0 -n leftLegJoint2 leftLegJoint1;
joint -p -3 -5 0 -n rightLegJoint1 bodyJoint3;
joint -p -5 -10 0 -n rightLegJoint2 rightLegJoint1;

ikHandle -startJoint sholderJoint1 -endEffector leftArmJoint2 ;
ikHandle -startJoint sholderJoint2 -endEffector rightArmJoint2 ;
ikHandle -startJoint bodyJoint2 -endEffector leftLegJoint2 ;
ikHandle -startJoint bodyJoint3 -endEffector rightLegJoint2 ;

練習

参考


Prev | Next
Home | Contents
abe@injapan.net