def mayaToHoudiniExportGroup(channelpath, node, translate, rotate): out = [] ROOT_HOU_PATH = '/obj' NODNAM = getNameFrMobject(node) out.append('\n') out.append('opcd /obj\n') out.append(("opadd -n geo " + cleanMayaLongName(NODNAM)) + '\n') KLDAG = kl_dag_info() children = KLDAG.getParentingInfo(node, 'children') parent = KLDAG.getParentingInfo(node, 'parents') if parent: parentname = getNameFrMobject(parent[0]) if cleanMayaLongName(getNameFrMobject(node)): if cleanMayaLongName(parentname): out.append("opwire " + cleanMayaLongName(parentname) + " " + cleanMayaLongName(getNameFrMobject(node)) + '\n') out.append("opparm " + cleanMayaLongName(NODNAM) + " t (" + str(translate[0]) + " " + str(translate[1]) + " " + str(translate[2]) + ')\n') out.append("opparm " + cleanMayaLongName(NODNAM) + " r (" + str(rotate[0]) + " " + str(rotate[1]) + " " + str(rotate[2]) + ')\n') #wire up animation ANIMUTIL = OpenMayaAnim.MAnimUtil() #dagNode if ANIMUTIL.isAnimated(node): out.append("#import animation \n") out.append(("opcd " + cleanMayaLongName(NODNAM) + '\n')) #USEDIR = meshpath[lenDIR-2) out.append("chblockbegin\n") out.append("chadd " + (ROOT_HOU_PATH + '/' + cleanMayaLongName(NODNAM)) + " tx ty tz rx ry rz \n") out.append(("chkey -t 0 -v 0 -m 0 -A 0 -F '$F' " + (ROOT_HOU_PATH + '/' + cleanMayaLongName(NODNAM)) + "\n")) out.append("chblockend\n") #out.append( ("opset -S on "+cleanMayaLongName(NODNAM)+ "\n" ) ) #make the channel #read it in out.append('chread tx ty tz rx ry rz -f 0 13 ' + (getnameprefix(channelpath) + cleanMayaLongName(NODNAM) + '.chan ') + '\n') return out
def getAnimation(self, curveArray): animUtil = oma.MAnimUtil() animationList = [] for path in self.transformDagPaths: animatedPlugArray = om.MPlugArray() animUtil.findAnimatedPlugs(path, animatedPlugArray, False) for plug in animatedPlugArray: print plug.name() animUtil.findAnimation(plug, curveArray) animationList.append(curveArray) return animationList
def FindAnimPlug(prof): mg = om.MGlobal() sel = om.MSelectionList() mg.getActiveSelectionList(sel) print(' %i selected' % sel.length()) if sel.isEmpty(): return False amu = oam.MAnimUtil() plgs = om.MPlugArray() amu.findAnimatedPlugs(sel, plgs) if plgs.length() < 1: print(' no animated plug') for i in range(0, plgs.length()): if plgs[i].partialName(False) == prof.plugName: print(' %s is animated' % plgs[i].partialName(False)) prof.animPlug = om.MPlug(plgs[i]) if prof.animPlug.isNull(): prof.animPlug = om.MPlug(plgs[0]) return True
def writer(self, fileObject, optionString, accessMode): # try: fullName = fileObject.fullName() tempp = fullName.split('/') SHORTNAME = tempp[1] size = len(tempp) OUTPUTPATHNAME = '' count = 0 for temppp in tempp: if count <= (size - 2): OUTPUTPATHNAME = OUTPUTPATHNAME + (temppp + '/') count = count + 1 BUFFERLINE = '' MESHESTOEXPORT = [] CHANNELSTOEXPORT = [] CAMERASTOEXPORT = [] CURVESTOEXPORT = [] #NURBSTOEXPORT = [] ################# DAGIT = OpenMaya.MItDag(OpenMaya.MItDag.kDepthFirst) KLDAGGER = kl_dag_info() KLDAGGER.reset() while not DAGIT.isDone(): MFNDAGNODE = OpenMaya.MFnDagNode( DAGIT.currentItem()) #MFNDAGNODE MOBJECT = DAGIT.currentItem() DAGPATH = MFNDAGNODE.fullPathName() #ONLY ITERATE ROOT NODES, THEN RUN MY OWN ITERATOR ON EACH ROOTNODE if DAGIT.depth() == 1: if checkOmittedNodes(DAGPATH): KLDAGGER.getParentingInfo(MOBJECT, 'childrecursemobj') DAGIT.next() ################# #SORT THE TYPES OF NODES TO EXPORT for CHMOBJ in KLDAGGER.TREEMOBJ: MFNDAGNODE = OpenMaya.MFnDagNode(CHMOBJ) if CHMOBJ.hasFn(OpenMaya.MFn.kTransform): MANIM = OpenMayaAnim.MAnimUtil() #dagNode if MANIM.isAnimated(CHMOBJ): CHANNELSTOEXPORT.append( [CHMOBJ, ('/' + SHORTNAME + '/')]) #store mobject and name #if not MANIM.isAnimated(CHMOBJ): # OutputTransform(CHMOBJ) #EXPORT MESHES if CHMOBJ.hasFn(OpenMaya.MFn.kMesh): if NAMEMODE == 'short': MESHESTOEXPORT.append( [CHMOBJ, ('/' + SHORTNAME + '/')]) #store mobject and name if NAMEMODE == 'long': MESHESTOEXPORT.append([ CHMOBJ, ((OUTPUTPATHNAME + cleanMayaLongName(DAGPATH))) ]) #store mobject and name #export the geometry,animation and scenegraph ####### for mesh in MESHESTOEXPORT: OutputMesh(mesh[0], mesh[1]) for chan in CHANNELSTOEXPORT: OutputAnimationData(chan[0], chan[1], STARTFRAME, ENDFRAME) #hard coded times at the moment #EXPORT SCENEGRAPH HSCRIPTTEXT = [] for MOBJNODE in KLDAGGER.TREEMOBJ: MFNDAGNODE = OpenMaya.MFnDagNode(MOBJNODE) if MOBJNODE.hasFn(OpenMaya.MFn.kTransform): nodname = MFNDAGNODE.fullPathName() fixname = cleanMayaLongName(nodname) TRANSLATION = OutputTransform(MOBJNODE, 't') ROTATION = OutputTransform(MOBJNODE, 'r') #determine if mesh exists DAGWOOD = kl_dag_info() checkmesh = DAGWOOD.getParentingInfo(MOBJNODE, 'children') meshexists = 0 for tmpnode in checkmesh: if tmpnode.hasFn(OpenMaya.MFn.kMesh) or tmpnode.hasFn( OpenMaya.MFn.kCamera): meshexists = meshexists + 1 meshname = getNameFrMobject(tmpnode) fooo = meshname.split('|') nameend = fooo[len(fooo) - 1] if meshexists > 0: BUFFER = mayaToHoudiniExportGroupMesh( (OUTPUTPATHNAME + nameend + '.geo'), MOBJNODE, TRANSLATION, ROTATION) if meshexists == 0: BUFFER = mayaToHoudiniExportGroup( OUTPUTPATHNAME, MOBJNODE, TRANSLATION, ROTATION) for line in BUFFER: HSCRIPTTEXT.append(line) #WRITE TO FILE print 'WRITING FILE ' + fullName scriptfile = open(fullName, "w") for templine in HSCRIPTTEXT: scriptfile.write(templine) scriptfile.close() except: sys.stderr.write("Failed to write file information\n") raise
def mayaToHoudiniExportGroupMesh(meshpath, node, translate, rotate): out = [] NODNAM = getNameFrMobject(node) ROOT_HOU_PATH = '/obj' out.append('\n') out.append('opcd ' + ROOT_HOU_PATH + '\n') out.append(("opadd -n geo " + cleanMayaLongName(NODNAM)) + '\n') KLDAG = kl_dag_info() children = KLDAG.getParentingInfo(node, 'children') if children: for tmpnod in children: if tmpnod.hasFn(OpenMaya.MFn.kMesh): tmpdagfn = OpenMaya.MFnDagNode(tmpnod) out.append(("opcd " + cleanMayaLongName(NODNAM) + "\n")) out.append("opadd file " + '\n') out.append(("opparm file1 file " + meshpath + '\n')) out.append(("opcd ..\n")) if tmpnod.hasFn(OpenMaya.MFn.kCamera): print 'HAS CAMERA DUDE' tmpdagfn = OpenMaya.MFnDagNode(tmpnod) out.append("opadd -n cam " + (cleanMayaLongName(NODNAM) + 'cam') + '\n') parent = KLDAG.getParentingInfo(node, 'parents') if parent: if cleanMayaLongName(NODNAM): out.append('opwire ' + (cleanMayaLongName(NODNAM) + ' ' + (cleanMayaLongName(NODNAM) + 'cam') + '\n')) out.append("opcd " + (cleanMayaLongName(NODNAM) + 'cam') + "\n") out.append("opadd file cammodel\n") out.append("opparm cammodel file ( defcam.bgeo )\n") out.append("opcd ..\n") parent = KLDAG.getParentingInfo(node, 'parents') if parent: parentname = getNameFrMobject(parent[0]) if cleanMayaLongName(parentname): out.append("opwire " + cleanMayaLongName(parentname) + " " + cleanMayaLongName(getNameFrMobject(node)) + '\n') out.append("opparm " + cleanMayaLongName(NODNAM) + " t (" + str(translate[0]) + " " + str(translate[1]) + " " + str(translate[2]) + ')\n') out.append("opparm " + cleanMayaLongName(NODNAM) + " r (" + str(rotate[0]) + " " + str(rotate[1]) + " " + str(rotate[2]) + ')\n') #wire up animation ANIMUTIL = OpenMayaAnim.MAnimUtil() #dagNode if ANIMUTIL.isAnimated(node): out.append("#import animation \n") out.append(("opcd " + cleanMayaLongName(NODNAM) + '\n')) #USEDIR = meshpath[lenDIR-2) out.append("chblockbegin\n") out.append("chadd " + (ROOT_HOU_PATH + '/' + cleanMayaLongName(NODNAM)) + " tx ty tz rx ry rz \n") out.append(("chkey -t 0 -v 0 -m 0 -A 0 -F '$F' " + (ROOT_HOU_PATH + '/' + cleanMayaLongName(NODNAM)) + "\n")) out.append("chblockend\n") #out.append( ("opset -S on "+cleanMayaLongName(NODNAM)+ "\n" ) ) #make the channel #read it in out.append('chread tx ty tz rx ry rz -f 0 13 ' + (getnameprefix(meshpath) + cleanMayaLongName(NODNAM) + '.chan ') + '\n') return out