Ejemplo n.º 1
0
    def saveJson(self, savePath):

        comment = self.args.getValue("comment")
        jsonSavePath = savePath + ".json"
        jsonobj = JsonObject(jsonSavePath)
        jsonobj.comment = comment
        jsonobj.write()
Ejemplo n.º 2
0
 def __readJson(self):
     filename = self.__filename
     scenename = self.__scenename
     defaultVersion = self.__versionFromPrefix
     jsonPath = self.__getJsonPath()
     readJson = JsonObject(jsonPath)
     version = readJson.get("version", defaultVersion)
     rendername = readJson.get("rendername", scenename)
Ejemplo n.º 3
0
  def executeMaya(self):

    maya = self.host.apis['maya'] 
    cmds = maya.cmds

    # sceneFile = cmds.file(q=True, sn=True)
    project = cmds.workspace( q=True, sn=True )
    poseDir = os.path.join(project, "Cache", "Poses")

    fileDialog = cmds.fileDialog2(fileFilter="Json (*.json)", fileMode=1, dir=poseDir, dialogStyle=2)
    if not fileDialog == None:
      jsonPath = fileDialog[0]
      jo = JsonObject(jsonPath)

      # Get selection:
      sel = cmds.ls(selection=True)
      selList = []
      for s in sel:
        sType = cmds.ls(s, showType=True)[1]
        if sType == "objectSet":
          selList += cmds.sets(s, q=True)
        else:
          selList.append(s)
      selList = list(set(selList))

      for each in selList:
        if ":" in each:
          name = each.split(":")[1]
        else:
          name = each
        data = jo.get(name=name)
        if not data == None:
          axis = ["X", "Y", "Z"]
          for i in range(3):
            try:
              cmds.setAttr(each + ".translate" + axis[i], data.translate[i])
            except:
              print "# WARNING: could not set translate%s for %s." %(axis[i], each)
            try:
              cmds.setAttr(each + ".rotate" + axis[i], data.rotate[i])
            except:
              print "# WARNING: could not set rotate%s for %s." %(axis[i], each)
            try:
              cmds.setAttr(each + ".scale" + axis[i], data.scale[i])
            except:
              print "# WARNING: could not set scale%s for %s." %(axis[i], each)
        else:
          print "# WARNING: No transform data found for %s." %(each)
Ejemplo n.º 4
0
 def __readJson(self):
     filename = self.__filename
     scenename = self.__scenename
     # scenename = scenename.rsplit("_v", 1)[0]
     # scenename = scenename.rsplit("_V", 1)[0]
     while scenename[-1].isdigit() or scenename[-1] == "_":
         scenename = scenename[:-1]
     if scenename[-2:] == "_v" or scenename[-2:] == "_V":
         scenename = scenename[:-2]
     defaultVersion = self.__versionFromPrefix
     jsonPath = self.__getJsonPath()
     readJson = JsonObject(jsonPath)
     version = readJson.get("version", defaultVersion)
     rendername = readJson.get("rendername", scenename)
     self.args.setValue('version', version)
     self.args.setValue("rendername", rendername)
Ejemplo n.º 5
0
    def executeMaya(self):

        db = self.host.apis['db']
        maya = self.host.apis['maya']
        cmds = maya.cmds

        # sceneFile = cmds.file(q=True, sn=True)
        project = cmds.workspace(q=True, sn=True)
        poseDir = os.path.join(project, "Cache", "Poses")
        if not os.path.exists(poseDir):
            os.makedirs(poseDir)

        fileDialog = cmds.fileDialog2(fileFilter="Json (*.json)",
                                      fileMode=0,
                                      dir=poseDir,
                                      dialogStyle=2)
        if not fileDialog == None:
            jsonPath = fileDialog[0]
            jo = JsonObject(jsonPath)

            # Get selection:
            sel = cmds.ls(selection=True)
            selList = []
            for s in sel:
                sType = cmds.ls(s, showType=True)[1]
                if sType == "objectSet":
                    selList += cmds.sets(s, q=True)
                else:
                    selList.append(s)
            selList = list(set(selList))

            if os.path.exists(jsonPath):
                jo.clear()

            for each in selList:
                if ":" in each:
                    name = each.split(":")[1]  # Strip Namespaces
                else:
                    name = each
                jo.__setattr__(name=name, value=self.getTransforms(each))

            jo.write()
