import maya.OpenMaya as OpenMaya
import maya.cmds as cmds
def getCameraLimit(cameraName,distance = 10000,offset = 0):
sel = OpenMaya.MSelectionList()
sel.add(cameraName)
camera_obj = OpenMaya.MObject()
sel.getDependNode(0,camera_obj)
camera = OpenMaya.MFnCamera(camera_obj)
result = [OpenMaya.MScriptUtil(),
OpenMaya.MScriptUtil(),
OpenMaya.MScriptUtil(),
OpenMaya.MScriptUtil()]
result_double = [result[0].asDoublePtr(),
result[1].asDoublePtr(),
result[2].asDoublePtr(),
result[3].asDoublePtr()]
camera.getFilmFrustum(distance,
result_double[0],
result_double[1],
result_double[2],
result_double[3],False)
width = result[0].getDouble(result_double[0])*0.5
#widthOffset = width* result[2].getDouble(result_double[2])
widthOffset = 0
high = width*1.0/cmds.getAttr('defaultResolution.w')*cmds.getAttr('defaultResolution.h')
#highOffset = high* result[3].getDouble(result_double[3])
highOffset = 0
points = OpenMaya.MPointArray()
points.append(camera.eyePoint())
points.append(OpenMaya.MPoint(-width-widthOffset-offset,high-highOffset+offset,-distance))
points.append(OpenMaya.MPoint(-width-widthOffset-offset,-high-highOffset-offset,-distance))
points.append(OpenMaya.MPoint(width-widthOffset+offset,-high-highOffset-offset,-distance))
points.append(OpenMaya.MPoint(width-widthOffset+offset,high-highOffset+offset,-distance))
newMesh = OpenMaya.MFnMesh()
polygonCounts = OpenMaya.MIntArray()
for i in [3,3,3,3,4]:
polygonCounts.append(i)
polygonConnects = OpenMaya.MIntArray()
for i in [0,1,2,0,2,3,0,3,4,0,4,1,1,2,3,4]:
polygonConnects.append(i)
newMesh.create(5,5,points,polygonCounts,polygonConnects)
transform = newMesh.parent(0)
OpenMaya.MFnDagNode(camera.parent(0)).addChild(transform)
return OpenMaya.MFnDagNode(transform).fullPathName()
def getBoundingBoxMesh(objName):
#sel = OpenMaya.MSelectionList()
#sel.add(objName)
#obj = OpenMaya.MObject()
#sel.getDependNode(0,obj)
#dagNode = OpenMaya.MFnDagNode(obj)
#bbx = dagNode.boundingBox()
bbx = cmds.xform(objName,q = True,ws = True,boundingBox = True)
points = OpenMaya.MPointArray()
#min = [bbx.min().x,bbx.min().y,bbx.min().z]
#max = [bbx.max().x,bbx.max().y,bbx.max().z]
min = [bbx[0],bbx[1],bbx[2]]
max = [bbx[3],bbx[4],bbx[5]]
points.append(OpenMaya.MPoint(min[0],min[1],max[2]))
points.append(OpenMaya.MPoint(max[0],min[1],max[2]))
points.append(OpenMaya.MPoint(min[0],max[1],max[2]))
points.append(OpenMaya.MPoint(max[0],max[1],max[2]))
points.append(OpenMaya.MPoint(min[0],max[1],min[2]))
points.append(OpenMaya.MPoint(max[0],max[1],min[2]))
points.append(OpenMaya.MPoint(min[0],min[1],min[2]))
points.append(OpenMaya.MPoint(max[0],min[1],min[2]))
newMesh = OpenMaya.MFnMesh()
polygonCounts = OpenMaya.MIntArray()
for i in [4,4,4,4,4,4]:
polygonCounts.append(i)
polygonConnects = OpenMaya.MIntArray()
for i in [0,1,3,2,2,3,5,4,6,4,5,7,6,7,1,0,6,0,2,4,1,7,5,3]:
polygonConnects.append(i)
newMesh.create(8,6,points,polygonCounts,polygonConnects)
return OpenMaya.MFnDagNode(newMesh.parent(0)).fullPathName()
cameraEdit_meshEdit
最新推荐文章于 2023-04-14 12:12:35 发布