« シーンにあるコンストさん全部一気に選択。 | トップページ

2018年7月17日 (火)

子供を複製すんな。

.





Mayaさまで、子供を持つオブジェクトを複製すると、子供ごと(階層ごと)複製されちゃいますよね?



XSI の場合は、ノード単体で選んでいればそのノードだけが複製され、ブランチ選択されている場合は階層ごと複製されるという、非常に合理的かつ分かり易いものでした。  Maya さまは有無を言わせず階層丸ごと複製してしまうように見える。



子供複製すんなやゴルァ
このオブジェクトだけ複製したいの。
子供は要らないの。
オプションつけろやゴルァ




と思っていたんですが、ツイッタで教えてもらいました。


duplicate コマンドpo オプション(parentOnly)を付けるだけで良かったんですって。 



MEL

duplicate -po
ドキュメント



マジで!

こんな小さいことが、大革命ですよ俺には!

わあ、これもっと早く知りたかったw

ありがとうございます K.Yさん。





さっそくランタイムコマンドにして、ホットキー割り当てました。



でもこれ、なんで標準機能として無いのだろう。 こんな短いスクリプトで済むからまあいいけど、でもスクリプトなんか書かなくても普通にできて欲しいことだと思うんだけどなあ。 Maya な皆さんは、不便じゃないんですか?   Mayaさまを馬鹿にしているとか、ユーザさんに嫌味言っているとかじゃなくて、ほんと正直、単純に、不思議です。 俺の方がおかしいのか。 子供ごと複製する場合の方が圧倒的に多いのか。 いや~ 子供ごと複製したい時と、子供は要らない時と、どっちも同じくらいあるでしょう~  



そんなことないですか。

そうですか。





.

|

« シーンにあるコンストさん全部一気に選択。 | トップページ

コメント

Mayaではshapeはtransformノードの子供扱いなので、parentOnly を使うとTransformノードだけ複製されてしまう。これはこれで便利な場合もありますが、メッシュやカーブなどを複製したい場合は使えない技です。

その場合はこういうコードが良いかな:
#Python
sel = cmds.ls(sl=1)
dup = cmds.duplicate(sel, renameChildren=1, returnRootsOnly=1)
cmds.delete(cmds.listRelatives(dup, allDescendents=1, type='transform'))

複製してからTransformタイプの子供を削除するコードです。
参考まで

投稿: myara | 2018年9月10日 (月) 19時42分

なるほど!!  マーティンありがとん!!

投稿: 潤樹 | 2018年9月11日 (火) 01時04分

あっ、子供がいるという前提で動くコードだった。ごめんなさい

children = cmds.listRelatives(dup, allDescendents=1, type='transform')
if len(children)>0:
cmds.delete(children)

というかんじな?

投稿: | 2018年9月11日 (火) 01時13分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217974/66951997

この記事へのトラックバック一覧です: 子供を複製すんな。:

« シーンにあるコンストさん全部一気に選択。 | トップページ