diff --git a/openpype/hosts/nuke/plugins/publish/extract_thumbnail.py b/openpype/hosts/nuke/plugins/publish/extract_thumbnail.py
index f391ca1e7c..21eefda249 100644
--- a/openpype/hosts/nuke/plugins/publish/extract_thumbnail.py
+++ b/openpype/hosts/nuke/plugins/publish/extract_thumbnail.py
@@ -5,6 +5,8 @@ import pyblish.api
from openpype.pipeline import publish
from openpype.hosts.nuke import api as napi
+from openpype.hosts.nuke.api.lib import set_node_knobs_from_settings
+
if sys.version_info[0] >= 3:
unicode = str
@@ -28,7 +30,7 @@ class ExtractThumbnail(publish.Extractor):
bake_viewer_process = True
bake_viewer_input_process = True
nodes = {}
-
+ reposition_nodes = None
def process(self, instance):
if instance.data.get("farm"):
@@ -123,18 +125,32 @@ class ExtractThumbnail(publish.Extractor):
temporary_nodes.append(rnode)
previous_node = rnode
- reformat_node = nuke.createNode("Reformat")
- ref_node = self.nodes.get("Reformat", None)
- if ref_node:
- for k, v in ref_node:
- self.log.debug("k, v: {0}:{1}".format(k, v))
- if isinstance(v, unicode):
- v = str(v)
- reformat_node[k].setValue(v)
+ if self.reposition_nodes is None:
+ # [deprecated] create reformat node old way
+ reformat_node = nuke.createNode("Reformat")
+ ref_node = self.nodes.get("Reformat", None)
+ if ref_node:
+ for k, v in ref_node:
+ self.log.debug("k, v: {0}:{1}".format(k, v))
+ if isinstance(v, unicode):
+ v = str(v)
+ reformat_node[k].setValue(v)
- reformat_node.setInput(0, previous_node)
- previous_node = reformat_node
- temporary_nodes.append(reformat_node)
+ reformat_node.setInput(0, previous_node)
+ previous_node = reformat_node
+ temporary_nodes.append(reformat_node)
+ else:
+ # create reformat node new way
+ for repo_node in self.reposition_nodes:
+ node_class = repo_node["node_class"]
+ knobs = repo_node["knobs"]
+ node = nuke.createNode(node_class)
+ set_node_knobs_from_settings(node, knobs)
+
+ # connect in order
+ node.setInput(0, previous_node)
+ previous_node = node
+ temporary_nodes.append(node)
# only create colorspace baking if toggled on
if bake_viewer_process:
diff --git a/openpype/settings/defaults/project_settings/nuke.json b/openpype/settings/defaults/project_settings/nuke.json
index 85dee73176..f01bdf7d50 100644
--- a/openpype/settings/defaults/project_settings/nuke.json
+++ b/openpype/settings/defaults/project_settings/nuke.json
@@ -358,12 +358,12 @@
"optional": true,
"active": true
},
- "ValidateGizmo": {
+ "ValidateBackdrop": {
"enabled": true,
"optional": true,
"active": true
},
- "ValidateBackdrop": {
+ "ValidateGizmo": {
"enabled": true,
"optional": true,
"active": true
@@ -401,7 +401,39 @@
false
]
]
- }
+ },
+ "reposition_nodes": [
+ {
+ "node_class": "Reformat",
+ "knobs": [
+ {
+ "type": "text",
+ "name": "type",
+ "value": "to format"
+ },
+ {
+ "type": "text",
+ "name": "format",
+ "value": "HD_1080"
+ },
+ {
+ "type": "text",
+ "name": "filter",
+ "value": "Lanczos6"
+ },
+ {
+ "type": "bool",
+ "name": "black_outside",
+ "value": true
+ },
+ {
+ "type": "bool",
+ "name": "pbb",
+ "value": false
+ }
+ ]
+ }
+ ]
},
"ExtractReviewData": {
"enabled": false
diff --git a/openpype/settings/entities/schemas/projects_schema/schemas/schema_nuke_publish.json b/openpype/settings/entities/schemas/projects_schema/schemas/schema_nuke_publish.json
index ce9fa04c6a..3019c9b1b5 100644
--- a/openpype/settings/entities/schemas/projects_schema/schemas/schema_nuke_publish.json
+++ b/openpype/settings/entities/schemas/projects_schema/schemas/schema_nuke_publish.json
@@ -158,10 +158,43 @@
"label": "Nodes",
"collapsible": true,
"children": [
+ {
+ "type": "label",
+ "label": "Nodes attribute will be deprecated in future releases. Use reposition_nodes instead."
+ },
{
"type": "raw-json",
"key": "nodes",
- "label": "Nodes"
+ "label": "Nodes [depricated]"
+ },
+ {
+ "type": "label",
+ "label": "Reposition knobs supported only. You can add multiple reformat nodes
and set their knobs. Order of reformat nodes is important. First reformat node
will be applied first and last reformat node will be applied last."
+ },
+ {
+ "key": "reposition_nodes",
+ "type": "list",
+ "label": "Reposition nodes",
+ "object_type": {
+ "type": "dict",
+ "children": [
+ {
+ "key": "node_class",
+ "label": "Node class",
+ "type": "text"
+ },
+ {
+ "type": "schema_template",
+ "name": "template_nuke_knob_inputs",
+ "template_data": [
+ {
+ "label": "Node knobs",
+ "key": "knobs"
+ }
+ ]
+ }
+ ]
+ }
}
]
}