Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
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