示例#1
0
    def writeObjVis(self, statVis, dynVis):
        dynVisObject, staticVisObj, ast2BakeAttrs, attrTmpLocs = [], [], [], [] 
        assetRefs = self.mayaShot.refNodes
        for ref in assetRefs:
            ast = MayaAsset(ref)
            astGeoBake, astGeoInvis = ast.getVisGeo()
            dynVisObject.extend(astGeoBake)
            staticVisObj.extend(astGeoInvis)

        stF = mc.playbackOptions(q=1,ast=1)
        edF = mc.playbackOptions(q=1,aet=1)
        for obj in dynVisObject:
            if mc.objExists((obj + "_TMPLOC")):
                mc.delete((obj + "_TMPLOC"))
            mc.spaceLocator(name = (obj + "_TMPLOC"))
            attrTmpLocs.append((obj + "_TMPLOC"))
            mc.connectAttr((obj + ".v"), (obj + "_TMPLOC.v"), f = True)
            ast2BakeAttrs.append((obj + "_TMPLOC.v"))
        ast2BakeAttrs = list(set(ast2BakeAttrs))
        if ast2BakeAttrs:
            mc.bakeResults(ast2BakeAttrs,at=['v'],sm=1,t=(stF,edF),sr=1,dic=1,pok=0,sac=0,ral=0,bol=0)
            for bkAst in ast2BakeAttrs:
                conns = mc.listConnections(bkAst, d=0, s=1)
                if mc.nodeType(conns[0]) == "animCurveTU":
                    if utils.chkStaticCurve(conns[0]):
                        objName = bkAst.split("_TMPLOC.v")[0]
                        dynVisObject.pop(dynVisObject.index(objName))
                        if not mc.getAttr("%s.v"%objName):
                            staticVisObj.append(objName)
                    else:
                        mc.keyTangent(bkAst, itt = 'step', ott = 'step')
        for statV in staticVisObj:
            objDotName = statV.replace(":", ".") if ":" in statV else statV
            ET.SubElement(statVis, objDotName)
        for dynV in dynVisObject:
            utils.writeAnimXML("%s_TMPLOC"%dynV, dynVis, ["visibility"], dynV)
        for tmpLoc in attrTmpLocs:
            try:
                mc.delete(tmpLoc)
            except:
                pass

        self.msg += "Visibility baked for all geometry\n"
示例#2
0
 def commonData(self, xmlRoot):
     user = ET.SubElement(xmlRoot,'user')
     user.text = os.environ['USERNAME']
     now = datetime.datetime.now()
     date = ET.SubElement(xmlRoot,'date')
     date.text = '%s-%s-%s' % (now.day,now.month,now.year)
     time = ET.SubElement(xmlRoot,'time')
     time.text = '%s:%s:%s' % (now.hour,now.minute,now.second)
     stF = mc.playbackOptions(q=1,ast=1)
     startFrame = ET.SubElement(xmlRoot,'startFrame')
     startFrame.text = '%d' % stF
     edF = mc.playbackOptions(q=1,aet=1)
     endFrame = ET.SubElement(xmlRoot,'endFrame')
     endFrame.text = '%d' % edF
     comments = ET.SubElement(xmlRoot,'comments')
     comments.text = self.comments
     statVis = ET.SubElement(xmlRoot,'staticInvisData')
     dynVis = ET.SubElement(xmlRoot,'dynamicVisData')
     self.writeObjVis(statVis, dynVis)
     self.msg += "Visibility Info exported\n"
     camera = self.mayaShot.getSceneCamera()
     cameraTmp = mc.rename(camera, "%s_TMP"%camera)
     cameraElement = ET.SubElement(xmlRoot,'camera', attrib = {'cameraName':camera})
     attrs = ['translateX', 'translateY', 'translateZ', 'rotateX', 'rotateY', 'rotateZ', 'scaleX', 'scaleY', 'scaleZ']
     if mc.objExists(camera):
         mc.delete(camera)
     camLoc = mc.spaceLocator(name = camera)
     mc.parentConstraint(cameraTmp, camLoc,mo = 0)
     mc.scaleConstraint(cameraTmp, camLoc, mo = 0)
     mc.bakeResults(camLoc,at=attrs,sm=1,t=(stF,edF),sr=1,dic=1,pok=0,sac=0,ral=0,bol=0)
     utils.writeAnimXML(camera, cameraElement, attrs)
     mc.delete(camLoc)
     mc.rename(cameraTmp, camera)
     camShapes = mc.listRelatives(camera, s = True, c = True)
     for cam in camShapes:
         if "Shape" in cam:
             camShape = cam
             break
     if camShape:
         utils.writeAnimXML(camShape, cameraElement)
     self.msg += "Camera exported\n\n"