我正在尝试创建一个三角剖分(不确定这是不是正确的词)脚本?基本上,我试图实现的是创建一个多边形的定位器选择(它必须是3个或更多定位器)
虽然我可以这样做,但我有这样的选择顺序问题。 在我的场景中,有4个定位器-loc1、loc2、loc3、loc4
如果我将select从loc1向上拖动到loc4,而不是像img01中那样创建多边形,而是按照img02中所示的方式创建,按定位器编号排序? 在我看来,它是根据定位器的创建顺序对选择进行排序,而这并不是我要做的
我错过什么了吗?在
我的代码:
import maya.cmds as cmds
pts = []
cmds.select( cmds.listRelatives( type = 'locator', fullPath = True, allDescendents = True ) )
cmds.select( cmds.listRelatives( parent = True, fullPath = True ) )
sel = cmds.ls ( selection = True, type = 'transform' )
if not sel:
cmds.warning( "Please select a locator / No locators in selection " )
for loc in sorted(sel):
coords = cmds.xform (loc, query=True, worldSpace=True, pivots=True)[0:3]
print coords
pts.append(coords)
cmds.polyCreateFacet(p = pts)
一个快速的解决方案是将选择顺序交给用户自行决定。为此,在
cmds.ls()
中使用orderedSelection
标志而不是仅仅使用selection
标志,并去掉for
循环定义中的sorted()
方法。这样就可以根据用户的选择顺序创建多边形。在如果你想更深入地研究三角剖分算法,那么看看@Basilevs引用的答案:Create non-intersecting polygon passing through all given points。在
相关问题 更多 >
编程相关推荐