Exemple #1
0
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()
Exemple #3
0
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")
Exemple #4
0
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()