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"
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"