キャラクター

characterコマンド

ジョイント、キネマティクス、スキンなどで作られた人物・動物・ロボットその他はキャラクターとして、ひとつのまとまったオブジェクトにしておくとアトリビュートの値を使ったアニメーションなどに便利である。

characterのオプション

-name string
キャラクターの名前
-query character
キャラクターのメンバーのリストを返す
-addElement character item
キャラクターにitemを追加する
-remove character item
キャラクターからitemを削除する

コマンドの使用例1

骨だけの人間のキャラクターを作る。
人間の形のジョイント・キネマティクスを作っておいてキャラクターの要素としたいものだけをセレクトしておくと、 最期のcharacterコマンドによってcharacter1というキャラクターが作られる。

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 ;

select headJoint neckJoint "ikHandle*";
character;

コマンドの使用例2

上で作ったキャラクター(character1)の腕をアニメーションさせてみる。
キーフレームアニメーションをする場合、キャラクターのアトリビュートはikHandle1のtranslateXの値なら、ikHandle1_translateXのように表される。

$add = 0.1;
$frame = 62;
for($r = 0.0, $i = 0; $i < $frame; $r += $add, $i++)
{
	currentTime $i;
	$x = 2.0 * sin($r) + 7.0;
	setAttr character1.ikHandle1_translateX $x;
	setKeyframe;
}

練習

参考


Prev
Home | Contents
abe@injapan.net