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" sn = nuke.allNodes() for n in sn: n.knob('render_mode').setValue("textured+wireframe")
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()