Nuke Python
								Jump to navigation
				Jump to search
				
Contents
Nuke Python Scripts
Create multiple Writes nodes for multiples Reads - With RGBA channels activated
//Select Read nodes first
root_frame_path = "/YOUR_PATH"
nodes = nuke.selectedNodes()
for n in nodes:
    roto_name = n.name()
    n.setSelected(True)
    w = nuke.createNode( "Write" )
    write_name = roto_name.replace("Roto", "Write_")
    w.knob("name").setValue(write_name)
    image_path = "{root_frame_path}/{write_name}.png".format(root_frame_path=root_frame_path, write_name=write_name)
    w.knob("file").setValue(image_path)
for a in nuke.allNodes('Write'):
    a['channels'].setValue('rgba')
Change specific attribute on all nodes
//Works also with "selectedNodes"
//"render_mode" and "textured+wireframe" are examples of attributes to be changed.
sn = nuke.allNodes()
for n in sn:
        n.knob('render_mode').setValue("textured+wireframe")
//Alternative script for selectedNodes:
for a in nuke.selectedNodes('Write'):
a['channels'].setValue('rgba')
//Alternative script for allNodes:
for a in nuke.allNodes('Write'):
a['channels'].setValue('rgba')
Count selected nodes
len(nuke.selectedNodes())
Maxwell Render - Check .mxi sequence Sampling levels
//This script comes from the great Marc Dubrois.
def checkMXI_SL():
    '''takes mxi read node and checks its SLs metadata and outputs frames under certain treshold'''
    sl_threshold = 18.0
    txt = nuke.getInput('Print frames with SL below:', str(sl_threshold))
    if txt:
        sl_threshold = float(txt)
    output = ''
    task = nuke.ProgressTask("Checking MXI SLs") 
    task.setMessage("Progress")
    for node in nuke.selectedNodes():
        if node.Class() == 'Read':
            firstframe = int(node['first'].value())
            #lastframe = firstframe + 10
            lastframe = int(node['last'].value())
            for i in range(firstframe, lastframe):
                percentage = int(100.0*(i-firstframe)/(lastframe-firstframe))
                task.setProgress(percentage)
                if task.isCancelled(): 
                    break;
                sl = node.metadata('SAMPLING_LEVEL',i)
                if  sl < sl_threshold:
                        task.setMessage('Frame ['+str(i)+'] SL'+"{0:.1f}".format(sl))                        
                        logline = 'Frame ' + str(i) + ': ' + "{0:.2f}".format(sl) + '\n'
                        output = output + logline
            task.setProgress(100)
    del task
    p = nuke.Panel('Results')
    if output == '':
        output = 'All MXI are above or equal to '+str(sl_threshold)
    p.addNotepad('Results:',output)
    ret = p.show()
checkMXI_SL()
