myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

Maya | Pivot移動 mel

先週に仕事を早く終らせて、ちょっと暇だった時に背景担当の人に、「myaraさん、melが出来ますか?」と聞かれまして、「出来るとは言えないけど、一応簡単なmelは書いたことがあるから、単純な問題だったら分かるかも」と答えて一応相談に乗りました。

ピボットの位置を底辺に移動したいけど一々移動するのは面倒だからそれをmelでやりたい。でもログからコピペー程度のスクリプトしか書いたことがないからやり方が分からないと。

俺も分かんないけど、移動コマンドとバウンディングボックス情報の取得方法さえ分かればなんとか行けそうな気がする。Melの文法はJScriptと似ているし。

既にありそうなスクリプトだけど、mel練習的に作ってみることに、Challenge Accepted !
(分かる人には分かる。How I Met Your Motherっていうドラマを見てる人は多分居ないけど、まぁいいや)

ということで、マニュアルとグーグルで調べたら、バウンディングボックスの取得が分かりました:

float $bBox[] = `exactWorldBoundingBox $obj`;


これで $bBox というアレイが出来ます。

bBox[0],bBox[1]bBox[3]は XYZ の最小数値
そして、
bBox[4],bBox[5]bBox[6] は XYZ の最大数値

ピボット移動はログからヒントを貰って

move $x $y $z ($obj + ".scalePivot") ($obj +".rotatePivot") ;


で移動します。

$x $y $z はただの変数です。XYZの新しい位置をこっちで指定します。

$obj は選択されているオブジェクトの変数。
どうやらMayaでは scalePivot と rotatPivot があります。しかしMayaのGUIコマンドを使うと両方を同時に移動されるので、それでいきます。
melで別々でも移動が出来ますが、変なことになりそうだな。

よし、バウンディングボックスと移動方法が分かりました。
これさえあれば、あとはこっちのもんですね。

全オブジェクトを同時にも対応する為にfor in ループを入れて、

あとは AlignCVというmelのGUIをパクって、

完成!

DOWNLOAD

mAlignPivotMaya.gif


これはSIにも欲しいかもな。もうあるのかな?

それじゃ、また。



追記
2012/8/7
mAlign Pivot 1.1 更新
http://myara.blog.fc2.com/blog-entry-154.html