我正在尝试从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]
感谢任何关注它的人。
答案 0 :(得分:0)
这在选择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)
但是由于某种原因,当您选择对象时,它会遍历多余的超出范围的索引。我不太清楚为什么。
Here's an example of it being used。我不确定我还缺少什么,但希望能向正确的方向推动你。