Hi,
Here is a quick and dirty sample script that should get you started.
Note: you need to use OpenMaya API v2.0 to access this class. ("import maya.api...")
import maya.cmds as cmds
import maya.api.OpenMaya as om
import maya.api.OpenMayaRender as omr
def printNumberOfTriangles(path, base):
indexDesc = omr.MIndexBufferDescriptor(omr.MIndexBufferDescriptor.kTriangle, "indices", omr.MGeometry.kTriangles)
positionDesc = omr.MVertexBufferDescriptor("POSITION", omr.MGeometry.kPosition, omr.MGeometry.kFloat, 3)
requirements = omr.MGeometryRequirements()
requirements.addVertexRequirement(positionDesc)
requirements.addIndexingRequirement(indexDesc)
meshType = 'Display'
options = omr.MGeometryExtractor.kPolyGeom_Normal # Display mesh
if base:
meshType = 'Base'
options = omr.MGeometryExtractor.kPolyGeom_BaseMesh # Base mesh
extractor = omr.MGeometryExtractor(requirements, path, options)
print('%s mesh has %d triangles' % (meshType, extractor.primitiveCount(indexDesc)))
cmds.file(new=True, force=True)
cmds.polyCube()
cmds.select('pCubeShape1')
cmds.setAttr('pCubeShape1.displaySmoothMesh', 2)
sList = om.MGlobal.getActiveSelectionList()
path = sList.getDagPath(0)
printNumberOfTriangles(path, True) # Base mesh
printNumberOfTriangles(path, False) # Display mesh
# Prints:
# Base mesh has 12 triangles
# Display mesh has 192 triangles
Brent McPherson
Principle Engineer