MItSurfaceCV,如何获取索引



我正在尝试从NurbsSurface获取SurfaceCV索引。

当我使用 MItSurfaceCV 类时,我得到的索引太少了。

到目前为止,我的代码,选择了NurbsSphere:

sel = om.MSelectionList()
om.MGlobal.getActiveSelectionList(sel, 0)
dg = om.MDagPath()
sel.getDagPath(0, dg)
cvIter = om.MItSurfaceCV(dg)
inds = []
while not cvIter.isDone():
    num1 = om.intPtr()
    num2 = om.intPtr()
    cvIter.getIndex(num1, num2)
    inds.append([num1.value(), num2.value()])
    cvIter.next()

我的输出:

[0, 0]
[1, 0]
[2, 0]
[3, 0]
[4, 0]
[5, 0]
[6, 0]

但它应该是:

[0,0]
[0,1]
...
[0,7]
[1,0]
[1,1]
...
[1,7]
[2,0]
...
[6,7]

感谢任何调查它的人。

在选择 nurb 的 cvs 时,这似乎工作正常:

import maya.OpenMaya as om
sel = om.MSelectionList()
om.MGlobal.getActiveSelectionList(sel, 0)
dg = om.MDagPath()
mComponent = om.MObject()  # Create MObject to contain selected components.
sel.getDagPath(0, dg, mComponent)  # Construct dag path and components.
cvIter = om.MItSurfaceCV(dg, mComponent)  # Include components in constructor.
inds = []
def appendIndexes():
    num1 = om.intPtr()
    num2 = om.intPtr()
    cvIter.getIndex(num1, num2)
    inds.append([num1.value(), num2.value()])
while not cvIter.isDone():
    while not cvIter.isRowDone():
        num1 = om.intPtr()
        num2 = om.intPtr()
        cvIter.getIndex(num1, num2)
        inds.append([num1.value(), num2.value()])
        cvIter.next()
    cvIter.nextRow()
print len(inds)

但是由于某种原因,当您选择对象时,它会迭代额外的超出范围的索引。我不太确定为什么..

下面是使用它的示例。我不确定我还错过了什么,但希望这能推动你朝着正确的方向前进。

相关内容

  • 没有找到相关文章

最新更新