如果要使用API查询polySoftEdge节点,可以使用以形状节点为根的MItDependencyGraph迭代器对象,并将过滤器设置为kPolySoftEdge。
这是写在API的Python的味道打印选定的对象(S)的polySoftEdge片段:
import maya.OpenMaya as OpenMaya
selectionList = OpenMaya.MSelectionList()
OpenMaya.MGlobal.getActiveSelectionList(selectionList)
selectionIter = OpenMaya.MItSelectionList(selectionList)
dnNodeFn = OpenMaya.MFnDependencyNode()
dagNodeFn = OpenMaya.MFnDependencyNode()
dnGraphNodeFn = OpenMaya.MFnDependencyNode()
while not selectionIter.isDone():
dnObject = OpenMaya.MObject()
selectionIter.getDependNode(dnObject)
dnNodeFn.setObject(dnObject)
dagIter = OpenMaya.MItDag()
dagIter.reset(dnObject)
while not dagIter.isDone():
dagObject = OpenMaya.MObject()
dagObject = dagIter.currentItem()
if dagObject:
dagNodeFn.setObject(dagObject)
if dagObject.apiType() == OpenMaya.MFn.kMesh:
dnGraphIter = OpenMaya.MItDependencyGraph(dagObject,
OpenMaya.MFn.kPolySoftEdge,
OpenMaya.MItDependencyGraph.kDownstream)
while not dnGraphIter.isDone():
dnGraphNodeFn.setObject(dnGraphIter.currentItem())
print "shape: %s" % (dagNodeFn.name())
print "polySoftEdge-node-name: %s" % (dnGraphNodeFn.name())
print "value: %f" % (dnGraphNodeFn.findPlug("angle").asMAngle().asDegrees())
dnGraphIter.next()
dagIter.next()
selectionIter.next()
输出示例:
shape: pSphereShape1
polySoftEdge-node-name: polySoftEdge1
value: 180.000000
只能查询polySoftEdge如果这样的节点存在。否则maya不存储平滑,因为Maya将平滑定义为边缘属性(即多边形软边缘确实设置了边缘值,但这些值可能会在计算链中稍后改变)。所以maya可能会或可能不会使用平滑角度。 – joojaa 2014-10-04 18:57:42
使用OpenMaya调用API函数。 ['像OpenMaya一样导入maya.OpenMaya'](http://docs.autodesk.com/MAYAUL/2013/ENU/Maya-API-Documentation/index.html?url=files/GUID-856DDB26-93E7-493D-A1D4 -60C4CBA38B9C.htm,topicNumber = d30e4461) – 2014-10-06 15:52:03