Ejemplo n.º 6
0
    def executeMaya(self):

        maya = self.host.apis['maya']
        cmds = maya.cmds
        mel = maya.mel

        # ----
        # Get data from UI
        # ----
        projectname = self.args.getValue('projectname')
        renderpath = self.args.getValue('renderpath')
        renderfolder = self.args.getValue('renderfolder')
        rendername = self.args.getValue('rendername')
        version = self.args.getValue('version')
        version = version.rjust(2, '0')
        # camsubfolder = self.args.getValue("camsubfolder")
        camsubfolderBefore = self.args.getValue("camsubfolderBefore")
        camsubfolderAfter = self.args.getValue("camsubfolderAfter")
        changeCamera = self.args.getValue("changeCamera")
        camera = self.args.getValue("camera")
        changeRange = self.args.getValue("changeRange")
        startFrame = self.args.getValue('in')
        endFrame = self.args.getValue('out')
        changePadding = self.args.getValue("changePadding")
        padding = self.args.getValue('padding')
        changeResolution = self.args.getValue("changeResolution")
        resX = self.args.getValue("resX")
        resY = self.args.getValue("resY")
        skipExisting = self.args.getValue("skipExisting")
        # ----

        # ----
        # Set Render Output Settings
        # ----
        if not self.__isRedshift:
            cmds.setAttr('defaultRenderGlobals.ren', 'redshift', type='string')

        renderfile = rendername + "_<RenderLayer>_V" + str(version)
        if camsubfolderBefore:
            renderpath = os.path.join(renderpath, "<Camera>")
        renderpath = os.path.join(renderpath, "V" + version)
        if camsubfolderAfter:
            renderpath = os.path.join(renderpath, "<Camera>")
        renderPrefix = os.path.join(renderpath, renderfile)
        cmds.setAttr("defaultRenderGlobals.imageFilePrefix",
                     renderPrefix,
                     type="string")
        cmds.setAttr("defaultRenderGlobals.outFormatControl", 0)
        cmds.setAttr("redshiftOptions.imageFormat", 1)  # 1 = exr
        cmds.setAttr("defaultRenderGlobals.animation", True)
        cmds.setAttr("defaultRenderGlobals.useMayaFileName", False)
        cmds.setAttr("defaultRenderGlobals.putFrameBeforeExt", True)
        cmds.setAttr("defaultRenderGlobals.periodInExt", True)
        cmds.setAttr("redshiftOptions.skipExistingFrames", skipExisting)

        if changeRange:
            cmds.setAttr("defaultRenderGlobals.startFrame", int(startFrame))
            cmds.setAttr("defaultRenderGlobals.endFrame", int(endFrame))

        if changePadding:
            cmds.setAttr("defaultRenderGlobals.extensionPadding", int(padding))

        if changeResolution:
            lockAspect = cmds.getAttr("defaultResolution.aspectLock")
            cmds.setAttr("defaultResolution.aspectLock", False)
            cmds.setAttr("defaultResolution.width", int(resX))
            cmds.setAttr("defaultResolution.height", int(resY))
            if not mel.eval('exists checkAspectLockHeight2;'):
                # We need a few commands that help with keeping the pixel aspect ratio at 1 and only adjusting the device aspect ratio (maya default is the other way around)
                # Those commands do not exist until they are forced to load. Loading the defaultResolution node into the Attribute Editor can do that.
                mel.eval('updateAE "defaultResolution"')
                # Loading the defaultResolution node into the Attribute Editor takes some time. We need it to finish before continuing.
                # The command 'evalDeferred' does exactly this. It waits until all previous processes are done, then continues executing the next lines
                cmds.evalDeferred("pass")
            mel.eval('checkAspectLockHeight2 "defaultResolution"')
            mel.eval('checkAspectLockWidth2 "defaultResolution"')
            mel.eval('redshiftUpdatePixelAspectRatio')
            mel.eval('redshiftUpdateResolution')
            cmds.setAttr("defaultResolution.aspectLock", lockAspect)
            cmds.evalDeferred(
                "cmds.setAttr(\"defaultResolution.pixelAspect\", 1)")

        # if delRenderGlobalsWindow:
        #   cmds.deleteUI("unifiedRenderGlobalsWindow")

        # Set renderable Camera
        if changeCamera:
            cmds.setAttr("frontShape.renderable", 0)
            cmds.setAttr("sideShape.renderable", 0)
            cmds.setAttr("topShape.renderable", 0)

            cameraDict = self.__cameraComboDict
            cameraShape = cameraDict[camera]
            for cam in cameraDict.keys():
                shape = cameraDict[cam]
                if shape != cameraShape:
                    cmds.setAttr(shape + ".renderable", 0)
                else:
                    cmds.setAttr(shape + ".renderable", 1)
        # ----

        # save render output info to json
        jsonPath = self.__getJsonPath()
        saveJson = JsonObject(jsonPath)
        saveJson.version = version
        saveJson.rendername = rendername
        saveJson.write()
