Maya Script Pymel ハードエッジの選択

以前Pythonでハードエッジの選択をするものを公開しました。
Pymelだとエッジのメソッドにハードエッジの検出をする機能があったので、試しに作ってみました。

import pymel.core as pm
pm.select([x for x in pm.ls(pm.selected()[0].node().e,fl=1) if x.isSmooth()==False],r=1)

ただし単一オブジェクトのみです。

 

そしてこちらが複数オブジェクト対応です。

import pymel.core as pm
pm.select([z for z in pm.ls([pm.ls(y.e,fl=1) for y in set(x.node() for x in pm.selected())])if z.isSmooth()==False],r=1)

相変わらず、ここまでしてリスト内包表現に拘る必要はないだろう。
と、思っているのですが、何となくできないと悔しいので、やってしまいます。

 

それはともかく、Pymelだと簡単に書くことができます。
しかし、cmdsと比べて一つ一つの頂点を検索してゆくのは遅いような気がします。
やり方が悪いのでしょうか?

コメントする

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックする

トラックバック用URL:

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です