我正在尝试从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)
但是由于某种原因,当您选择对象时,它会迭代额外的超出范围的索引。我不太确定为什么..
下面是使用它的示例。我不确定我还错过了什么,但希望这能推动你朝着正确的方向前进。