summaryrefslogtreecommitdiff
path: root/share/nuke/ocionuke/viewer.py
diff options
context:
space:
mode:
Diffstat (limited to 'share/nuke/ocionuke/viewer.py')
-rw-r--r--share/nuke/ocionuke/viewer.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/share/nuke/ocionuke/viewer.py b/share/nuke/ocionuke/viewer.py
new file mode 100644
index 0000000..883525a
--- /dev/null
+++ b/share/nuke/ocionuke/viewer.py
@@ -0,0 +1,50 @@
+import nuke
+
+
+def register_viewers(also_remove = "default"):
+ """Registers the a viewer process for each display device/view, and
+ sets the default viewer process.
+
+ ``also_remove`` can be set to either:
+
+ - "default" to remove the default sRGB/rec709 viewer processes
+ - "all" to remove all processes
+ - "none" to leave existing viewer processes untouched
+ """
+
+ if also_remove not in ("default", "none", "all"):
+ raise ValueError("also_remove should be set to 'default', 'none' or 'all'")
+
+ if also_remove == "default":
+ nuke.ViewerProcess.unregister('rec709')
+ nuke.ViewerProcess.unregister('sRGB')
+ nuke.ViewerProcess.unregister('None')
+ elif also_remove == "all":
+ # Unregister all processes, including None, which should be defined in config.ocio
+ for curname in nuke.ViewerProcess.registeredNames():
+ nuke.ViewerProcess.unregister(curname)
+
+ # Formats the display and transform, e.g "Film1D (sRGB)"
+ DISPLAY_UI_FORMAT = "%(view)s (%(display)s)"
+
+ import PyOpenColorIO as OCIO
+ config = OCIO.GetCurrentConfig()
+
+ # For every display, loop over every view
+ for display in config.getDisplays():
+ for view in config.getViews(display):
+ # Register the node
+ nuke.ViewerProcess.register(
+ name = DISPLAY_UI_FORMAT % {'view': view, "display": display},
+ call = nuke.nodes.OCIODisplay,
+ args = (),
+ kwargs = {"display": display, "view": view, "layer": "all"})
+
+
+ # Get the default display and view, set it as the default used on Nuke startup
+ defaultDisplay = config.getDefaultDisplay()
+ defaultView = config.getDefaultView(defaultDisplay)
+
+ nuke.knobDefault(
+ "Viewer.viewerProcess",
+ DISPLAY_UI_FORMAT % {'view': defaultView, "display": defaultDisplay})