Ejemplo n.º 7
0
    def fillVersionList(self):

        fileextMaya = ["ma", "mb"]
        db = self.host.apis['db']
        project = self.args.getValue("project")
        bottle = self.args.getValue("bottle")
        product = self.args.getValue("product")
        fileslist = db.query("leveltwo_file",
                             sql="SELECT * FROM leveltwo_file")

        # ----
        # Creating a dictionary with key=str(version + comment + user) and value=filepath
        # ----
        self.__versionlistCombo = {}
        vlc = self.__versionlistCombo
        for k in fileslist:
            if k.levelone.name == bottle.name and k.leveltwo.name == product.name and k.fileext in fileextMaya:
                if k.name != k.levelone.name + "_" + k.leveltwo.name:
                    fileName = k.name + "  -  "
                else:
                    fileName = ""
                opiLocation = k.location
                pathToOpen = os.path.join(self.__ProjectsRoot, opiLocation)
                jsonPath = pathToOpen + ".json"
                if os.path.isfile(jsonPath):
                    readJson = JsonObject(jsonPath)
                    try:
                        cText = readJson.comment.text
                        if cText:
                            cText = "  -  " + cText
                    except:
                        cText = ""
                    try:
                        cUser = readJson.comment.user
                        if cUser:
                            cUser = "******" + cUser
                    except:
                        cUser = ""
                    try:
                        cTime = readJson.comment.time
                    except:
                        cTime = ""
                    if cText or cUser or cTime:
                        fileComment = cUser + cText
                    else:
                        fileComment = ""
                #     if readJson.comment.text == "":
                #       fileComment = "  -  " + readJson.comment.user
                #     else:
                #       fileComment = "  -  " + readJson.comment.user + " - " + readJson.comment.text
                #   except:
                #     fileComment = ""
                # else:
                #   fileComment = ""
                vlc[fileName + "v" + str(k.version) +
                    fileComment] = [pathToOpen, cTime]
        # ----

        if len(vlc.keys()) > 0:
            sortedVlcKeys = sorted(vlc.keys(), reverse=True)
            self.args.get("versionlist")._setCombo(sortedVlcKeys,
                                                   sortedVlcKeys[0])
            self.args.get("filedate").value = vlc[sortedVlcKeys[0]][1]
        else:
            self.args.get("versionlist")._setCombo([], None)