myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

Maya | mSetProject (自動プロジェクト設定)

シーンを開く度に、プロジェクト設定手動でやり直さないとテクスチャパスが絶対パスになっていしまい、
モデルの表示は真っ白(または真っ黒)になってしまいます。

プロジェクト設定し直し、テクスチャを更新しないといけません。
ま、テクスチャパスを手動で更新すると死にたくなるので、シーンを開きなおす。

という面倒な作業は毎回やらなければなりませぬ。


面倒くさい!!


自動にしてくれよ !


と文句言ってもAutodeskはやってくれないから自分で書いてみました。


mel とかは書いたことがあったんですけど、MayaでPythonを書くのは初めてなので、練習としてPythonでチャレンジしてみました。

そして、おまけに自動インストール/アンインストールも付いています!

インターネットでいくつかプロジェクト設定スクリプトは見つけて試してみましたが、上手くいかない場合も多くて、特徴なフォルダ構造だとエラーが出たりしていた為、自分のバージョンを作ってみました。

このスクリプトは単純に一個上のフォルダーに設定するのではなく、
「workspace.mel」探して設定するという仕組みになっています。
「workspace.mel」がない場合は、開いているファイルの2個上のフォルダをベースでプロジェクト設定画面を出します。


インストール方法:

C:\Users\ユーザー名\Documents\maya\scripts フォルダにコピーして、
Maya内のスクリプトエディター、 またはコマンドラインでは以下のコマンドを実行して下さい。

#Python

import mSetProject; mSetProject.mSetProject_Setup( True )




アンインストール方法:

#Python

import mSetProject; mSetProject.mSetProject_Setup( False )




mSetProject DOWNLOAD LINK



Maya ( 特に 2013以前のバージョン ) はあまりにも不便だから、頑張ってスクリプトを書きまくっています。

Mayaでコードを書くのもなかなか面倒ですけど・・・。
Pythonを使うと少しだけ楽になる。ま、面倒だけど mel ほど悪くはない。

Maya Python API 2.0 を試してみるべきなのかな。 Read more

Topic:CG Design - Genre:Computer/Internet

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

Previous page Next page