如何去除三角剖分的选择顺序

2024-05-26 17:42:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个三角剖分(不确定这是不是正确的词)脚本?基本上,我试图实现的是创建一个多边形的定位器选择(它必须是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)

img01img02


Tags: true排序顺序typecoords多边形selectpts
1条回答
网友
1楼 · 发布于 2024-05-26 17:42:46

一个快速的解决方案是将选择顺序交给用户自行决定。为此,在cmds.ls()中使用orderedSelection标志而不是仅仅使用selection标志,并去掉for循环定义中的sorted()方法。这样就可以根据用户的选择顺序创建多边形。在

如果你想更深入地研究三角剖分算法,那么看看@Basilevs引用的答案:Create non-intersecting polygon passing through all given points。在

相关问题 更多 >

    热门问题