Basic GafferHQ python introduction

Working with the Python Scripting API
http://www.gafferhq.org/documentation/1.0.2.0/WorkingWithThePythonScriptingAPI/index.html

Node Graph editing in Python
https://www.gafferhq.org/documentation/1.0.0.0/WorkingWithThePythonScriptingAPI/TutorialNodeGraphEditingInPython/index.html

Common operations
https://www.gafferhq.org/documentation/1.0.0.0/Reference/ScriptingReference/CommonOperations/index.html

Scripting box nodes
https://blog.gafferhq.org/?p=278

Dev and pipe tips
https://blog.gafferhq.org/?cat=35

 

import GafferScene
import Gaffer

# return a list of selections
# (nodes HAVE TO BE selected for the following)
sel = root.selection() # gaffer standard set

list(sel)
sel[0].typeName()
dir( sel[0] )
sel[0].getName()
sel.clear()
root.removeChild( sel[0] )

# store the selected nodes in a variable
>>> sel = root.selection()
>>> myGroup = sel[0]
>>> light = sel[1]

# set location name
myGroup['name'].setValue('groupLocation')
light['name'].setValue('photometricLightLocation')
# connect a node to a group
>>> myGroup['in'][0].setInput( light['out'] )

# return the node/port attached to a group port
>>> myGroup['in'][0].childNames('/')
photometricLightLocation

>>> myGroup['in'][0].getInput().fullName()
>>> myGroup['in'][0].source().fullName()
gui.scripts.ScriptNode.lighting_in1.PhotometricLightNode.out

# return the full name of one of the objects
# attached to the out port
>>> light['out'].outputs()[0].fullName()
gui.scripts.ScriptNode.lighting_in1.GroupNode.in.in0

>>> light
GafferArnold.ArnoldLight( "PhotometricLightNode" )

>>> light['out'].childNames('')
photometricLightLocation

>>> light['out'].outputs()[0].node()
GafferScene.Group( "Group" )

Share: