cameraEdit_meshEdit

来源:互联网 发布:淘宝网夏季唐装 编辑:程序博客网 时间:2024/06/15 09:18
import maya.OpenMaya as OpenMayaimport maya.cmds as cmdsdef 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()
0 0
原创粉丝点击