MEL スクリプトで鎖にボーンを仕込む

だいぶ前に書いた id:usaka:20080622 に、コメントで質問が来ていたので、今更ながら Maya で鎖にボーンを仕込んだときの、お手軽 MEL スクリプトを書いてみます。

まず、ボーンを仕込みたい鎖の最初の輪に、"1"で終わる名前をつける。これを「特殊な複製」で必要な数だけ、一直線にコピーする。とりあえず例では X 軸方向ってことで。(鎖も面倒なので、球にして mySphere1 にしてあります)

このときの、コピーする間隔をたとえば 3、コピーした数を 10 とすると、mySphere1〜mySphere11 ができます。

次にジョイントチェーンを作成。1〜11の間に、10個必要なので、for ループで 1〜10 でループさせて作成します。球のコピーで間隔を3にしたので、ジョイントも x 座標 ($i*3) の位置に作成。鎖の場合は中心じゃないので、($i*3+1.3) のように適当に調整する必要があったはず。

joint -p 0 0 0 -name myJoint1;
for ($i = 1; $i <=10; $i++) {
  joint -p ($i*3) 0 0 -name ("myJoint"+($i+1));
  joint -e -zso -oj xyz -sao yup ("myJoint"+$i);
};

次にこれを、最初に作った mySphere1〜11を、作成されたジョイントにペアレント化します。ペアレント化したいペアに同じ番号がついているので、これまた for ループ一発。

for ($i = 1; $i < 11; $i++) {
  parent ("mySphere"+$i) ("myJoint"+$i);
}

これでできあがり。後は、手作業でいじるなりスプラインIKハンドルをつけるなりすれば、グニャグニャと鎖の形ををいじれます。

よく考えたら、複製→ジョイントチェーン→ペアレント化って、3つに分けなくても、一つにまとめられるなぁ。