Python 如何去除三角剖分的选择顺序
我正在尝试创建一个三角剖分(不确定这个词是否正确)脚本?基本上,我试图实现的是从定位器的选择中创建一个多边形(它必须是3个或更多定位器) 虽然我可以这样做,但我有这个选择顺序的问题。 在我的场景中,有4个定位器——loc1、loc2、loc3、loc4 如果我将select从loc1向上拖动到loc4,而不是像img01中那样创建多边形,它是按照定位器编号排序在img02中创建的? 在我看来,它是根据定位器的创建顺序对选择进行排序,这不是我想要做的 我错过什么了吗 我的代码:Python 如何去除三角剖分的选择顺序,python,selection,maya,Python,Selection,Maya,我正在尝试创建一个三角剖分(不确定这个词是否正确)脚本?基本上,我试图实现的是从定位器的选择中创建一个多边形(它必须是3个或更多定位器) 虽然我可以这样做,但我有这个选择顺序的问题。 在我的场景中,有4个定位器——loc1、loc2、loc3、loc4 如果我将select从loc1向上拖动到loc4,而不是像img01中那样创建多边形,它是按照定位器编号排序在img02中创建的? 在我看来,它是根据定位器的创建顺序对选择进行排序,这不是我想要做的 我错过什么了吗 我的代码: import ma
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参考答案:。很抱歉,我尝试了你提到的方法,它无助于解决现有问题。它仍然给我的'交叉'多边形,如我的第二张照片。不过,感谢您提供的链接。目前,做这样的算法是我力所不及的:)使用orderedSelection的技术只是让用户按照正确的顺序选择定位器。除非用户随机或仅通过任意拖动选择定位器,否则它不会失败。