Gaffer visits Welikia

Eric Mehl of Hypothetical has been busy using Gaffer’s procedural scene generation and rendering to recreate Welikia, the ecosystem of New York City before settlement by Europeans. There’s an overview of the work on Hypothetical’s website, and a discussion of the Gaffer workflow on their blog. Windows users might know Eric from his Herculean efforts to port Gaffer to Windows, and his integration of Deadline with Gaffer. Thanks for sharing, Eric!

Stupid Gaffer Trick


Save your work first. And don’t expand all!

Execute the following via the PythonEditor :

import GafferScene
n = GafferScene.ShaderAssignment()
n["in"]["childNames"].setValue( IECore.InternedStringVectorData( [ 
    "turtles", "all", "the", "way", "down"
] ) )
root.addChild( n )

Then look at the innocent looking ShaderAssignment node in the HierarchyView, and marvel at its recursive uselessness.

Turtles all the way down!

How does this work? Answers on the back of a postcard please…

New Gaffer Examples

EZSurfacing Tools
Barbershop from “Agent 327” by Blender Institute, rebuilt and rendered in Gaffer by Ezequiel Mastrasso.

Let’s face it, there’s only so much you can learn about Gaffer from a ball of cows. Wouldn’t it be great if there were some more comprehensive examples that resembled how you might work in a studio environment? Something with real assets and light rigs, that showed how to build a multi-shot workflow using a single template script? Well, now there is!

Continue reading “New Gaffer Examples”

0.56.0: New set expression operators

Gaffer allows scene locations to be organised into sets, and then uses a simple expression language to combine sets for use in light linking, shader assignments and the like. In this short post we’ll discuss a historical limitation of set expressions and present some useful improvements made in Gaffer

Continue reading “0.56.0: New set expression operators”

What’s cooking? : Spreadsheet node

A common pattern that arises in production is the “shot-specific branch switcher”, typically using a Switch or NameSwitch node to choose the right branch for the current shot. In the fictitious example below, this pattern is employed to select the right render settings per shot, with an ArnoldOptions and StandardOptions node on each branch.

Continue reading “What’s cooking? : Spreadsheet node”