Using Link Nodes

Link Nodes allow you to make a linked copy of a node, and have changes updated in both nodes, whilst optionally being able to override any of the knobs.

Link Nodes are useful in many workflows in Nuke - similar to a clone but more versatile, and are designed with multishot workflows in mind.

Create a Link Node

To create a Link Node, select the node you want to make a link node from and press Alt+L, or go to the menu bar and select Edit > Link.

A Link Node will be created nearby, which will appear as a duplicate node. Multiple selection is supported with this function.

The knobs on the node will be matched both ways, similar to a clone node.

A new column appears on the Link Node, showing options for overriding each knob.

To override a knob, click the square icon in the left hand column, next to the knob you wish to override. A yellow filled-in square indicates that the knob has been overridden, and it will be decoupled from the corresponding knob on the other node.

When any knob is overridden on the link node, an override icon will also appear to the left of the node.

Nodes often have multiple knobs in a row, and these can be individually overridden using the pop-up table. Rows with multiple knobs can be identified by the multiple-override icon.

Unlink a Link Node

To Unlink a node, select the node you want to unlink from and go to the menu bar and select Edit > Unlink. Multiple selection is also supported with this function.

A link node that has been unlinked becomes an ordinary node, retaining the link node knob values.

Be aware that certain procedures will also result in the unlinking of a link node. These include:

Deleting the node a linked node is linked to. A pop-up will be shown before this occurs.

Cross boundary links are not permitted for LiveGroups, Gizmos and Precomps. A cross boundary link is where one part of a link exists in a different group. The following situations will result in an unlink prompt:

Copying a node or it's link into a LiveGroup, causing a cross boundary link.

Exporting to gizmo a group that contains a cross boundary link.

Creating a precomp that would result in a cross boundary link.

If a Link Node for any reason cannot find a node to link to, it is considered unresolved and will be unlinked.

Copy As Links

Copy As Links allows you to copy a set of nodes and paste link nodes, respectively linked against the copied set of nodes, under the cursor.

Select the nodes you wish to copy, select Edit > Copy As Links and Edit > Paste at the intended location. This differs from regular linking which creates the link node immediately and automatically places it. This can be used for example, to place link nodes into a group view by first clicking into the group view before pasting.

Arrow customization

You can customize the color of the link node arrows in the Edit > Preferences > Node Graph.

Nodes not supported for linking

Linking is not supported between certain node types, this includes but is not limited to:

Clone

Read

DeepRead

DeepWrite

DeepExpression

Write

GeoExport

ReadGeo

WriteGeo

BlinkScript

Camera

Axis

Light

ScanlineRender2

GeoSetVariant

Inference

ModelBuilder

UnrealReader

GenerateLUT

Vectorfield

Viewer

VariableSwitch

Note:  To be fixed in future releases: Grouping a node with a link connection will break the link.

Overrides via Python

Overrides can also be set via Python.

The code below is an example of how to use Link Nodes in Python:16.0

Python

# create a grade
grade = nuke.createNode("Grade")

# make a link node from this grade
link_grade = nuke.link(grade)

# check it is linked:
link_grade.isLinked()
# Result: True

# override a knob
blackpoint_knob = link_grade.knob("blackpoint")
link_grade.overrideKnob(blackpoint_knob)
blackpoint_knob.setValue(0.5)

# remove the override
link_grade.removeOverrideKnob(blackpoint_knob)

# find the node this is linked to
original_grade = link_grade.getLink()
original_grade.name()
# Result: Grade1

# find the dependent link nodes of this grade
dependent_links = original_grade.dependencies(nuke.LINKNODE_INPUTS)
# Result: [ Grade2 ]

# unlink
link_grade.unlink()
link_grade.isLinked()
# Result: False

For more information on the methods used, see the Python Reference Guide.