スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
今までシンメトリックなものをモデリングする時には
半分を削除して、残った半分だけが表示されている状態でモデリングしていました。

このブログでもご覧頂いた も勿論そうです。

最初からずっとこの方法で作業していたので
自分の中で何の疑問もなく続けていたのですが。

先日作業中に友人に『変わっている』と指摘されて初めて気づきました。

曰く、Duplicate Special で Geometry Type を Instance にして
シェイプノードを共有したままもう一方側に表示しておく事が一般的らしいです。

確かに私も Maya を始めたばかりの頃にこの方法は知ったのですが、
ほとんど使用した事がありませんでした。

どうしてその方法をとらずにいたのか、
よくよく考えてみたら分かりました。

そのコピーされたオブジェクトは表示されているだけでいいのに
誤って選択してしまったり等して何かと鬱通しかったようです。

誤って選択してしまうのが嫌となれば当然
Display Type を Template か Reference にすればいいわけなのですが。
当時はこの機能を知らなかったようです。

したがって、これからは私もこの方法をとろうと思います。

しかし、オプションは基本的に『Duplicate input graph』
(場合により Duplicate input connections)に固定しておきたいので
あまり Duplicate Special は使用したくありません。

更には、Override Enabled を on にして Display Type を 変更するのは
結構面倒くさいです。

という事なので簡単な MEL を書いてみました。


instanceCopyAndTemplateMode;

global proc instanceCopyAndTemplateMode()
{
string $selList[] = `ls -sl`;
if($selList[0] == "") error "Select some nodes before executing.";
string $copyList[] = `instanceCopy $selList 0`;
changeDisplayType $copyList 1;

print "\"Instance Copy And Template\" has successfully done.";
}

global proc string[] instanceCopy(string $objList[], int $axis)
{
string $copyList[] = `instance $objList`;

for($i = 0; $i < `size $objList`; $i++)
{
$copyList[$i] = `rename $copyList[$i] ($objList[$i] + "_copy")`;

switch ($axis){
case 0: scale -r -1 1 1 $copyList[$i]; break;
case 1: scale -r 1 -1 1 $copyList[$i]; break;
case 2: scale -r 1 1 -1 $copyList[$i]; break;
}
}
return $copyList;
}

global proc changeDisplayType(string $objList[], int $type)
{
for($obj in $objList)
{
setAttr -k 1 ($obj + ".overrideEnabled");
setAttr -k 1 ($obj + ".overrideDisplayType");

setAttr ($obj + ".overrideEnabled") 1;
setAttr ($obj + ".overrideDisplayType") $type;
}
}



とてもシンプルな MEL。
MEL を覚えたばかりの人が練習に作れるようなくらいのものですね。

私は機能毎にいくつものプロシージャに分けたりなど
プログラミングとしての『見易さ』を重視した書き方が苦手だったので
今回はかなりそれを意識して書いてみました。

これを実行すればコピーされたオブジェクトが自動で Template 表示になるので
表示は見易いし、誤って選択したりなども無いし。
バッチリですね。

0618.png
コメント
指摘した友人その1ですが、instanceはシェイプを共有しているのでどちらを編集してももう片方に反映されます。
なので非表示にせず、少しでもバランスが崩れたらどちらでもいいので編集・・
といったワークフローが個人的には良さげだと思います。

それがいやで編集不可にしたい場合は、個別にobject displayをいじるよりも
instance専用の参照不可レイヤを作るほうが楽だと思います。
2010.06.19 13:51 | URL | ソウ | 編集
>>ソウ さん
コメントありがとうございます!
恐らくモデリング周りは特に個人差があるので
どのワークフローが操作し易いかは人それぞれでしょうね。
小生は個人的に記事通りの方法が操作し易いと思っているのですが。。
貴方の貴重なご意見も是非とも参考にさせて頂きます。
2010.06.20 23:07 | URL | らい | 編集
管理者のみ閲覧可能にする
Profile
HN らい

都内某社テクニカルディレクター
都内某専門学校講師
都内某企業講師
元中国某社S3Dスーパーバイザー
Contact
(ENGLISH OK. 可以用中文。)
Categories
Archives
RSS Link
QR Code