def smartRender(): sel = nuke.selectedNodes() if len(sel)>0: #create and show panel p = createPanel() #getting and setting the path r=nuke.root()['name'].value() #root if r!="": #save script nuke.scriptSave() p.show() renderChannels=p.value("channels") renderFiletype=p.value("filetype") renderFromFrame=float(p.value("render from:")) renderToFrame=float(p.value("render to:")) importRender = p.value("import render when finished") rArray = r.split("/"); rootLast = rArray[len(rArray)-1] rArray.pop() renderpath = '/'.join(rArray) nameArray = rootLast.split(".") nameAndFolder=nameArray[0] renderTo = renderpath+"/"+nameAndFolder print renderpath #split up to new location renderToArr=renderTo.split("%s"%scriptPath) #keep only project path renderTo=renderToArr[0] #append renderpath and artist renderToFromArtist=renderTo+renderPath+"/"+artist #renderTo apend folder with name of the script renderTo=renderToFromArtist+"/"+nameAndFolder renderProjectDirTemp=renderToFromArtist+"/"+nameAndFolder renderProjectDirArr = renderProjectDirTemp.split("@") renderProjectDir = renderProjectDirArr[0] projectNameArr=renderProjectDir.split("/") projectName=projectNameArr.pop() time="@"+renderProjectDirArr[1] #set render up if not canceled if renderChannels is not None: #create folder if not exist if not os.path.isdir(renderProjectDir+"/"+projectName+time): os.makedirs(str(renderProjectDir+"/"+projectName+time)) #create write node wr = nuke.nodes.Write(name="smart Render", inputs=sel, postage_stamp=True) wr.knob("file").setValue(renderProjectDir+"/"+projectName+time+"/"+nameAndFolder+"_%04d."+renderFiletype) wr.knob("channels").setValue(renderChannels) wr.knob("file_type").setValue(renderFiletype) wr.knob("use_limit").setValue(True) wr.knob("first").setValue(renderFromFrame) wr.knob("last").setValue(renderToFrame) #write note if p.value('note')!="": fobj_out = open(renderProjectDir+"/"+projectName+time+"/_rendernote.txt","w") fobj_out.write(p.value("note")) fobj_out.close() #autoexecute autoexecute=p.value("autoexecute") if autoexecute==True: nuke.execute(wr,renderFromFrame,renderToFrame) nuke.delete(wr) nuke.message("smart Render finished") #auto import if importRender==True: r =nuke.nodes.Read() r.knob("name").setValue("smart rendered %s"%nameAndFolder) r.knob("file").setValue(renderProjectDir+"/"+projectName+time+"/"+nameAndFolder+"_%04d."+renderFiletype) r.knob("first").setValue(renderFromFrame) r.knob("last").setValue(renderToFrame) else: pass else: pass else: pass #save, create new script so the script of the rendered version won't get changed from here smartSaver() else: nuke.message("You haven't safed your nuke project. Please make sure to save your project first in order to proceed.") else: nuke.message("Please select a node from where you want to render from")
def smartProjectSetter(projectPath, scriptPath, renderPath): projectPath = projectPath scriptPath=scriptPath renderPath=renderPath if os.path.isdir(projectPath): #setting up p = createPanel(projectPath) if p.show(): userPath=p.value('create new script: ') #convert whitespace back userPath = userPath.replace("**", " ") artist = p.value('artist: ') scriptname=p.value('script name: ') scriptname=scriptname.replace(" ","_") scriptname=scriptname.replace("@","_") projectComment = p.value("comment (optional): ") # # actions # # 1 open recent # 2 open latest script # 3 create project #01 open recent recentFile=p.value("open recent file") #cancel button pressed if recentFile is None: recentFile="---OpenRecentFile---" if recentFile!="---OpenRecentFile---": def openRecent(): nuke.scriptOpen(recentFile) return True def thread_dispatch(): return nuke.executeInMainThreadWithResult(openRecent, ()) thread.start_new_thread(thread_dispatch, ()) #02 open latest script latestScript=p.value("open latest script") #cancel button pressed if latestScript is None: latestScript="---OpenLatestScript---" if latestScript!="---OpenLatestScript---": def openRecent(): nuke.scriptOpen(latestScript) return True def thread_dispatch(): return nuke.executeInMainThreadWithResult(openRecent, ()) thread.start_new_thread(thread_dispatch, ()) #03 create project if userPath!="---ChooseProject---" and userPath!=" -------------------- ": #convert whitespace back if scriptname!="": t=getTime() #create Folder projectPath=getSmartSettings("@projectPath") project = userPath scriptPath = getSmartSettings("@scriptPath") #setting script and render folder scriptFolder = projectPath + "/" + project + "/" + scriptPath + "/" + artist + "/" + scriptname scriptsDir = scriptFolder + "/scripts" footageFolderPath = scriptFolder + "/_footage" trkFolder = scriptFolder + "/trk" assetsFolder = scriptFolder + "/assets" referencesFolder = scriptFolder + "/references" fullScriptPath = scriptsDir + "/" + scriptname + "@" + t + ".nk" renderFolder = projectPath + "/" + project + "/" + renderPath + "/" + artist + "/" + scriptname #create scriptFolder, renderFolder, toFolder createFolders(scriptFolder) createFolders(scriptsDir) createFolders(footageFolderPath) createFolders(trkFolder) createFolders(assetsFolder) createFolders(referencesFolder) createFolders(renderFolder) #set root name #when starting nuke and setting up project nuke.knobDefault("Root.name", fullScriptPath) #when setting up new project in between nuke.root()['name'].setValue(fullScriptPath) if projectComment!="": #write comment in root.label and create text file in project folder #when starting nuke and setting up project nuke.knobDefault("Root.label", projectComment) #when setting up new project in between nuke.root()['label'].setValue(projectComment) #create txt file fobj_out = open(scriptFolder+"/_projectnote.txt","w") fobj_out.write(projectComment) fobj_out.close() smartSaver() else: if(scriptPath=="---" and renderPath=="---" and projectPath=="---"): nuke.message("Welcome to smart. Please make sure to insert all the inputs correctly in order to make .smart work correctly") else: nuke.message("Could not find the project path. Make sure that the path is set correctly") smartSetter()
def smartRender(): sel = nuke.selectedNodes() if len(sel) > 0: # create and show panel p = createPanel() # getting and setting the path r = nuke.root()["name"].value() # root if r != "": # save script nuke.scriptSave() p.show() renderChannels = p.value("channels") renderFiletype = p.value("filetype") renderFromFrame = float(p.value("render from:")) renderToFrame = float(p.value("render to:")) importRender = p.value("import render when finished") rArray = r.split("/") rootLast = rArray[len(rArray) - 1] rArray.pop() renderpath = "/".join(rArray) nameArray = rootLast.split(".") nameAndFolder = nameArray[0] renderTo = renderpath + "/" + nameAndFolder print renderpath # split up to new location renderToArr = renderTo.split("%s" % scriptPath) # keep only project path renderTo = renderToArr[0] # append renderpath and artist renderToFromArtist = renderTo + renderPath + "/" + artist # renderTo apend folder with name of the script renderTo = renderToFromArtist + "/" + nameAndFolder renderProjectDirTemp = renderToFromArtist + "/" + nameAndFolder renderProjectDirArr = renderProjectDirTemp.split("@") renderProjectDir = renderProjectDirArr[0] projectNameArr = renderProjectDir.split("/") projectName = projectNameArr.pop() time = "@" + renderProjectDirArr[1] # set render up if not canceled if renderChannels is not None: # create folder if not exist if not os.path.isdir(renderProjectDir + "/" + projectName + time): os.makedirs(str(renderProjectDir + "/" + projectName + time)) # create write node wr = nuke.nodes.Write(name="smart Render", inputs=sel, postage_stamp=True) wr.knob("file").setValue( renderProjectDir + "/" + projectName + time + "/" + nameAndFolder + "_%04d." + renderFiletype ) wr.knob("channels").setValue(renderChannels) wr.knob("file_type").setValue(renderFiletype) wr.knob("use_limit").setValue(True) wr.knob("first").setValue(renderFromFrame) wr.knob("last").setValue(renderToFrame) # write note if p.value("note") != "": fobj_out = open(renderProjectDir + "/" + projectName + time + "/_rendernote.txt", "w") fobj_out.write(p.value("note")) fobj_out.close() # autoexecute autoexecute = p.value("autoexecute") if autoexecute == True: nuke.execute(wr, renderFromFrame, renderToFrame) nuke.delete(wr) nuke.message("smart Render finished") # auto import if importRender == True: r = nuke.nodes.Read() r.knob("name").setValue("smart rendered %s" % nameAndFolder) r.knob("file").setValue( renderProjectDir + "/" + projectName + time + "/" + nameAndFolder + "_%04d." + renderFiletype ) r.knob("first").setValue(renderFromFrame) r.knob("last").setValue(renderToFrame) else: pass else: pass else: pass # save, create new script so the script of the rendered version won't get changed from here smartSaver() else: nuke.message( "You haven't safed your nuke project. Please make sure to save your project first in order to proceed." ) else: nuke.message("Please select a node from where you want to render from")
def smartProjectSetter(projectPath, scriptPath, renderPath): projectPath = projectPath scriptPath = scriptPath renderPath = renderPath if os.path.isdir(projectPath): #setting up p = createPanel(projectPath) if p.show(): userPath = p.value('create new script: ') #convert whitespace back userPath = userPath.replace("**", " ") artist = p.value('artist: ') scriptname = p.value('script name: ') scriptname = scriptname.replace(" ", "_") scriptname = scriptname.replace("@", "_") projectComment = p.value("comment (optional): ") # # actions # # 1 open recent # 2 open latest script # 3 create project #01 open recent recentFile = p.value("open recent file") #cancel button pressed if recentFile is None: recentFile = "---OpenRecentFile---" if recentFile != "---OpenRecentFile---": def openRecent(): nuke.scriptOpen(recentFile) return True def thread_dispatch(): return nuke.executeInMainThreadWithResult(openRecent, ()) thread.start_new_thread(thread_dispatch, ()) #02 open latest script latestScript = p.value("open latest script") #cancel button pressed if latestScript is None: latestScript = "---OpenLatestScript---" if latestScript != "---OpenLatestScript---": def openRecent(): nuke.scriptOpen(latestScript) return True def thread_dispatch(): return nuke.executeInMainThreadWithResult(openRecent, ()) thread.start_new_thread(thread_dispatch, ()) #03 create project if userPath != "---ChooseProject---" and userPath != " -------------------- ": #convert whitespace back if scriptname != "": t = getTime() #create Folder projectPath = getSmartSettings("@projectPath") project = userPath scriptPath = getSmartSettings("@scriptPath") #setting script and render folder scriptFolder = projectPath + "/" + project + "/" + scriptPath + "/" + artist + "/" + scriptname scriptsDir = scriptFolder + "/scripts" footageFolderPath = scriptFolder + "/_footage" trkFolder = scriptFolder + "/trk" assetsFolder = scriptFolder + "/assets" referencesFolder = scriptFolder + "/references" fullScriptPath = scriptsDir + "/" + scriptname + "@" + t + ".nk" renderFolder = projectPath + "/" + project + "/" + renderPath + "/" + artist + "/" + scriptname #create scriptFolder, renderFolder, toFolder createFolders(scriptFolder) createFolders(scriptsDir) createFolders(footageFolderPath) createFolders(trkFolder) createFolders(assetsFolder) createFolders(referencesFolder) createFolders(renderFolder) #set root name #when starting nuke and setting up project nuke.knobDefault("Root.name", fullScriptPath) #when setting up new project in between nuke.root()['name'].setValue(fullScriptPath) if projectComment != "": #write comment in root.label and create text file in project folder #when starting nuke and setting up project nuke.knobDefault("Root.label", projectComment) #when setting up new project in between nuke.root()['label'].setValue(projectComment) #create txt file fobj_out = open(scriptFolder + "/_projectnote.txt", "w") fobj_out.write(projectComment) fobj_out.close() smartSaver() else: if (scriptPath == "---" and renderPath == "---" and projectPath == "---"): nuke.message( "Welcome to smart. Please make sure to insert all the inputs correctly in order to make .smart work correctly" ) else: nuke.message( "Could not find the project path. Make sure that the path is set correctly" ) smartSetter()