myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

Maya : Locator -> Group

こないだ、Mayaで提出する仕事をやっていましたけど、Softimageの方が得意のでSoftimageからMayaにデータを持っていったり持ってきたりしながら作業していました。

面倒くさいけど、Mayaでモデリングするよりマシです。
まだ完璧じゃないけど、Crosswalkは結構良いツールになってきたから、大体データは持っていけます。
Rigはちょっと難しいけど。

ところで、MayaのグループをXSIに持っていくと、Nullになってしまいす。

MayaのグループはXSIのModelのようなものですね。
でもXSIのModelをMayaに持っていくと、 Locator (XSIのNullと同じ)になってしまいます。

XSIでは「Transform Group」という機能があって、単純にNullを親にする機能です。
これもMayaに持っていくと、もちろんNull(MayaでいうLocator)になります。

無論、NullになってしまったグループをMayaに戻してもLocatorになります。

XSIのGroupは全然違う物で、Mayaに持っていくとGroupが無視されて消えてしまいます。

今までは別に気にしていなかったけど、今回はクライアントにグループを使ってくださいと突っ込まれてしまった。
理由は分からんけど、そういう指示なので仕方ない。
これから毎回グループにして、名前を直すのはちょっと面倒なので、このLocatorをGroupにしてくれるmelを作ってみました:

使い方:子持ちのLocatorを選んで、実行。
注意:Locatorであることを確認なんかしません。

Mel

global proc mLocator2Group()
{
string $selected[] = `ls -sl`;
string $current = "";
string $object = "";

if ($selected[0] != "")
{
for ($current in $selected)
{
// Test current selection for transform objects
string $children[] = `listRelatives -c -pa -typ transform $current`;

if ($children[0] != "")
{
$parent = `listRelatives -p $current`;
if (`size$parent` > 0)
{
string $grp = `group -n ($current + "_temp") -p $parent $children`;
delete ($current);
rename $grp ($current);
}
else
{
rename $current ($current +"_temp");
group -n $current -world $children;
delete ($current + "_temp");
}
}
else
{
error "No objects under this selection";
}
}
}

else

{
error "Nothing selected.";

};
}
mLocator2Group;

メモ:

XSI と 違って、Mayaでは Scene Root がないから、Rootにあるオブジェクトの親を取得しようとすると、何も出ません。なので、sizeを使って、その親が空(0)でしたら world にします。worldというオプションはXSIのRootと似たような意味です。因みにsizeはjscriptのCountと似たようなものです。

Comments

Post a comment


Only the blog author may view the comment.

Trackbacks

Trackbacks URL
http://myara.blog.fc2.com/tb.php/28-e64a3e2e
Use trackback on this entry.