Nuke Python
								
								Jump to navigation
				Jump to search
				
					
								
							
		Contents
- 1 Nuke Python Scripts
- 1.1 Getting advanced settings/Knobs informations
- 1.2 Create multiple Writes nodes for multiples Reads - With RGBA channels activated
- 1.3 Change specific attribute on all nodes
- 1.4 Set localizationPolicy off on all Read nodes
- 1.5 Set value of BBox parameter in Merge nodes to B
- 1.6 Count selected nodes
- 1.7 Export multiple files in DXV
 
Nuke Python Scripts
Getting advanced settings/Knobs informations
#For a specific knob, here for "mov32_settings" in a Write node
i = nuke.selectedNode()
print i.knob('mov32_settings').value()
#Or for the whole node - https://berniebernie.fr/wiki/
print(nuke.selectedNode())
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')
Set localizationPolicy off on all Read nodes
sn = nuke.allNodes()
for n in sn:
        n.knob('localizationPolicy').setValue("off")
Set value of BBox parameter in Merge nodes to B
for n in nuke.allNodes('Merge2'):
    n['bbox'].setValue("B")
Count selected nodes
len(nuke.selectedNodes())
Export multiple files in DXV
#This script comes from the great Benjamin Vedrenne. DXV is the codec made by and for Resolume.
#Select all Read nodes or sources first.
#This script create a write node under each selected read nodes. Easy for fast and massive file conversion TO VIDEO.
for oReadNode in nuke.selectedNodes():
    oPath =  oReadNode['file'].value()
    first =  oReadNode['first'].value()
    last =  oReadNode['last'].value()
    newPath = oPath.split('/')[-2]
    oReadNode['selected'].setValue(True)
    Write = nuke.createNode ("Write")   
    #Specify file path here
    osdir = 'C:/DXV/tmp'
    
    Write.knob("beforeRender").setValue("import os\nif not os.path.isdir(os.path.dirname(nuke.thisNode()['file'].evaluate())):\n  os.makedirs(os.path.dirname(nuke.thisNode()['file'].evaluate()))")
    Write.knob('channels').setValue('rgba')
    Write.knob('file').setValue(osdir+'/'+newPath+".mov")
    Write.knob('file_type').setValue('mov')
    Write.knob('meta_codec').setValue('DXD3')
    Write.knob('mov32_fps').setValue(24)
    Write.knob('use_limit').setValue(True)
    Write.knob('first').setValue(first)
    Write.knob('last').setValue(last)
    Write.knob('mov32_settings').setValue('000000000000000000000000000001b67365616e000000010000000100000000000001a276696465000000010000000f00000000000000227370746c00000001000000000000000044584433000000000020000003ff000000207470726c000000010000000000000000000000000018000000000000000000246472617400000001000000000000000000000000000000530000010000000100000000156d70736f00000001000000000000000000000000186d66726100000001000000000000000000000000000000187073667200000001000000000000000000000000000000156266726100000001000000000000000000000000166d70657300000001000000000000000000000000002868617264000000010000000000000000000000000000000000000000000000000000000000000016656e647300000001000000000000000000000000001663666c67000000010000000000000000004400000018636d667200000001000000000000000052534c4d00000014636c75740000000100000000000000000000001c6364656300000001000000000000000043736552030000000000001c766572730000000100000000000000000003001c00010000')
