global proc string createCurveObject( vector $positions[] )
{
string $cmd ="curve -d 1";
vector $pos;
int $size = size( $positions );
for( $i=0; $i<$size; $i++ )
{
$pos = $positions[$i];
$cmd+=(" -p "+($pos.x)+" "+($pos.y)+" "+($pos.z));
}
for( $i=0; $i<$size; $i++ ) $cmd+=(" -k "+$i);
return eval( $cmd );
}
座標のリストを渡すと、カーブオブジェクトの名前が返ってきます。
ドキュメントフォルダの中にあるmaya\scriptsのなかに"createCurveObject.mel"ファイルを作成して上をコピぺすると呼び出せます。使い方としては、スクリプトエディタからであれば、
{
vector $pos[];
$pos[0]=<< 0,0,0>>;
$pos[1]=<< 10,0,0>>;
$pos[2]=<< 0,0,0>>;
$pos[3]=<<-10,0,0>>;
$pos[4]=<< 0,0,0>>;
rename `createCurveObject $pos` "testCrvObj";
}
こんな感じになります。
8行目、renameコマンドへ返ってきたカーブ名を渡すことで即座にリネームできるのがミソです。
直線のカーブオブジェクトしか作れないというのが欠点ですかね・・・。
多くのリガーが使用しているであろうrigging101.comのrig101 Wire Controllersは、カーブの座標がベタ書きなので可読性が悪く、なんとなくよろしくないですね。
0 件のコメント:
コメントを投稿