diff --git a/openpype/hosts/nuke/api/plugin.py b/openpype/hosts/nuke/api/plugin.py
index a0e1525cd0..adbe43e481 100644
--- a/openpype/hosts/nuke/api/plugin.py
+++ b/openpype/hosts/nuke/api/plugin.py
@@ -21,6 +21,9 @@ from openpype.pipeline import (
CreatedInstance,
get_current_task_name
)
+from openpype.lib.transcoding import (
+ VIDEO_EXTENSIONS
+)
from .lib import (
INSTANCE_DATA_KNOB,
Knobby,
@@ -801,6 +804,8 @@ class ExporterReviewMov(ExporterReview):
self.log.info("File info was set...")
self.file = self.fhead + self.name + ".{}".format(self.ext)
+ if self.ext != VIDEO_EXTENSIONS:
+ self.file = os.path.basename(self.path_in)
self.path = os.path.join(
self.staging_dir, self.file).replace("\\", "/")
diff --git a/openpype/hosts/nuke/plugins/publish/extract_review_data_mov.py b/openpype/hosts/nuke/plugins/publish/extract_review_data_mov.py
index 956d1a54a3..1568a2de9b 100644
--- a/openpype/hosts/nuke/plugins/publish/extract_review_data_mov.py
+++ b/openpype/hosts/nuke/plugins/publish/extract_review_data_mov.py
@@ -8,7 +8,7 @@ from openpype.hosts.nuke.api import plugin
from openpype.hosts.nuke.api.lib import maintained_selection
-class ExtractReviewDataMov(publish.Extractor):
+class ExtractReviewDataBakingStreams(publish.Extractor):
"""Extracts movie and thumbnail with baked in luts
must be run after extract_render_local.py
diff --git a/openpype/settings/ayon_settings.py b/openpype/settings/ayon_settings.py
index 9a4f0607e0..b7fcaa1216 100644
--- a/openpype/settings/ayon_settings.py
+++ b/openpype/settings/ayon_settings.py
@@ -748,7 +748,19 @@ def _convert_nuke_project_settings(ayon_settings, output):
)
new_review_data_outputs = {}
- for item in ayon_publish["ExtractReviewDataMov"]["outputs"]:
+ outputs_settings = None
+ # just in case that the users having old presets in outputs setting
+ deprecrated_review_settings = ayon_publish["ExtractReviewDataMov"]
+ current_review_settings = (
+ ayon_publish["ExtractReviewDataBakingStreams"]
+ )
+ if deprecrated_review_settings["outputs"] == (
+ current_review_settings["outputs"]):
+ outputs_settings = current_review_settings["outputs"]
+ else:
+ outputs_settings = deprecrated_review_settings["outputs"]
+
+ for item in outputs_settings:
item_filter = item["filter"]
if "product_names" in item_filter:
item_filter["subsets"] = item_filter.pop("product_names")
@@ -767,7 +779,12 @@ def _convert_nuke_project_settings(ayon_settings, output):
name = item.pop("name")
new_review_data_outputs[name] = item
- ayon_publish["ExtractReviewDataMov"]["outputs"] = new_review_data_outputs
+
+ if deprecrated_review_settings["outputs"] == (
+ current_review_settings["outputs"]):
+ current_review_settings["outputs"] = new_review_data_outputs
+ else:
+ deprecrated_review_settings["outputs"] = new_review_data_outputs
collect_instance_data = ayon_publish["CollectInstanceData"]
if "sync_workfile_version_on_product_types" in collect_instance_data:
diff --git a/openpype/settings/defaults/project_settings/nuke.json b/openpype/settings/defaults/project_settings/nuke.json
index 7961e77113..fac78dbcd5 100644
--- a/openpype/settings/defaults/project_settings/nuke.json
+++ b/openpype/settings/defaults/project_settings/nuke.json
@@ -501,6 +501,60 @@
}
}
},
+ "ExtractReviewDataBakingStreams": {
+ "enabled": true,
+ "viewer_lut_raw": false,
+ "outputs": {
+ "baking": {
+ "filter": {
+ "task_types": [],
+ "families": [],
+ "subsets": []
+ },
+ "read_raw": false,
+ "viewer_process_override": "",
+ "bake_viewer_process": true,
+ "bake_viewer_input_process": true,
+ "reformat_nodes_config": {
+ "enabled": 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
+ }
+ ]
+ }
+ ]
+ },
+ "extension": "mov",
+ "add_custom_tags": []
+ }
+ }
+ },
"ExtractSlateFrame": {
"viewer_lut_raw": false,
"key_value_mapping": {
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 f006392bef..0f366d55ba 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
@@ -371,6 +371,151 @@
]
},
+ {
+ "type": "label",
+ "label": "^ Settings and for ExtractReviewDataMov is deprecated and will be soon removed.
Please use ExtractReviewDataBakingStreams instead."
+ },
+ {
+ "type": "dict",
+ "collapsible": true,
+ "checkbox_key": "enabled",
+ "key": "ExtractReviewDataBakingStreams",
+ "label": "ExtractReviewDataBakingStreams",
+ "is_group": true,
+ "children": [
+ {
+ "type": "boolean",
+ "key": "enabled",
+ "label": "Enabled"
+ },
+ {
+ "type": "boolean",
+ "key": "viewer_lut_raw",
+ "label": "Viewer LUT raw"
+ },
+ {
+ "key": "outputs",
+ "label": "Output Definitions",
+ "type": "dict-modifiable",
+ "highlight_content": true,
+ "object_type": {
+ "type": "dict",
+ "children": [
+ {
+ "type": "dict",
+ "collapsible": false,
+ "key": "filter",
+ "label": "Filtering",
+ "children": [
+ {
+ "key": "task_types",
+ "label": "Task types",
+ "type": "task-types-enum"
+ },
+ {
+ "key": "families",
+ "label": "Families",
+ "type": "list",
+ "object_type": "text"
+ },
+ {
+ "key": "subsets",
+ "label": "Subsets",
+ "type": "list",
+ "object_type": "text"
+ }
+ ]
+ },
+ {
+ "type": "separator"
+ },
+ {
+ "type": "boolean",
+ "key": "read_raw",
+ "label": "Read colorspace RAW",
+ "default": false
+ },
+ {
+ "type": "text",
+ "key": "viewer_process_override",
+ "label": "Viewer Process colorspace profile override"
+ },
+ {
+ "type": "boolean",
+ "key": "bake_viewer_process",
+ "label": "Bake Viewer Process"
+ },
+ {
+ "type": "boolean",
+ "key": "bake_viewer_input_process",
+ "label": "Bake Viewer Input Process (LUTs)"
+ },
+ {
+ "type": "separator"
+ },
+ {
+ "key": "reformat_nodes_config",
+ "type": "dict",
+ "label": "Reformat Nodes",
+ "collapsible": true,
+ "checkbox_key": "enabled",
+ "children": [
+ {
+ "type": "boolean",
+ "key": "enabled",
+ "label": "Enabled"
+ },
+ {
+ "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"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "separator"
+ },
+ {
+ "type": "text",
+ "key": "extension",
+ "label": "Write node file type"
+ },
+ {
+ "key": "add_custom_tags",
+ "label": "Add custom tags",
+ "type": "list",
+ "object_type": "text"
+ }
+ ]
+ }
+ }
+
+ ]
+ },
{
"type": "dict",
"collapsible": true,
diff --git a/server_addon/nuke/server/settings/publish_plugins.py b/server_addon/nuke/server/settings/publish_plugins.py
index c78685534f..423448219d 100644
--- a/server_addon/nuke/server/settings/publish_plugins.py
+++ b/server_addon/nuke/server/settings/publish_plugins.py
@@ -165,7 +165,7 @@ class BakingStreamModel(BaseSettingsModel):
title="Custom tags", default_factory=list)
-class ExtractReviewDataMovModel(BaseSettingsModel):
+class ExtractReviewBakingStreamsModel(BaseSettingsModel):
enabled: bool = Field(title="Enabled")
viewer_lut_raw: bool = Field(title="Viewer lut raw")
outputs: list[BakingStreamModel] = Field(
@@ -266,9 +266,9 @@ class PublishPuginsModel(BaseSettingsModel):
title="Extract Review Data Lut",
default_factory=ExtractReviewDataLutModel
)
- ExtractReviewDataMov: ExtractReviewDataMovModel = Field(
- title="Extract Review Data Mov",
- default_factory=ExtractReviewDataMovModel
+ ExtractReviewDataBakingStreams: ExtractReviewBakingStreamsModel = Field(
+ title="Extract Review Data Baking Streams",
+ default_factory=ExtractReviewBakingStreamsModel
)
ExtractSlateFrame: ExtractSlateFrameModel = Field(
title="Extract Slate Frame",
@@ -410,7 +410,7 @@ DEFAULT_PUBLISH_PLUGIN_SETTINGS = {
"ExtractReviewDataLut": {
"enabled": False
},
- "ExtractReviewDataMov": {
+ "ExtractReviewDataBakingStreams": {
"enabled": True,
"viewer_lut_raw": False,
"outputs": [
diff --git a/website/docs/project_settings/settings_project_global.md b/website/docs/project_settings/settings_project_global.md
index 5ddf247d98..9092ccdcdf 100644
--- a/website/docs/project_settings/settings_project_global.md
+++ b/website/docs/project_settings/settings_project_global.md
@@ -189,10 +189,10 @@ A profile may generate multiple outputs from a single input. Each output must de
- Profile filtering defines which group of output definitions is used but output definitions may require more specific filters on their own.
- They may filter by subset name (regex can be used) or publish families. Publish families are more complex as are based on knowing code base.
- Filtering by custom tags -> this is used for targeting to output definitions from other extractors using settings (at this moment only Nuke bake extractor can target using custom tags).
- - Nuke extractor settings path: `project_settings/nuke/publish/ExtractReviewDataMov/outputs/baking/add_custom_tags`
+ - Nuke extractor settings path: `project_settings/nuke/publish/ExtractReviewDataBakingStreams/outputs/baking/add_custom_tags`
- Filtering by input length. Input may be video, sequence or single image. It is possible that `.mp4` should be created only when input is video or sequence and to create review `.png` when input is single frame. In some cases the output should be created even if it's single frame or multi frame input.
-
+
### Extract Burnin
Plugin is responsible for adding burnins into review representations.
@@ -226,13 +226,13 @@ A burnin profile may set multiple burnin outputs from one input. The burnin's na
| **Bottom Centered** | Bottom center content. | str | "{username}" |
| **Bottom Right** | Bottom right corner content. | str | "{frame_start}-{current_frame}-{frame_end}" |
-Each burnin profile can be configured with additional family filtering and can
-add additional tags to the burnin representation, these can be configured under
+Each burnin profile can be configured with additional family filtering and can
+add additional tags to the burnin representation, these can be configured under
the profile's **Additional filtering** section.
:::note Filename suffix
-The filename suffix is appended to filename of the source representation. For
-example, if the source representation has suffix **"h264"** and the burnin
+The filename suffix is appended to filename of the source representation. For
+example, if the source representation has suffix **"h264"** and the burnin
suffix is **"client"** then the final suffix is **"h264_client"**.
:::
diff --git a/website/docs/pype2/admin_presets_plugins.md b/website/docs/pype2/admin_presets_plugins.md
index 6a057f4bb4..a869ead819 100644
--- a/website/docs/pype2/admin_presets_plugins.md
+++ b/website/docs/pype2/admin_presets_plugins.md
@@ -534,8 +534,7 @@ Plugin responsible for generating thumbnails with colorspace controlled by Nuke.
}
```
-### `ExtractReviewDataMov`
-
+### `ExtractReviewDataBakingStreams`
`viewer_lut_raw` **true** will publish the baked mov file without any colorspace conversion. It will be baked with the workfile workspace. This can happen in case the Viewer input process uses baked screen space luts.
#### baking with controlled colorspace