オブジェクトから、頂点に変換。頂点から、フェイスに変換など
ツールを作るときに、ノード・コンポーネントの変換をしたい場合
「polyListComponentConversion」を使いますが
色々種類が多いので、関数化しました。
Melで用意された関数「ConvertSelectionToVertices」等では、
選択状況が変わってしまい、「ls」で取得しなおす必要がある為
あまりオススメしません。
import maya.cmds as cmds
# 選択をフェイスに変換
def toFace( list ):
converted = cmds.polyListComponentConversion( list, fv=1, fe=1, fuv=1, fvf=1, tf=1 )
return converted == [] and None or toFlatten( converted )
# 含むフェイスに変換
def toContainedFace( list ):
converted = cmds.polyListComponentConversion( list, fv=1, fe=1, fuv=1, fvf=1, tf=1, internal=1 )
return converted == [] and None or toFlatten( converted )
# エッジに変換
def toEdge( list ):
converted = cmds.polyListComponentConversion( list, fv=1, ff=1, fuv=1, fvf=1, te=1 )
return converted == [] and None or toFlatten( converted )
# 含むエッジに変換
def toContainedEdge( list ):
converted = cmds.polyListComponentConversion( list, fv=1, ff=1, fuv=1, fvf=1, te=1, internal=1 )
return converted == [] and None or toFlatten( converted )
# 頂点に変換
def toVertex( list ):
converted = cmds.polyListComponentConversion( list, ff=1, fe=1, fuv=1, fvf=1, tv=1 )
return converted == [] and None or toFlatten( converted )
# 頂点フェイスに変換
def toVertexFace( list ):
converted = cmds.polyListComponentConversion( list, fv=1, fe=1, ff=1, fuv=1, tvf=1 )
return converted == [] and None or toFlatten( converted )
# UVに変換
def toUv( list ):
converted = cmds.polyListComponentConversion( list, fv=1, fe=1, ff=1, fvf=1, tuv=1 )
return converted == [] and None or toFlatten( converted )
# シェルに変換
def toShell( list ):
currentSelects = cmds.ls( sl=True )
cmds.select( component )
cmds.polySelectConstraint( t=0 )
cmds.polySelectConstraint( sh=1, bo=0, m=2 )
converted = cmds.ls( sl=True, fl=True )
if currentSelects != []:
cmds.select( currentSelects )
return converted == [] and None or toFlatten( converted )
# コンポーネントリストの展開
def toFlatten( list ):
return cmds.ls( list, fl=True )