Skip to content

Instantly share code, notes, and snippets.

@tokejepsen
Last active November 25, 2020 10:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tokejepsen/f6dee3e880410c9182dfbe494e5e654a to your computer and use it in GitHub Desktop.
Save tokejepsen/f6dee3e880410c9182dfbe494e5e654a to your computer and use it in GitHub Desktop.
Nuke: Per Shot Grade
import nuke
def main(node):
node["selected"].setValue(False)
average_intensity = 0
keys = 0
for channel in node["intensitydata"].animations():
for key in channel.keys():
average_intensity += key.y
keys += 1
average_intensity /= keys
# Disable per frame grade node.
per_frame_node = node.dependent(nuke.INPUTS)[0]
per_frame_node["disable"].setValue(True)
# Create per shot grade node.
per_shot_node = nuke.createNode("Grade")
per_shot_node["selected"].setValue(False)
per_shot_node.setInput(0, per_frame_node)
per_frame_node.dependent(nuke.INPUTS)[0].setInput(0, per_shot_node)
per_shot_node["xpos"].setValue(per_frame_node["xpos"].value() + 100)
per_shot_node["ypos"].setValue(per_frame_node["ypos"].value())
per_shot_node["white"].setValue(nuke.toNode("Target_Intensity")["target_intensity"].value() / average_intensity)
curvetool_nodes = []
for node in nuke.selectedNodes():
node["selected"].setValue(False)
if node.Class() != "CurveTool":
continue
curvetool_nodes.append(node)
for node in curvetool_nodes:
main(node)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment