myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

Maya | mAlignPivot 1.2

mel スクリプト更新です。

あれですねピボットを動かすやつ。


3ヶ月ほど前に書いたけど、公開する暇もなく、そのままハードディスクのどこかに忘れられていたスクリプトです。

今日はたまたまMayaでちょっとだけ作業していたら思い出したので、アップして公開します。

でも最近Mayaはあまり使ってないから、バグが残ってるかどうかは分かりません。
なにかあったら言ってください。

DOWNLOAD

Maya | mAlignPivot 1.2 from myara on Vimeo.

Maya | mNoLights

mNoLights

現在のビューアをテクスチャ表示にして、ノーライトとデフォルトライトの切り替えスクリプトです。

それだけですけど、結構便利だと思います。

DOWNLOAD

Topic:CG Design - Genre:Computer/Internet

Maya | mCombine 1.2

スクリプト更新

前回はオブジェクトの親にペアレントされていましたが、Mayaユーザーに突っ込まれました。
ポリゴンオブジェクトを他のポリゴンオブジェクトの子に普通しないですと。

そういえば、あまり見ないですね。俺のデータ以外w

今回修正しているデータにグループは結構使われているので、グループの子として再ペアレント化するようにしました。


更新内容:
------------------------------
コンバインされたオブジェクトはターゲット(最後に選択されたオブジェクト)のグループの子として再ペアレントかされます。

DOWNLOAD


追記 8月20日

動画

Maya | mCombine 1.2 from myara on Vimeo.

Topic:CG Design - Genre:Computer/Internet

Maya | mCombine 1.1

前回書いたmCombineの更新です。

Mayaでは子持ちのオブジェクトを選択して、コンバインすると子オブジェクトもマージされてしまいます。

Mayaユーザーはこれに慣れているでしょうか。便利だと思っているのでしょうか。
分かりません。

慣れてない俺には、ちょっと嫌だったのでスクリプトでなんとかやってみました。


mCombine 1.1

DOWNLOAD

選択されたオブジェクトはヒストリ残さずにコンバインされます。子オブジェクトはコンバインされません。
統合されたオブジェクトは、最後に選択されたオブジェクトの名前、ピボットの位置と、親子関係を取得します。
最後に子オブジェクトはコンバインされたオブジェクトの子にします。

今度は分かりやすい動画を用意しました:

Maya mCombine 1.1 from myara on Vimeo.



今回のmelの解説です。
melに慣れていないので、もっとスマートな方法があるかもしれませんが、一応:


// 選択取得
string $sel[] = `ls -sl`;
// 選択の数
int $size = `size $sel`;
// 最後に選択されたオブジェクト(数は0から始まるので、最後のオブジェクトは数-1です)
string $lastobj = $sel[$size-1];
// 最後のオブジェクトの親を取得
string $parents[] = `listRelatives -p $lastobj`;
// 最後のオブジェクトのピボット位置の取得
float $pos[] = `xform -q -ws -rp $lastobj`;

// 選択の数は2以上じゃないと何もしない。
// 最低2個がないとコンバインが出来ないですね。
if ($size > 1){
// 選択をループして
for ( $obj in $sel ){
// Mayaは子も含めて全部コンバインしてしまうので、一時的に子の親を変えて、
// 全部新しいグループにまとめます
string $children[] = `listRelatives -c -path -type "transform" $obj`;
if (size($children) > 0) {
if (objExists("childrenTemp")==0){
group -w -n childrenTemp $children;
}
else{
parent -a $children "childrenTemp";
}
}
}
// 選択されたオブジェクトをコンバイン
polyUnite -constructionHistory 0 $sel;

// 最後のオブジェクトの名前にリネーム
rename $lastobj;

// mel はオブジェクト指向言語ではないため、「$lastobj」はただのストリングです。
// これから 「$lastobj」 は最後に選択されたオブジェクトではなく、
// コンバインされたオブジェクトになります。

// 子オブジェクトがあった場合、コンバインされたオブジェクトの下に入れます。
if (objExists("childrenTemp")==1){
string $groupChildren[] = `listRelatives -c -path -type "transform" "childrenTemp"`;
if (size($groupChildren) > 0){
parent -a $groupChildren $lastobj;
}
delete "childrenTemp";
}

// ピボットを移動する。
move $pos[0] $pos[1] $pos[2] ($lastobj + ".scalePivot") ($lastobj + ".rotatePivot");

// 最後のオブジェクトの親の下に移動。
if (`size$parents[0]` > 0){
parent $lastobj $parents[0];
}
}

Topic:CG Design - Genre:Computer/Internet

Maya | mCombine

ちょっとだけですけど、久しぶりにMayaを使うことになりました。しばらくMayaでモデリングやUV展開などの作業になります。

SIの自作プラグイン「mCombine」に慣れていたから、デフォルトのCombineはとても不便に感じてしまいました。
(SIのデフォルトマージはもっと面倒くさいけど)

ということで、久しぶりにmelを書いてみました。

俺のmelスキルは結構初心者レベルだから、SIの「mCombine」と同じ機能にするのはちょっと無理です。ていうか mCombine も更新したかったなそういえば。またいつか。

ということで、地味だけど、ちょっと便利なスクリプトが出来ました。

mCombine 1.0 (Maya Mel)
DOWNLOAD

選択されたオブジェクトはヒストリ残さずにコンバインされます。
統合されたオブジェクトは、最後に選択されたオブジェクトの名前、ピボットの位置と、親子関係を取得します。




追記 ( 2012/08/03 )

mCombine の SI 版 みたいに子供オブジェクトは移動してくれません。そして、MayaはSIと違って、子供付きのオブジェクトをコンバインすると、その子もコンバインされてしまいます。
時間があったら、次の更新にこの部分を修正する予定です。


以上です。

Topic:CG Design - Genre:Computer/Internet

Previous page Next page