Maya Script Python UV境界の選択

import maya.cmds as cmds
import maya.mel

def select_uv_border() :
	finalBorder = []
	meshList = cmds.ls( sl= 1, o= 1 )
	pLusE = []
	for mesh in meshList :
		uvs = cmds.polyUVSet( mesh, q=True, allUVSets=True )
		cmds.select( mesh + ".map[*]" , r= 1 )
		maya.mel.eval("polySelectBorderShell 1;")
		borders = cmds.polyListComponentConversion( te= 1 )
		borders = cmds.ls( borders , fl= 1 )
		for border in borders :
			edge = cmds.polyListComponentConversion( border , tuv= 1 )
			edge = cmds.ls( edge , fl= 1 )
			if len( edge ) > 2 :
				finalBorder.append( border )
		cmds.select( mesh + ".e[*]" , r= 1 )
		maya.mel.eval("polySelectBorderShell 1;")
		if cmds.ls( sl= 1, fl= 1 ) != [] :
			pLusE.extend( cmds.ls( sl= 1, fl= 1 ) )
	if pLusE != [] :
		cmds.select( pLusE ,add= 1 )
	cmds.select( finalBorder ,add= 1 )
	cmds.select( meshList , add= 1 )
select_uv_border()

modoでは標準で付いているのですが、MayaではUV選択でしかできないかと思います。
元々はmelで書かれていたものを見つけて使っていたのですが、Pythonに書きなおしてみました。
少し前に書いたものなので、改めて見てみると、さらなる改造ができそうだったので改造しました。

 

元々のmelでは、UV境界のみの選択で、ポリゴンの切れている部分は選択してくれませんでした。
別段それでも問題ないし、この取り方だとそうするのは難しいなぁ、と諦めていましたが、出来ました。
複数のオブジェクトを選択しても単一のオブジェクトを選択しても動作します。カレントUVのUVボーダーを選択してくれます。

コメントする

post date*

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

トラックバックする

トラックバック用URL:

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

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

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