def addGizmosFromAsset(asst): gizmos = False a = ueAssetUtils.getElements(ueSpec.Spec(asst[0], asst[1], asst[2])) if "giz" in a: for n in a["giz"]: for p in a["giz"][n]: spec = ueSpec.Spec(asst[0], asst[1], asst[2], "giz", n, p) versions = ueAssetUtils.getVersions(spec) version = versions[len(versions) - 1] menu = "%s:%s:%s/%s/%s" % (spec.proj, spec.grp, spec.asst, n, p) # Add a 'ueGizVers' knob to hold the version of the gizmo # we're bringing in. This can be used for version control later. # When you add a custom knob, Nuke makes the User tab active, # so a hack around that is to add the node with the prefs panel # disabled, add the custom knobs, then show the prefs. command = str('n = nuke.createNode("' + version["file_name"] + '", \ "name ' + p + '", inpanel=False); \ n.addKnob(nuke.Int_Knob("ueGizmoVers", "gizmo version")); \ n.knob("ueGizmoVers").setValue(' + str(len(versions)) + '); \ n.showControlPanel()') nuke.toolbar("Nodes").addCommand("ueTools/" + menu, command) nuke.menu("Nuke").addCommand("ueTools/gizmos/" + menu, command) gizmos = True if gizmos: nuke.toolbar("Nodes").addCommand("ueTools/-", "")
def listAssets(): for asset in sorted(ueAssetUtils.getAssetsList(settings["spec"])): settings["spec"].asst = asset asset = ueAssetUtils.getAsset(settings["spec"]) printLine = asset["name"] if "paths" in settings: printLine += " -> %s" % asset["path"] print printLine
def load(self): nodes = [] for sequence in self.parent.edit["sequences"]: for shot in self.parent.edit[sequence]["shots"]: editShot = self.parent.edit[sequence][shot] storyboard = [] animatic = [] spec = ueSpec.Spec(os.getenv("PROJ"), sequence, shot, "sb", "storyboard", "master") storyboard = ueAssetUtils.getVersions(spec) if storyboard: path = os.path.join(storyboard[-1]["path"], storyboard[-1]["file_name"] + ".jpg") spec.eltype = "animatic" spec.elclass = "an" animatic = ueAssetUtils.getVersions(spec) if animatic: path = os.path.join( animatic[-1]["path"], animatic[-1]["file_name"] + ".####.jpeg") elif shot == "black": path = os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "black.png") elif shot == "white": path = os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "white.png") else: path = os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "nuke.png") commands.addSource(path, None) sourceNode = commands.nodesOfType("RVSourceGroup")[-1] if storyboard and not animatic: retimeNode = commands.newNode( "RVRetimeGroup", "%s_%sRetime" % (sequence, shot)) commands.setNodeInputs(retimeNode, [sourceNode]) time = float(editShot["endFrame"]) - float( editShot["startFrame"]) + 1 commands.setFloatProperty( "%s_retime.visual.scale" % retimeNode, [float(time)], False) node = retimeNode else: node = sourceNode nodes.append(node) commands.setNodeInputs("defaultSequence", nodes) commands.setViewNode("defaultSequence")
def printInfo(): if "spec" not in info: print "ERROR: Spec not set" sys.exit(2) spec = ueSpec.Spec(info["spec"]) if spec.grp == None: # Project info assetType = "project" assetInfo = ueAssetUtils.getProject(spec) elif spec.asst == None: # Group info assetType = "group" assetInfo = ueAssetUtils.getGroup(spec) elif spec.elclass == None and \ spec.eltype == None and \ spec.elname == None: # Asset info assetType = "asset" assetInfo = ueAssetUtils.getAsset(spec) elif spec.vers == None: # Element info assetType = "element" assetInfo = ueAssetUtils.getElement(spec) assetInfo = assetInfo[spec.elclass][spec.eltype][spec.elname] elif spec.elpass == None: # Version info assetType = "version" assetInfo = ueAssetUtils.getVersions(spec)[int(spec.vers) - 1] else: print "ERROR: Could not identify spec as a valid element" sys.exit(2) print "Information on %s:\n%s\n" % (assetType, str(info["spec"])) for a in sorted(assetInfo): # Get a padding value so the key/value columns will be neatly aligned spacePadding = 28 - len(a) # Parse the version and datetime info correctly if a == "versions": assetInfo[a] = len(assetInfo[a]) elif a in ["created_at", "updated_at"]: assetInfo[a] = ueCore.formatDatetime(str(assetInfo[a])) # Get rid of the keys with _id because they're database stuff if not re.match(".*_id$", a): print "%s:%s%s" % (a, " " * spacePadding, str(assetInfo[a])) print ""
def printInfo(): if "spec" not in info: print "ERROR: Spec not set" sys.exit(2) spec = ueSpec.Spec(info["spec"]) if spec.grp == None: # Project info assetType = "project" assetInfo = ueAssetUtils.getProject(spec) elif spec.asst == None: # Group info assetType = "group" assetInfo = ueAssetUtils.getGroup(spec) elif spec.elclass == None and \ spec.eltype == None and \ spec.elname == None: # Asset info assetType = "asset" assetInfo = ueAssetUtils.getAsset(spec) elif spec.vers == None: # Element info assetType = "element" assetInfo = ueAssetUtils.getElement(spec) assetInfo = assetInfo[spec.elclass][spec.eltype][spec.elname] elif spec.elpass == None: # Version info assetType = "version" assetInfo = ueAssetUtils.getVersions(spec)[int(spec.vers)-1] else: print "ERROR: Could not identify spec as a valid element" sys.exit(2) print "Information on %s:\n%s\n" % (assetType, str(info["spec"])) for a in sorted(assetInfo): # Get a padding value so the key/value columns will be neatly aligned spacePadding = 28-len(a) # Parse the version and datetime info correctly if a == "versions": assetInfo[a] = len(assetInfo[a]) elif a in ["created_at", "updated_at"]: assetInfo[a] = ueCore.formatDatetime(str(assetInfo[a])) # Get rid of the keys with _id because they're database stuff if not re.match(".*_id$", a): print "%s:%s%s" % (a, " "*spacePadding, str(assetInfo[a])) print ""
def createElement(spec, dbMeta={}): element = ueAssetUtils.getElement(spec) if element: return element element["created_by"] = getpass.getuser() for m in dbMeta: element[m] = dbMeta[m] ueClient.client.saveElement(spec, element) return ueAssetUtils.getElement(spec)
def createProject(spec, dbMeta={}): project = ueAssetUtils.getProject(spec) if project: return project project["name"] = spec.proj project["created_by"] = getpass.getuser() for m in dbMeta: project[m] = dbMeta[m] ueClient.client.saveProject(spec, project) return ueAssetUtils.getProject(spec)
def createAsset(spec, asstType="default", dbMeta={}): asset = ueAssetUtils.getAsset(spec) if asset: return asset asset["name"] = spec.asst asset["asset_type"] = asstType asset["created_by"] = getpass.getuser() for m in dbMeta: asset[m] = dbMeta[m] ueClient.client.saveAsset(spec, asset) return ueAssetUtils.getAsset(spec)
def createGroup(spec, grpType="default", dbMeta={}): group = ueAssetUtils.getGroup(spec) if group: return group group["name"] = spec.grp group["group_type"] = grpType group["created_by"] = getpass.getuser() for m in dbMeta: group[m] = dbMeta[m] ueClient.client.saveGroup(spec, group) return ueAssetUtils.getGroup(spec)
def loadLayerLists(self): elements = ueAssetUtils.getElements(ueSpec.Spec(proj, grp, asst)) self.layerListPickerBox.clear() if __layerClass__ in elements: if __layerType__ in elements[__layerClass__]: for layerList in sorted(elements[__layerClass__][__layerType__]): self.layerListPickerBox.addItem(layerList)
def loadElements(self): global asst, elements asst = str(self.asstMenu.currentText()) elements = ueAssetUtils.getElements(ueSpec.Spec(proj, grp, asst)) self.animationTab.reload() self.backgroundTab.reload() self.renderTab.reload()
def ueNewScriptSetup(): context = ueSpec.Context() spec = context.spec asset = ueAssetUtils.getAsset(spec) # Set up renderer - default to Mental Ray loadPlugin("Mayatomr.so") maya.cmds.setAttr("defaultRenderGlobals.currentRenderer", "mentalRay", type="string") # Set up the timeline maya.cmds.playbackOptions(animationStartTime=float(asset["startFrame"]), animationEndTime=float(asset["endFrame"]), minTime=float(asset["startFrame"]), maxTime=float(asset["endFrame"])) x = int(asset["xRes"])+int(asset["xPad"]) y = int(asset["yRes"])+int(asset["yPad"]) # Set up renderGlobals maya.cmds.setAttr("defaultRenderGlobals.outFormatControl", 0) maya.cmds.setAttr("defaultRenderGlobals.animation", 1) maya.cmds.setAttr("defaultRenderGlobals.startFrame", float(asset["startFrame"])) maya.cmds.setAttr("defaultRenderGlobals.endFrame", float(asset["endFrame"])) maya.cmds.setAttr("defaultResolution.pixelAspect", float(asset["aspectRatio"])) maya.cmds.setAttr("defaultResolution.deviceAspectRatio", float(x)/float(y)) maya.cmds.setAttr("defaultResolution.width", x) maya.cmds.setAttr("defaultResolution.height", y) os.environ["FRAME_RATE"] = asset["frameRate"] os.environ["FIRST_FRAME"] = asset["startFrame"] os.environ["LAST_FRAME"] = asset["endFrame"]
def addFiles(): if not "files" in config: print "ERROR: No files given" sys.exit(2) if not "spec" in config: print "ERROR: Spec not set" sys.exit(2) e = ueAssetUtils.getElement(config["spec"]) if e == {}: e = ueCreate.createElement(config["spec"]) v = ueCreate.createVersion(config["spec"]) config["spec"].vers = v["version"] files = glob.glob(config["files"]) path = v["path"] name = v["file_name"] ext = files[0].split(".")[-1] if len(files) == 1: dest = os.path.join(path, "%s.%s" % (name, ext)) ueFileUtils.copyFile(files[0], dest) else: for f in sorted(files): dest = os.path.join(path, "%s.%04d.%s" % (name, files.index(f)+1, ext)) ueFileUtils.copyFile(f, dest)
def addFiles(): if not "files" in config: print "ERROR: No files given" sys.exit(2) if not "spec" in config: print "ERROR: Spec not set" sys.exit(2) e = ueAssetUtils.getElement(config["spec"]) if e == {}: e = ueCreate.createElement(config["spec"]) v = ueCreate.createVersion(config["spec"]) config["spec"].vers = v["version"] files = glob.glob(config["files"]) path = v["path"] name = v["file_name"] ext = files[0].split(".")[-1] if len(files) == 1: dest = os.path.join(path, "%s.%s" % (name, ext)) ueFileUtils.copyFile(files[0], dest) else: for f in sorted(files): dest = os.path.join(path, "%s.%04d.%s" % (name, files.index(f) + 1, ext)) ueFileUtils.copyFile(f, dest)
def getUeConstant(): n = nuke.thisNode() spec = ueSpec.Spec( n.knob("proj").value(), n.knob("grp").value(), n.knob("asst").value(), n.knob("elclass").value(), n.knob("eltype").value(), n.knob("elname").value(), n.knob("vers").value()) if not spec.proj == "" and not spec.grp == "" and \ not spec.asst == "" and not spec.elclass == "" and \ not spec.eltype == "" and not spec.elname == "" and \ not spec.vers == "": versions = ueAssetUtils.getVersions(spec) if int(spec.vers) > len(versions): return v = versions[int(spec.vers) - 1] if v: layerFile = os.path.join(v["path"], "%s.col" % v["file_path"]) if os.path.exists(layerFile): f = open(layerFile) palette = json.loads(layerfile.read()) f.close() if spec.elname in palette: colour.knob("color").setValue(palette[spec.elname][0], 0) colour.knob("color").setValue(palette[spec.elname][1], 1) colour.knob("color").setValue(palette[spec.elname][2], 2) colour.knob("color").setValue(1.0, 3)
def ueNewScriptSetup(): root = nuke.root() context = ueSpec.Context() spec = context.spec asset = ueAssetUtils.getAsset(spec) formatName = "ueProjectRes" root.knob("fps").setValue(int(asset["frameRate"])) root.knob("first_frame").setValue(int(asset["startFrame"])) root.knob("last_frame").setValue(int(asset["endFrame"])) x = int(asset["xRes"])+int(asset["xPad"]) y = int(asset["yRes"])+int(asset["yPad"]) nuke.addFormat("%i %i %s" % (x, y, formatName)) # nuke.addFormat("%i %i %i %i %i %i %d %s" % (x, y, int(config["xPad"]), int(config["yPad"]), # int(config["xRes"]), int(config["yRes"]), # float(config["aspectRatio"]), formatName)) root.knob("format").setValue(formatName) os.environ["FRAME_RATE"] = asset["frameRate"] os.environ["FIRST_FRAME"] = asset["startFrame"] os.environ["LAST_FRAME"] = asset["endFrame"]
def getUeConstant(): n = nuke.thisNode() spec = ueSpec.Spec(n.knob("proj").value(), n.knob("grp").value(), n.knob("asst").value(), n.knob("elclass").value(), n.knob("eltype").value(), n.knob("elname").value(), n.knob("vers").value()) if not spec.proj == "" and not spec.grp == "" and \ not spec.asst == "" and not spec.elclass == "" and \ not spec.eltype == "" and not spec.elname == "" and \ not spec.vers == "": versions = ueAssetUtils.getVersions(spec) if int(spec.vers) > len(versions): return v = versions[int(spec.vers)-1] if v: layerFile = os.path.join(v["path"], "%s.col" % v["file_path"]) if os.path.exists(layerFile): f = open(layerFile) palette = json.loads(layerfile.read()) f.close() if spec.elname in palette: colour.knob("color").setValue(palette[spec.elname][0], 0) colour.knob("color").setValue(palette[spec.elname][1], 1) colour.knob("color").setValue(palette[spec.elname][2], 2) colour.knob("color").setValue(1.0, 3)
def updateVersInfo(self): try: ver = self.versions[int(vers) - 1] spec = ueSpec.Spec(proj, grp, asst, elclass, eltype, elname, vers, elpass) self.verCreatedBy.setText(ver["created_by"]) self.verCreatedAt.setText(ueCore.formatDatetime(ver["created_at"])) files = glob.glob(os.path.join(ver["path"], ver["file_name"] + "*")) self.verFilesList.clear() for f in sorted(files): self.verFilesList.addItem(QtGui.QListWidgetItem(os.path.basename(f))) if "comment" in ver: self.verComment.setText(ver["comment"]) else: self.verComment.setText("N/A") if "thumbnail" in ver: spec = ueSpec.Spec(proj, grp, asst, elclass, eltype, elname, vers) f = ueAssetUtils.getThumbnailPath(spec) img = QtGui.QImage(f) imgs = img.scaled(200, 80, aspectRatioMode=QtCore.Qt.KeepAspectRatio) self.verThumb.setPixmap(QtGui.QPixmap.fromImage(imgs)) else: img = QtGui.QImage(os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "thumbnail.png")) imgs = img.scaled(200, 80, aspectRatioMode=QtCore.Qt.KeepAspectRatio) self.verThumb.setPixmap(QtGui.QPixmap.fromImage(imgs)) except IndexError: pass
def getReadGeoPath(): n = nuke.thisNode() spec = ueSpec.Spec(n.knob("proj").value(), n.knob("grp").value(), n.knob("asst").value(), n.knob("elclass").value(), n.knob("eltype").value(), n.knob("elname").value(), n.knob("vers").value()) p = os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "nuke.obj") if not spec.proj == "" and not spec.grp == "" and \ not spec.asst == "" and not spec.elclass == "" and \ not spec.eltype == "" and not spec.elname == "" and \ not spec.vers == "": versions = ueAssetUtils.getVersions(spec) if int(spec.vers) > len(versions): return p v = versions[int(spec.vers)-1] if v: files = glob.glob(os.path.join(v["path"], v["file_name"]+"*.obj")) if len(files) < 1: return p ext = files[0].split(".")[-1] if len(files) == 1: p = os.path.join(v["path"], v["file_name"]+"."+ext) else: p = os.path.join(v["path"], v["file_name"]+".%04d."+ext) # p = os.path.join(v["path"], elpassDir, # v["file_name"]+elpassFile+".%04d."+ext) return p
def loadElements(self): global asst asst = str(self.asstMenu.currentText()) spec = ueSpec.Spec(proj, grp, asst) self.elements = ueAssetUtils.getElements(spec) # self.eltypeList.clear() self.loadTypes()
def ueNewScriptSetup(): root = nuke.root() context = ueSpec.Context() spec = context.spec asset = ueAssetUtils.getAsset(spec) formatName = "ueProjectRes" root.knob("fps").setValue(int(asset["frameRate"])) root.knob("first_frame").setValue(int(asset["startFrame"])) root.knob("last_frame").setValue(int(asset["endFrame"])) x = int(asset["xRes"]) + int(asset["xPad"]) y = int(asset["yRes"]) + int(asset["yPad"]) nuke.addFormat("%i %i %s" % (x, y, formatName)) # nuke.addFormat("%i %i %i %i %i %i %d %s" % (x, y, int(config["xPad"]), int(config["yPad"]), # int(config["xRes"]), int(config["yRes"]), # float(config["aspectRatio"]), formatName)) root.knob("format").setValue(formatName) os.environ["FRAME_RATE"] = asset["frameRate"] os.environ["FIRST_FRAME"] = asset["startFrame"] os.environ["LAST_FRAME"] = asset["endFrame"]
def updateVersInfo(self): try: ver = self.versions[int(vers)-1] spec = ueSpec.Spec(proj, grp, asst, elclass, eltype, elname, vers, elpass) self.verCreatedBy.setText(ver["created_by"]) self.verCreatedAt.setText(ueCore.formatDatetime(ver["created_at"])) files = glob.glob(os.path.join(ver["path"], ver["file_name"]+"*")) self.verFilesList.clear() for f in sorted(files): self.verFilesList.addItem(QtGui.QListWidgetItem(os.path.basename(f))) if "comment" in ver: self.verComment.setText(ver["comment"]) else: self.verComment.setText("N/A") if "thumbnail" in ver: spec = ueSpec.Spec(proj, grp, asst, elclass, eltype, elname, vers) f = ueAssetUtils.getThumbnailPath(spec) img = QtGui.QImage(f) imgs = img.scaled(200, 80, aspectRatioMode=QtCore.Qt.KeepAspectRatio) self.verThumb.setPixmap(QtGui.QPixmap.fromImage(imgs)) else: img = QtGui.QImage(os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "thumbnail.png")) imgs = img.scaled(200, 80, aspectRatioMode=QtCore.Qt.KeepAspectRatio) self.verThumb.setPixmap(QtGui.QPixmap.fromImage(imgs)) except IndexError: pass
def createVersion(spec, dbMeta={}, layer=None): version = {} spec.vers = len(ueAssetUtils.getVersions(spec))+1 version["version"] = spec.vers version["created_by"] = getpass.getuser() for m in dbMeta: version[m] = dbMeta[m] if not layer == None: p = os.path.join(version["path"]) ueClient.client.saveVersion(spec, version) return ueAssetUtils.getVersions(spec)[spec.vers-1]
def loadGizmosFromAsset(asst): path = [] a = ueAssetUtils.getElements(ueSpec.Spec(asst[0], asst[1], asst[2])) if "giz" in a: for n in a["giz"]: for p in a["giz"][n]: path.append(a["giz"][n][p]["path"]) return path
def loadLayerLists(self): elements = ueAssetUtils.getElements(ueSpec.Spec(proj, grp, asst)) self.layerListPickerBox.clear() if __layerClass__ in elements: if __layerType__ in elements[__layerClass__]: for layerList in sorted( elements[__layerClass__][__layerType__]): self.layerListPickerBox.addItem(layerList)
def createVersion(spec, dbMeta={}, layer=None): version = {} spec.vers = len(ueAssetUtils.getVersions(spec)) + 1 version["version"] = spec.vers version["created_by"] = getpass.getuser() for m in dbMeta: version[m] = dbMeta[m] if not layer == None: p = os.path.join(version["path"]) ueClient.client.saveVersion(spec, version) return ueAssetUtils.getVersions(spec)[spec.vers - 1]
def loadAssets(self): global grp grp = str(self.grpMenu.currentText()) spec = ueSpec.Spec(proj, grp) al = sorted(ueAssetUtils.getAssetsList(spec)) self.asstMenu.clear() for a in al: self.asstMenu.addItem(a) self.loadElements()
def loadElements(self): self.elements = ueAssetUtils.getElements(self.spec) if "arc" in self.elements: spec = copy.deepcopy(self.spec) spec.elclass = "arc" for eltype in self.elements["arc"]: spec.eltype = eltype self.libraryWidgets.append(LibraryWidget(self.elements["arc"][eltype], parent=self)) self.drawLibraryWidgets()
def loadGroups(self): global proj proj = str(self.projMenu.currentText()) spec = ueSpec.Spec(proj) gl = sorted(ueAssetUtils.getGroupsList(spec)) self.grpMenu.clear() for g in gl: self.grpMenu.addItem(g) self.loadAssets()
def open(self): spec = ueCommonOpen.getValues() version = ueAssetUtils.getVersions(spec)[spec.vers - 1] maya.cmds.file(os.path.join(version["path"], version["file_name"] + ".ma"), o=True, f=True) print "Opened %s" % spec self.close()
def loadEdits(self): elements = ueAssetUtils.getElements(self.spec) self.editMenu.clear() if self.spec.elclass in elements: if self.spec.eltype in elements[self.spec.elclass]: for name in elements[self.spec.elclass][self.spec.eltype]: self.editMenu.addItem(name) self.spec.elname = str(self.editMenu.currentText()) self.loadEditVersions()
def loadVersions(self): self.elname = str(self.backgroundList.currentItem().text()) self.versList.clear() spec = ueSpec.Spec(proj, grp, asst, __bgClass__, __bgType__, self.elname) vers = ueAssetUtils.getVersions(spec) for v in sorted(range(len(vers)), reverse=True): item = QtGui.QListWidgetItem("%04d" % int(v + 1)) self.versList.addItem(item) self.versList.setCurrentItem(self.versList.item(0))
def createScript(self): job = {} if self.run == "nuke": ext = "nk" proj = ueAssetUtils.getProject(self.destSpec) asst = ueAssetUtils.getAsset(self.destSpec) versions = ueAssetUtils.getVersions(self.sourceSpec) version = versions[len(versions) - 1] p = os.path.join(version["path"], version["file_name"] + "." + ext) for f in range(self.frame_start, self.frame_end + 1): frame = {} if self.run == "nuke": frame["cmd"] = "nuke -x -V -f -X %s -F %i-%i %s" % (",".join( self.options["writeNode"]), f, f, p) frame["proj"] = self.destSpec.proj frame["grp"] = self.destSpec.grp frame["asst"] = self.destSpec.asst frame["proj_root"] = proj["path"] frame["asst_root"] = asst["path"] job[f] = frame versions = ueAssetUtils.getVersions(self.destSpec) version = versions[len(versions) - 1] p = os.path.join( asst["path"], "tmp", "drQueue", version["file_name"] + "." + str(int(time.time())) + ".dq") if not os.path.exists(os.path.dirname(p)): import ueCore.FileUtils as ueFileUtils ueFileUtils.createDir(os.path.dirname(p)) try: f = open(p, "w") f.write(json.dumps(job, sort_keys=True, indent=4)) f.close() except IOError, e: print "ERROR: Creating job script '%s' (%s)" % (p, e) sys.exit(2)
def load(self): nodes = [] for sequence in self.parent.edit["sequences"]: for shot in self.parent.edit[sequence]["shots"]: editShot = self.parent.edit[sequence][shot] storyboard = [] animatic = [] spec = ueSpec.Spec(os.getenv("PROJ"), sequence, shot, "sb", "storyboard", "master") storyboard = ueAssetUtils.getVersions(spec) if storyboard: path = os.path.join(storyboard[-1]["path"], storyboard[-1]["file_name"]+".jpg") spec.eltype = "animatic" spec.elclass = "an" animatic = ueAssetUtils.getVersions(spec) if animatic: path = os.path.join(animatic[-1]["path"], animatic[-1]["file_name"]+".####.jpeg") elif shot == "black": path = os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "black.png") elif shot == "white": path = os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "white.png") else: path = os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "nuke.png") commands.addSource(path, None) sourceNode = commands.nodesOfType("RVSourceGroup")[-1] if storyboard and not animatic: retimeNode = commands.newNode("RVRetimeGroup", "%s_%sRetime" % (sequence, shot)) commands.setNodeInputs(retimeNode, [sourceNode]) time = float(editShot["endFrame"])-float(editShot["startFrame"])+1 commands.setFloatProperty("%s_retime.visual.scale" % retimeNode, [float(time)], False) node = retimeNode else: node = sourceNode nodes.append(node) commands.setNodeInputs("defaultSequence", nodes) commands.setViewNode("defaultSequence")
def loadElements(self): global asst asst = str(self.asstMenu.currentText()) spec = ueSpec.Spec(proj, grp, asst) self.elements = ueAssetUtils.getElements(spec) if elclass in self.elements: self.loadTypes() else: self.eltypeMenu.clear() self.elnameMenu.clear()
def createScript(self): job = {} if self.run == "nuke": ext = "nk" proj = ueAssetUtils.getProject(self.destSpec) asst = ueAssetUtils.getAsset(self.destSpec) versions = ueAssetUtils.getVersions(self.sourceSpec) version = versions[len(versions)-1] p = os.path.join(version["path"], version["file_name"]+"."+ext) for f in range(self.frame_start, self.frame_end+1): frame = {} if self.run == "nuke": frame["cmd"] = "nuke -x -V -f -X %s -F %i-%i %s" % (",".join(self.options["writeNode"]), f, f, p) frame["proj"] = self.destSpec.proj frame["grp"] = self.destSpec.grp frame["asst"] = self.destSpec.asst frame["proj_root"] = proj["path"] frame["asst_root"] = asst["path"] job[f] = frame versions = ueAssetUtils.getVersions(self.destSpec) version = versions[len(versions)-1] p = os.path.join(asst["path"], "tmp", "drQueue", version["file_name"]+"."+str(int(time.time()))+".dq") if not os.path.exists(os.path.dirname(p)): import ueCore.FileUtils as ueFileUtils ueFileUtils.createDir(os.path.dirname(p)) try: f = open(p, "w") f.write(json.dumps(job, sort_keys=True, indent=4)) f.close() except IOError, e: print "ERROR: Creating job script '%s' (%s)" % (p, e) sys.exit(2)
def getLayers(self): layer = str(self.layerListPickerBox.currentText()) element = ueAssetUtils.getVersions(ueSpec.Spec(proj, grp, asst, __layerClass__, __layerType__, layer)) fileName = os.path.join(element[-1]["path"], "%s.lay" % element[-1]["file_name"]) if os.path.exists(fileName): f = open(fileName) layers = json.loads(f.read()) f.close() else: layers = {} return layers
def loadVersions(self): self.elname = str(self.nameList.currentItem().text()) spec = ueSpec.Spec(proj, grp, asst, self.elclass, self.eltype, self.elname) self.versList.clear() vers = ueAssetUtils.getVersions(spec) if vers: for v in sorted(range(len(vers)), reverse=True): item = QtGui.QListWidgetItem("%04d" % int(v + 1)) self.versList.addItem(item) self.versList.setCurrentItem(self.versList.item(0)) self.loadPasses()
def listElements(): elements = ueAssetUtils.getElements(settings["spec"]) for e in sorted(elements): for t in sorted(elements[e]): for n in sorted(elements[e][t]): a = ueSpec.Spec(settings["spec"].proj, settings["spec"].grp, settings["spec"].asst, e, t, n) element = str(a) if "paths" in settings: element = "%s -> %s" % (element, n["path"]) print element
def getReadPath(): n = nuke.thisNode() elpass = n.knob("elpass").value() if elpass == "": elpass = None spec = ueSpec.Spec( n.knob("proj").value(), n.knob("grp").value(), n.knob("asst").value(), n.knob("elclass").value(), n.knob("eltype").value(), n.knob("elname").value(), n.knob("vers").value(), elpass) p = os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "nuke.png") if not spec.proj == "" and not spec.grp == "" and \ not spec.asst == "" and not spec.elclass == "" and \ not spec.eltype == "" and not spec.elname == "" and \ not spec.vers == "": versions = ueAssetUtils.getVersions(spec) if int(spec.vers) > len(versions): return p v = versions[int(spec.vers) - 1] if v: elpassDir = "" elpassFile = "" if not spec.elpass == None: elpassDir = spec.elpass elpassFile = "_" + spec.elpass files = glob.glob( os.path.join(v["path"], elpassDir, v["file_name"] + elpassFile + "*")) if len(files) > 0: ext = files[0].split(".")[-1] if len(files) == 1: p = os.path.join(v["path"], elpassDir, v["file_name"] + elpassFile + "." + ext) else: p = os.path.join( v["path"], elpassDir, v["file_name"] + elpassFile + ".%04d." + ext) nuke.thisNode().knob("first").setValue(1) nuke.thisNode().knob("last").setValue(len(files)) nuke.thisNode().knob("origfirst").setValue(1) nuke.thisNode().knob("origlast").setValue(len(files)) return p
def getLayers(self): layer = str(self.layerListPickerBox.currentText()) element = ueAssetUtils.getVersions( ueSpec.Spec(proj, grp, asst, __layerClass__, __layerType__, layer)) fileName = os.path.join(element[-1]["path"], "%s.lay" % element[-1]["file_name"]) if os.path.exists(fileName): f = open(fileName) layers = json.loads(f.read()) f.close() else: layers = {} return layers
def ueOpen(): p = nukescripts.registerWidgetAsPanel("ueCommonOpen.Open", "ueOpen", "ue.panel.ueOpen", create=True) p.setMinimumSize(600, 940) ueCommonOpen.setClasses(__ueclasses__) if p.showModalDialog(): spec = ueCommonOpen.getValues() version = ueAssetUtils.getVersions(spec)[spec.vers-1] nuke.scriptOpen(os.path.join(version["path"], version["file_name"]+".nk")) nuke.tprint("Opened %s" % spec) nukescripts.unregisterPanel("ue.panel.ueOpen", lambda: "return")
def getReadPath(): n = nuke.thisNode() elpass = n.knob("elpass").value() if elpass == "": elpass = None spec = ueSpec.Spec(n.knob("proj").value(), n.knob("grp").value(), n.knob("asst").value(), n.knob("elclass").value(), n.knob("eltype").value(), n.knob("elname").value(), n.knob("vers").value(), elpass) p = os.path.join(os.getenv("UE_PATH"), "lib", "placeholders", "nuke.png") if not spec.proj == "" and not spec.grp == "" and \ not spec.asst == "" and not spec.elclass == "" and \ not spec.eltype == "" and not spec.elname == "" and \ not spec.vers == "": versions = ueAssetUtils.getVersions(spec) if int(spec.vers) > len(versions): return p v = versions[int(spec.vers)-1] if v: elpassDir = "" elpassFile = "" if not spec.elpass == None: elpassDir = spec.elpass elpassFile = "_"+spec.elpass files = glob.glob(os.path.join(v["path"], elpassDir, v["file_name"]+elpassFile+"*")) if len(files) > 0: ext = files[0].split(".")[-1] if len(files) == 1: p = os.path.join(v["path"], elpassDir, v["file_name"]+elpassFile+"."+ext) else: p = os.path.join(v["path"], elpassDir, v["file_name"]+elpassFile+".%04d."+ext) nuke.thisNode().knob("first").setValue(1) nuke.thisNode().knob("last").setValue(len(files)) nuke.thisNode().knob("origfirst").setValue(1) nuke.thisNode().knob("origlast").setValue(len(files)) return p
def __init__(self, spec=ueSpec.Context().spec, parent=None): QtGui.QDockWidget.__init__(self, parent) self.parent = parent self.spec = spec self.assetsWidget = QtGui.QTreeWidget() self.mainWidget = QtGui.QWidget() self.mainWidget.setLayout(QtGui.QVBoxLayout()) self.mainWidget.layout().addWidget(self.assetsWidget) self.setWidget(self.mainWidget) self.setWindowTitle("Assets") for group in ueAssetUtils.getGroupsList(self.spec): groupItem = QtGui.QTreeWidgetItem(self.assetsWidget) groupItem.setText(0, group) self.spec.grp = group for asset in ueAssetUtils.getAssetsList(self.spec): assetItem = QtGui.QTreeWidgetItem(groupItem) assetItem.setText(0, asset) self.spec.asst = asset