From 2bf86369801a0d6e9d6041a35e839745517b1ccf Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Tue, 30 Apr 2024 14:19:23 +0300 Subject: [PATCH 01/42] update inline docs for applications and only_available --- server_addon/applications/server/settings.py | 21 ++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/server_addon/applications/server/settings.py b/server_addon/applications/server/settings.py index 5743e9f471..53b547ce13 100644 --- a/server_addon/applications/server/settings.py +++ b/server_addon/applications/server/settings.py @@ -144,7 +144,17 @@ class ToolGroupModel(BaseSettingsModel): class ApplicationsSettings(BaseSettingsModel): - """Applications settings""" + """Applications settings + + Define applications are available to your studio, locations of their + executables, and their additional environments. + + AYON uses the following definitions to populate the applications list + in project anatomy > attributes. + So, You'd still need modify your project anatomy settings. + + Use shortcut **a+a** to navigate to project anatomy. + """ maya: AppGroupWithPython = SettingsField( default_factory=AppGroupWithPython, title="Autodesk Maya") @@ -210,7 +220,14 @@ class ApplicationsAddonSettings(BaseSettingsModel): scope=["studio"] ) only_available: bool = SettingsField( - True, title="Show only available applications") + True, + title="Show only available applications", + description="Enable to show available applications in AYON Launcher" + " i.e. Show them if they are installed on the user" + " machine. Note: AYON Launcher shows only the selected" + " applications in project anatomy and this is another" + " filter to ignore uninstalled apps." + ) @validator("tool_groups") def validate_unique_name(cls, value): From 639d83755f3b5d37d58c1fbf04525020d4c49f71 Mon Sep 17 00:00:00 2001 From: Mustafa Taher Date: Tue, 30 Apr 2024 16:24:19 +0300 Subject: [PATCH 02/42] Update the description of `only_available` Co-authored-by: Roy Nieterau --- server_addon/applications/server/settings.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/server_addon/applications/server/settings.py b/server_addon/applications/server/settings.py index 53b547ce13..365f42789f 100644 --- a/server_addon/applications/server/settings.py +++ b/server_addon/applications/server/settings.py @@ -222,11 +222,10 @@ class ApplicationsAddonSettings(BaseSettingsModel): only_available: bool = SettingsField( True, title="Show only available applications", - description="Enable to show available applications in AYON Launcher" - " i.e. Show them if they are installed on the user" - " machine. Note: AYON Launcher shows only the selected" - " applications in project anatomy and this is another" - " filter to ignore uninstalled apps." + description="Enable to show only available applications in AYON Launcher" + " for which the executable paths are found on the running machine." + " This applies as an additional filter to the applications defined in a " + " project's anatomy settings to ignore unavailable applications." ) @validator("tool_groups") From 914448a2e779e251334af007b1ac591de0e7e4f8 Mon Sep 17 00:00:00 2001 From: Mustafa Taher Date: Tue, 30 Apr 2024 16:25:11 +0300 Subject: [PATCH 03/42] Remove shortcut from docstring Co-authored-by: Roy Nieterau --- server_addon/applications/server/settings.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/server_addon/applications/server/settings.py b/server_addon/applications/server/settings.py index 365f42789f..abfc2c67b7 100644 --- a/server_addon/applications/server/settings.py +++ b/server_addon/applications/server/settings.py @@ -152,8 +152,6 @@ class ApplicationsSettings(BaseSettingsModel): AYON uses the following definitions to populate the applications list in project anatomy > attributes. So, You'd still need modify your project anatomy settings. - - Use shortcut **a+a** to navigate to project anatomy. """ maya: AppGroupWithPython = SettingsField( From 5149802256f3f1d2b1dc07a87e87ca259ae90fda Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Tue, 30 Apr 2024 16:26:56 +0300 Subject: [PATCH 04/42] applications: update ApplicationsSettings --- server_addon/applications/server/settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server_addon/applications/server/settings.py b/server_addon/applications/server/settings.py index abfc2c67b7..9e915b6152 100644 --- a/server_addon/applications/server/settings.py +++ b/server_addon/applications/server/settings.py @@ -146,8 +146,8 @@ class ToolGroupModel(BaseSettingsModel): class ApplicationsSettings(BaseSettingsModel): """Applications settings - Define applications are available to your studio, locations of their - executables, and their additional environments. + Define applications available to your studio, locations of their + executables, and their additional environment variables. AYON uses the following definitions to populate the applications list in project anatomy > attributes. From 46337deb1a9db4d601c7c3a3fa9c3d12e2253942 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 20 May 2024 17:35:53 +0200 Subject: [PATCH 05/42] Update colorspace assignment in ExporterReviewMov class and remove unnecessary line adding custom tags in ExtractReviewIntermediates class. - Update colorspace assignment to use a method - Remove redundant line adding custom tags --- client/ayon_core/hosts/nuke/api/plugin.py | 3 ++- .../hosts/nuke/plugins/publish/extract_review_intermediates.py | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/plugin.py b/client/ayon_core/hosts/nuke/api/plugin.py index ec13104d4d..bb9d175e62 100644 --- a/client/ayon_core/hosts/nuke/api/plugin.py +++ b/client/ayon_core/hosts/nuke/api/plugin.py @@ -837,7 +837,8 @@ class ExporterReviewMov(ExporterReview): def generate_mov(self, farm=False, delete=True, **kwargs): # colorspace data - colorspace = None + colorspace = self.write_colorspace + # get colorspace settings # get colorspace data from context config_data, _ = get_colorspace_settings_from_publish_context( diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_intermediates.py b/client/ayon_core/hosts/nuke/plugins/publish/extract_review_intermediates.py index 82c7b6e4c5..f3dac3a82e 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_intermediates.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/extract_review_intermediates.py @@ -136,7 +136,6 @@ class ExtractReviewIntermediates(publish.Extractor): self, instance, o_name, o_data["extension"], multiple_presets) - o_data["add_custom_tags"].append("intermediate") delete = not o_data.get("publish", False) if instance.data.get("farm"): From f08443f844f1857a109e2342c37492f7f5018057 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 21 May 2024 17:45:57 +0800 Subject: [PATCH 06/42] supports exporting layer stack with specific channel & output with specific channel --- .../hosts/substancepainter/api/lib.py | 57 +++++++++++++++++++ .../plugins/create/create_textures.py | 39 +++++++++++-- .../publish/collect_textureset_images.py | 6 +- .../plugins/publish/extract_textures.py | 29 ++++++---- 4 files changed, 113 insertions(+), 18 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index 64c39943ce..df70a72b13 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -3,6 +3,8 @@ import re import json from collections import defaultdict +import contextlib +import substance_painter as sp import substance_painter.project import substance_painter.resource import substance_painter.js @@ -640,3 +642,58 @@ def prompt_new_file_with_mesh(mesh_filepath): return return project_mesh + + +def get_export_presets_by_filtering(export_preset_name, channel_type_list): + new_maps = [] + + export_presets = get_export_presets() + resource_presets = substance_painter.export.list_resource_export_presets() + preset = next((preset for preset in resource_presets + if preset.resource_id.name == ( + export_presets[export_preset_name])), None) + + if preset is not None: + maps = preset.list_output_maps() + for channel_map in maps: + for n in channel_type_list: + if n in channel_map["fileName"]: + new_maps.append(channel_map) + # Create a new preset + return { + "exportPresets": [ + { + "name": export_preset_name, + "maps": new_maps + } + ], + } + return {} + + +@contextlib.contextmanager +def supsend_publish_layer_stack(node_ids, channel_type): + all_selected_nodes = [] + opacity_set_list = [] + stack = sp.textureset.get_active_stack() + stack_root_layers = sp.layerstack.get_root_layer_nodes(stack) + if node_ids and channel_type: + for node_id in node_ids: + node = sp.layerstack.get_node_by_uid(int(node_id)) + all_selected_nodes.append(node) + filtered_nodes = [node for node in stack_root_layers + if node not in all_selected_nodes] + for node in filtered_nodes: + for channel in channel_type: + chan = getattr(sp.textureset.ChannelType, channel) + opacity_set_list.append((chan, node.get_opacity(chan))) + try: + for node in filtered_nodes: + for channel, _ in opacity_set_list: + node.set_opacity(0.0, channel) + yield + finally: + for node in filtered_nodes: + for channel, opacity in opacity_set_list: + node.set_opacity(opacity, channel) + diff --git a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py index f46afadb5a..d36bf76568 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- """Creator plugin for creating textures.""" - from ayon_core.pipeline import CreatedInstance, Creator, CreatorError from ayon_core.lib import ( EnumDef, @@ -18,6 +17,7 @@ from ayon_core.hosts.substancepainter.api.pipeline import ( from ayon_core.hosts.substancepainter.api.lib import get_export_presets import substance_painter.project +import substance_painter as sp class CreateTextures(Creator): @@ -42,10 +42,20 @@ class CreateTextures(Creator): "exportFileFormat", "exportSize", "exportPadding", - "exportDilationDistance" + "exportDilationDistance", + "useCustomExportPreset", + "exportChannel" ]: if key in pre_create_data: creator_attributes[key] = pre_create_data[key] + #TODO: add the layer stack option + if sp.application.version_info()[0] >= 10 or ( + pre_create_data.get("use_selection")): + stack = sp.textureset.get_active_stack() + + instance_data["selected_node_id"] = [ + node_number.uid() for node_number in + sp.layerstack.get_selected_nodes(stack)] instance = self.create_instance_in_context(product_name, instance_data) @@ -88,8 +98,25 @@ class CreateTextures(Creator): return instance def get_instance_attr_defs(self): - + layer_stack_channel_enum = ["BaseColor", "Metallic", "Roughness", + "Normal", "Height", "Specular", + "SpecularEdgeColor", "Emissive", "Opacity", + "Displacement", "Glossiness", "Anisotropylevel", + "AO", "Anisotropyangle", "Transmissive", + "Reflection", "Diffuse", "Ior", + "Specularlevel", "BlendingMask", "Translucency", + "Scattering", "ScatterColor", "SheenOpacity", + "SheenRoughness", "SheenColor", "CoatOpacity", + "CoatColor", "CoatRoughness", "CoatSpecularLevel", + "CoatNormal"] return [ + EnumDef("exportChannel", + items=layer_stack_channel_enum, + multiselection=True, + default=None, + label="Export Channel(s)", + tooltip="Choose the channel which you " + "want to solely export"), EnumDef("exportPresetUrl", items=get_export_presets(), label="Output Template"), @@ -149,7 +176,6 @@ class CreateTextures(Creator): }, default=None, label="Size"), - EnumDef("exportPadding", items={ "passthrough": "No padding (passthrough)", @@ -172,4 +198,7 @@ class CreateTextures(Creator): def get_pre_create_attr_defs(self): # Use same attributes as for instance attributes - return self.get_instance_attr_defs() + return [ + BoolDef("use_selection", label="Use selection", + tooltip="Select Layer Stack(s) for exporting") + ] + self.get_instance_attr_defs() diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py b/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py index 20aaa56993..b90e77db80 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py @@ -8,6 +8,7 @@ import substance_painter.textureset from ayon_core.pipeline import publish from ayon_core.hosts.substancepainter.api.lib import ( get_parsed_export_maps, + get_export_presets_by_filtering, strip_template ) from ayon_core.pipeline.create import get_product_name @@ -207,5 +208,8 @@ class CollectTextureSet(pyblish.api.InstancePlugin): for key, value in dict(parameters).items(): if value is None: parameters.pop(key) - + channel_layer = creator_attrs.get("exportChannel", []) + if channel_layer: + maps = get_export_presets_by_filtering(preset_url, channel_layer) + config.update(maps) return config diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/extract_textures.py b/client/ayon_core/hosts/substancepainter/plugins/publish/extract_textures.py index 0fa7b52f45..973a62de7a 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/extract_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/extract_textures.py @@ -1,6 +1,6 @@ import substance_painter.export - from ayon_core.pipeline import KnownPublishError, publish +from ayon_core.hosts.substancepainter.api.lib import supsend_publish_layer_stack class ExtractTextures(publish.Extractor, @@ -25,19 +25,24 @@ class ExtractTextures(publish.Extractor, def process(self, instance): config = instance.data["exportConfig"] - result = substance_painter.export.export_project_textures(config) + creator_attrs = instance.data["creator_attributes"] + export_channel = creator_attrs.get("exportChannel", []) + node_ids = instance.data.get("selected_node_id", []) - if result.status != substance_painter.export.ExportStatus.Success: - raise KnownPublishError( - "Failed to export texture set: {}".format(result.message) - ) + with supsend_publish_layer_stack(node_ids, export_channel): + result = substance_painter.export.export_project_textures(config) - # Log what files we generated - for (texture_set_name, stack_name), maps in result.textures.items(): - # Log our texture outputs - self.log.info(f"Exported stack: {texture_set_name} {stack_name}") - for texture_map in maps: - self.log.info(f"Exported texture: {texture_map}") + if result.status != substance_painter.export.ExportStatus.Success: + raise KnownPublishError( + "Failed to export texture set: {}".format(result.message) + ) + + # Log what files we generated + for (texture_set_name, stack_name), maps in result.textures.items(): + # Log our texture outputs + self.log.info(f"Exported stack: {texture_set_name} {stack_name}") + for texture_map in maps: + self.log.info(f"Exported texture: {texture_map}") # We'll insert the color space data for each image instance that we # added into this texture set. The collector couldn't do so because From f3b1d345453bb4ea64325cb1c5a006dca0b28b40 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Wed, 22 May 2024 19:23:59 +0800 Subject: [PATCH 07/42] check substance version when adding use selection into setting & tooltips edition for export channel --- .../plugins/create/create_textures.py | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py index d36bf76568..402550b3e8 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py @@ -16,8 +16,8 @@ from ayon_core.hosts.substancepainter.api.pipeline import ( ) from ayon_core.hosts.substancepainter.api.lib import get_export_presets +import substance_painter import substance_painter.project -import substance_painter as sp class CreateTextures(Creator): @@ -49,13 +49,12 @@ class CreateTextures(Creator): if key in pre_create_data: creator_attributes[key] = pre_create_data[key] #TODO: add the layer stack option - if sp.application.version_info()[0] >= 10 or ( - pre_create_data.get("use_selection")): - stack = sp.textureset.get_active_stack() + if pre_create_data.get("use_selection"): + stack = substance_painter.textureset.get_active_stack() - instance_data["selected_node_id"] = [ - node_number.uid() for node_number in - sp.layerstack.get_selected_nodes(stack)] + instance_data["selected_node_id"] = [ + node_number.uid() for node_number in + substance_painter.layerstack.get_selected_nodes(stack)] instance = self.create_instance_in_context(product_name, instance_data) @@ -116,7 +115,9 @@ class CreateTextures(Creator): default=None, label="Export Channel(s)", tooltip="Choose the channel which you " - "want to solely export"), + "want to solely export. The value " + "is 'None' by default which exports " + "all channels"), EnumDef("exportPresetUrl", items=get_export_presets(), label="Output Template"), @@ -198,7 +199,10 @@ class CreateTextures(Creator): def get_pre_create_attr_defs(self): # Use same attributes as for instance attributes - return [ - BoolDef("use_selection", label="Use selection", - tooltip="Select Layer Stack(s) for exporting") - ] + self.get_instance_attr_defs() + selection_list = [] + if substance_painter.application.version_info()[0] >= 10: + selection_list = [ + BoolDef("use_selection", label="Use selection", + tooltip="Select Layer Stack(s) for exporting") + ] + return selection_list + self.get_instance_attr_defs() From 597f4a24a3a5b09d99e86c446508b856f7b62c00 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Wed, 22 May 2024 19:24:43 +0800 Subject: [PATCH 08/42] code clean up & rename the contextmanager function to set_layer_stack_opacity --- .../hosts/substancepainter/api/lib.py | 90 ++++++++++++------- 1 file changed, 60 insertions(+), 30 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index df70a72b13..d98b7bca1a 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -4,7 +4,7 @@ import json from collections import defaultdict import contextlib -import substance_painter as sp +import substance_painter import substance_painter.project import substance_painter.resource import substance_painter.js @@ -645,47 +645,77 @@ def prompt_new_file_with_mesh(mesh_filepath): def get_export_presets_by_filtering(export_preset_name, channel_type_list): + """Function to get export presets included with specific channels + requested by users. + + Args: + export_preset_name (str): Name of export preset + channel_type_list (list): A list of channel type requested by users + + Returns: + dict: export preset data + """ + new_maps = [] export_presets = get_export_presets() + export_preset_nice_name = export_presets[export_preset_name] resource_presets = substance_painter.export.list_resource_export_presets() - preset = next((preset for preset in resource_presets - if preset.resource_id.name == ( - export_presets[export_preset_name])), None) + preset = next( + ( + preset for preset in resource_presets + if preset.resource_id.name == export_preset_nice_name + ), None + ) + if preset is None: + return {} + maps = preset.list_output_maps() + for channel_map in maps: + for n in channel_type_list: + if not channel_map.get("fileName"): + continue - if preset is not None: - maps = preset.list_output_maps() - for channel_map in maps: - for n in channel_type_list: - if n in channel_map["fileName"]: - new_maps.append(channel_map) - # Create a new preset - return { - "exportPresets": [ - { - "name": export_preset_name, - "maps": new_maps - } - ], - } - return {} + if n in channel_map["fileName"]: + new_maps.append(channel_map) + # Create a new preset + return { + "exportPresets": [ + { + "name": export_preset_name, + "maps": new_maps + } + ], + } @contextlib.contextmanager -def supsend_publish_layer_stack(node_ids, channel_type): +def set_layer_stack_opacity(node_ids, channel_type): + """Function to set the opacity of the layer stack during + context + Args: + node_ids (list): A list of substance painter node ids + channel_type (list): A list of channel types + """ + all_selected_nodes = [] opacity_set_list = [] - stack = sp.textureset.get_active_stack() - stack_root_layers = sp.layerstack.get_root_layer_nodes(stack) - if node_ids and channel_type: - for node_id in node_ids: - node = sp.layerstack.get_node_by_uid(int(node_id)) - all_selected_nodes.append(node) - filtered_nodes = [node for node in stack_root_layers - if node not in all_selected_nodes] + stack = substance_painter.textureset.get_active_stack() + stack_root_layers = ( + substance_painter.layerstack.get_root_layer_nodes(stack) + ) + # Do nothing + if not node_ids or not channel_type: + yield + return + + for node_id in node_ids: + node = substance_painter.layerstack.get_node_by_uid(int(node_id)) + all_selected_nodes.append(node) + filtered_nodes = {node for node in stack_root_layers + if node not in all_selected_nodes} for node in filtered_nodes: for channel in channel_type: - chan = getattr(sp.textureset.ChannelType, channel) + chan = getattr(substance_painter.textureset.ChannelType, channel) opacity_set_list.append((chan, node.get_opacity(chan))) try: for node in filtered_nodes: From 2dd6c12390c7e3a1bb257a9e3c0ae85c848e9e87 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Wed, 22 May 2024 19:25:10 +0800 Subject: [PATCH 09/42] rename the contextlib function --- .../substancepainter/plugins/publish/extract_textures.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/extract_textures.py b/client/ayon_core/hosts/substancepainter/plugins/publish/extract_textures.py index 973a62de7a..361ad788ca 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/extract_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/extract_textures.py @@ -1,6 +1,6 @@ import substance_painter.export from ayon_core.pipeline import KnownPublishError, publish -from ayon_core.hosts.substancepainter.api.lib import supsend_publish_layer_stack +from ayon_core.hosts.substancepainter.api.lib import set_layer_stack_opacity class ExtractTextures(publish.Extractor, @@ -29,7 +29,7 @@ class ExtractTextures(publish.Extractor, export_channel = creator_attrs.get("exportChannel", []) node_ids = instance.data.get("selected_node_id", []) - with supsend_publish_layer_stack(node_ids, export_channel): + with set_layer_stack_opacity(node_ids, export_channel): result = substance_painter.export.export_project_textures(config) if result.status != substance_painter.export.ExportStatus.Success: From 9570d0baae3893bc9de594762f8e9d8c0abface8 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Wed, 22 May 2024 22:11:57 +0800 Subject: [PATCH 10/42] use dict as item values for export channel settings --- .../plugins/create/create_textures.py | 42 +++++++++++++------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py index 402550b3e8..a75aaf7cd3 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py @@ -97,20 +97,38 @@ class CreateTextures(Creator): return instance def get_instance_attr_defs(self): - layer_stack_channel_enum = ["BaseColor", "Metallic", "Roughness", - "Normal", "Height", "Specular", - "SpecularEdgeColor", "Emissive", "Opacity", - "Displacement", "Glossiness", "Anisotropylevel", - "AO", "Anisotropyangle", "Transmissive", - "Reflection", "Diffuse", "Ior", - "Specularlevel", "BlendingMask", "Translucency", - "Scattering", "ScatterColor", "SheenOpacity", - "SheenRoughness", "SheenColor", "CoatOpacity", - "CoatColor", "CoatRoughness", "CoatSpecularLevel", - "CoatNormal"] return [ EnumDef("exportChannel", - items=layer_stack_channel_enum, + items={ + "BaseColor": "Base Color", + "Metallic": "Metallic", + "Roughness": "Roughness", + "SpecularEdgeColor": "Specular Edge Color", + "Emissive": "Emissive", + "Opacity": "Opacity", + "Displacement": "Displacement", + "Glossiness": "Glossiness", + "Anisotropylevel": "Anisotropy Level", + "AO": "Ambient Occulsion", + "Anisotropyangle": "Anisotropy Angle", + "Transmissive": "Transmissive", + "Reflection": "Reflection", + "Diffuse": "Diffuse", + "Ior": "Index of Refraction", + "Specularlevel": "Specular Level", + "BlendingMask": "Blending Mask", + "Translucency": "Translucency", + "Scattering": "Scattering", + "ScatterColor": "Scatter Color", + "SheenOpacity": "Sheen Opacity", + "SheenRoughness": "Sheen Roughness", + "SheenColor": "Sheen Color", + "CoatOpacity": "Coat Opacity", + "CoatColor": "Coat Color", + "CoatRoughness": "Coat Roughness", + "CoatSpecularLevel": "Coat Specular Level", + "CoatNormal": "Coat Normal", + }, multiselection=True, default=None, label="Export Channel(s)", From 4d85f56193c359c4dbd6d69f1be0910bb89cce30 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Thu, 23 May 2024 12:28:46 +0300 Subject: [PATCH 11/42] revert changes in `Applications settings` docstring --- server_addon/applications/server/settings.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/server_addon/applications/server/settings.py b/server_addon/applications/server/settings.py index ec6b4ba1d7..6c131a5e9d 100644 --- a/server_addon/applications/server/settings.py +++ b/server_addon/applications/server/settings.py @@ -144,15 +144,7 @@ class ToolGroupModel(BaseSettingsModel): class ApplicationsSettings(BaseSettingsModel): - """Applications settings - - Define applications available to your studio, locations of their - executables, and their additional environment variables. - - AYON uses the following definitions to populate the applications list - in project anatomy > attributes. - So, You'd still need modify your project anatomy settings. - """ + """Applications settings""" maya: AppGroupWithPython = SettingsField( default_factory=AppGroupWithPython, title="Autodesk Maya") From a97a33af6eea5b76daa34046491cb0cce7132ac9 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Thu, 23 May 2024 18:21:37 +0800 Subject: [PATCH 12/42] add channel mapping setting into ayon project setting --- .../plugins/create/create_textures.py | 45 +++++---------- server_addon/substancepainter/package.py | 2 +- .../server/settings/creator_plugins.py | 56 +++++++++++++++++++ .../substancepainter/server/settings/main.py | 5 ++ 4 files changed, 75 insertions(+), 33 deletions(-) create mode 100644 server_addon/substancepainter/server/settings/creator_plugins.py diff --git a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py index a75aaf7cd3..3a6387d71d 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py @@ -28,9 +28,14 @@ class CreateTextures(Creator): icon = "picture-o" default_variant = "Main" + channel_mapping = [] + + def apply_settings(self, project_settings): + settings = project_settings["substancepainter"].get("create") # noqa + self.channel_mapping = settings["CreateTextures"].get("channel_mapping") + def create(self, product_name, instance_data, pre_create_data): - if not substance_painter.project.is_open(): raise CreatorError("Can't create a Texture Set instance without " "an open project.") @@ -48,7 +53,7 @@ class CreateTextures(Creator): ]: if key in pre_create_data: creator_attributes[key] = pre_create_data[key] - #TODO: add the layer stack option + if pre_create_data.get("use_selection"): stack = substance_painter.textureset.get_active_stack() @@ -97,38 +102,14 @@ class CreateTextures(Creator): return instance def get_instance_attr_defs(self): + export_channel_enum = { + item["value"]: item["name"] + for item in self.channel_mapping + } + return [ EnumDef("exportChannel", - items={ - "BaseColor": "Base Color", - "Metallic": "Metallic", - "Roughness": "Roughness", - "SpecularEdgeColor": "Specular Edge Color", - "Emissive": "Emissive", - "Opacity": "Opacity", - "Displacement": "Displacement", - "Glossiness": "Glossiness", - "Anisotropylevel": "Anisotropy Level", - "AO": "Ambient Occulsion", - "Anisotropyangle": "Anisotropy Angle", - "Transmissive": "Transmissive", - "Reflection": "Reflection", - "Diffuse": "Diffuse", - "Ior": "Index of Refraction", - "Specularlevel": "Specular Level", - "BlendingMask": "Blending Mask", - "Translucency": "Translucency", - "Scattering": "Scattering", - "ScatterColor": "Scatter Color", - "SheenOpacity": "Sheen Opacity", - "SheenRoughness": "Sheen Roughness", - "SheenColor": "Sheen Color", - "CoatOpacity": "Coat Opacity", - "CoatColor": "Coat Color", - "CoatRoughness": "Coat Roughness", - "CoatSpecularLevel": "Coat Specular Level", - "CoatNormal": "Coat Normal", - }, + items=export_channel_enum, multiselection=True, default=None, label="Export Channel(s)", diff --git a/server_addon/substancepainter/package.py b/server_addon/substancepainter/package.py index d445b0059f..bd71e1d67d 100644 --- a/server_addon/substancepainter/package.py +++ b/server_addon/substancepainter/package.py @@ -1,3 +1,3 @@ name = "substancepainter" title = "Substance Painter" -version = "0.1.1" +version = "0.1.2" diff --git a/server_addon/substancepainter/server/settings/creator_plugins.py b/server_addon/substancepainter/server/settings/creator_plugins.py new file mode 100644 index 0000000000..b16c9504aa --- /dev/null +++ b/server_addon/substancepainter/server/settings/creator_plugins.py @@ -0,0 +1,56 @@ +from ayon_server.settings import BaseSettingsModel, SettingsField + + +class ChannelMappingItemModel(BaseSettingsModel): + _layout = "compact" + name: str = SettingsField(title="Channel Type") + value: str = SettingsField(title="Channel Name") + + +class CreateTextureModel(BaseSettingsModel): + channel_mapping: list[ChannelMappingItemModel] = SettingsField( + default_factory=list, title="Channel Mapping") + + +class CreatorsModel(BaseSettingsModel): + CreateTextures: CreateTextureModel = SettingsField( + default_factory=CreateTextureModel, + title="Create Textures" + ) + + +DEFAULT_CREATOR_SETTINGS = { + "CreateTextures": { + "channel_mapping": [ + {"name": "Base Color", "value": "BaseColor"}, + {"name": "Metallic", "value": "Metallic"}, + {"name": "Specular Edge Color", + "value": "SpecularEdgeColor"}, + {"name": "Opacity", "value": "Opacity"}, + {"name": "Displacement", "value": "Displacement"}, + {"name": "Glossiness", "value": "Glossiness"}, + {"name": "Anisotropy Level", + "value": "Anisotropylevel"}, + {"name": "Ambient Occulsion", "value": "AO"}, + {"name": "Anisotropy Angle", + "value": "Anisotropyangle"}, + {"name": "Transmissive", "value": "Transmissive"}, + {"name": "Reflection", "value": "Reflection"}, + {"name": "Diffuse", "value": "Diffuse"}, + {"name": "Index of Refraction", "value": "Ior"}, + {"name": "Specular Level", "value": "Specularlevel"}, + {"name": "Blending Mask", "value": "BlendingMask"}, + {"name": "Translucency", "value": "Translucency"}, + {"name": "Scattering", "value": "Scattering"}, + {"name": "Scatter Color", "value": "ScatterColor"}, + {"name": "Sheen Opacity", "value": "SheenOpacity"}, + {"name": "Sheen Color", "value": "SheenColor"}, + {"name": "Coat Opacity", "value": "CoatOpacity"}, + {"name": "Coat Color", "value": "CoatColor"}, + {"name": "Coat Roughness", "value": "CoatRoughness"}, + {"name": "CoatSpecularLevel", + "value": "Coat Specular Level"}, + {"name": "CoatNormal", "value": "Coat Normal"} + ], + } +} \ No newline at end of file diff --git a/server_addon/substancepainter/server/settings/main.py b/server_addon/substancepainter/server/settings/main.py index 93523fd650..9a13d2c32f 100644 --- a/server_addon/substancepainter/server/settings/main.py +++ b/server_addon/substancepainter/server/settings/main.py @@ -1,5 +1,6 @@ from ayon_server.settings import BaseSettingsModel, SettingsField from .imageio import ImageIOSettings, DEFAULT_IMAGEIO_SETTINGS +from .creator_plugins import CreatorsModel, DEFAULT_CREATOR_SETTINGS from .load_plugins import LoadersModel, DEFAULT_LOADER_SETTINGS @@ -18,6 +19,8 @@ class SubstancePainterSettings(BaseSettingsModel): default_factory=list, title="Shelves" ) + create: CreatorsModel = SettingsField( + default_factory=DEFAULT_CREATOR_SETTINGS, title="Creators") load: LoadersModel = SettingsField( default_factory=DEFAULT_LOADER_SETTINGS, title="Loaders") @@ -25,5 +28,7 @@ class SubstancePainterSettings(BaseSettingsModel): DEFAULT_SPAINTER_SETTINGS = { "imageio": DEFAULT_IMAGEIO_SETTINGS, "shelves": [], + "create": DEFAULT_CREATOR_SETTINGS, "load": DEFAULT_LOADER_SETTINGS, + } From ced2ac05d059fa36726c1dd2b66ee89f4dbefae5 Mon Sep 17 00:00:00 2001 From: Kayla Man <64118225+moonyuet@users.noreply.github.com> Date: Thu, 23 May 2024 19:22:49 +0800 Subject: [PATCH 13/42] Update client/ayon_core/hosts/substancepainter/api/lib.py Co-authored-by: Roy Nieterau --- .../ayon_core/hosts/substancepainter/api/lib.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index d98b7bca1a..4fb586a8d6 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -656,20 +656,18 @@ def get_export_presets_by_filtering(export_preset_name, channel_type_list): dict: export preset data """ - new_maps = [] - export_presets = get_export_presets() export_preset_nice_name = export_presets[export_preset_name] resource_presets = substance_painter.export.list_resource_export_presets() - preset = next( - ( - preset for preset in resource_presets - if preset.resource_id.name == export_preset_nice_name - ), None - ) - if preset is None: + for preset in resource_presets: + if preset.resource_id.name == export_preset_nice_name: + break + else: + # No matching preset found return {} + maps = preset.list_output_maps() + new_maps = [] for channel_map in maps: for n in channel_type_list: if not channel_map.get("fileName"): From d9705392a6f16ba6f0c0e71781417348a117aaee Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Thu, 23 May 2024 19:54:46 +0800 Subject: [PATCH 14/42] code tweaks - big roy's comment --- .../hosts/substancepainter/api/lib.py | 74 ++++++++----------- .../plugins/create/create_textures.py | 6 +- .../publish/collect_textureset_images.py | 7 +- 3 files changed, 41 insertions(+), 46 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index 4fb586a8d6..e92a730b28 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -644,67 +644,57 @@ def prompt_new_file_with_mesh(mesh_filepath): return project_mesh -def get_export_presets_by_filtering(export_preset_name, channel_type_list): - """Function to get export presets included with specific channels - requested by users. +def get_export_preset_by_name(preset_name: str) -> substance_painter.export.Resource: + export_presets= get_export_presets() + preset_full_name = export_presets[preset_name] + for export_preset in substance_painter.export.list_resource_export_presets(): + if export_preset.resource_id.name == preset_full_name: + return export_preset - Args: - export_preset_name (str): Name of export preset - channel_type_list (list): A list of channel type requested by users - Returns: - dict: export preset data - """ +def get_export_preset_with_filtered_maps( + export_preset: substance_painter.export.Resource, + channel_type_names: list[str]) -> dict: + filtered_maps = [] + for output_map in export_preset.list_output_maps(): + output_filename = output_map.get("fileName") + if not output_filename: + continue - export_presets = get_export_presets() - export_preset_nice_name = export_presets[export_preset_name] - resource_presets = substance_painter.export.list_resource_export_presets() - for preset in resource_presets: - if preset.resource_id.name == export_preset_nice_name: - break - else: - # No matching preset found - return {} - - maps = preset.list_output_maps() - new_maps = [] - for channel_map in maps: - for n in channel_type_list: - if not channel_map.get("fileName"): - continue - - if n in channel_map["fileName"]: - new_maps.append(channel_map) + if any( + channel_type_name in output_filename + for channel_type_name in channel_type_names + ): + filtered_maps.append(output_map) # Create a new preset return { "exportPresets": [ { - "name": export_preset_name, - "maps": new_maps + "name": export_preset.resource_id.name, + "maps": filtered_maps } ], } @contextlib.contextmanager -def set_layer_stack_opacity(node_ids, channel_type): +def set_layer_stack_opacity(node_ids, channel_types): """Function to set the opacity of the layer stack during context Args: node_ids (list): A list of substance painter node ids - channel_type (list): A list of channel types + channel_types (list): A list of channel types """ - + # Do nothing + if not node_ids or not channel_types: + yield + return all_selected_nodes = [] - opacity_set_list = [] + original_opacity_values = [] stack = substance_painter.textureset.get_active_stack() stack_root_layers = ( substance_painter.layerstack.get_root_layer_nodes(stack) ) - # Do nothing - if not node_ids or not channel_type: - yield - return for node_id in node_ids: node = substance_painter.layerstack.get_node_by_uid(int(node_id)) @@ -712,16 +702,16 @@ def set_layer_stack_opacity(node_ids, channel_type): filtered_nodes = {node for node in stack_root_layers if node not in all_selected_nodes} for node in filtered_nodes: - for channel in channel_type: + for channel in channel_types: chan = getattr(substance_painter.textureset.ChannelType, channel) - opacity_set_list.append((chan, node.get_opacity(chan))) + original_opacity_values.append((chan, node.get_opacity(chan))) try: for node in filtered_nodes: - for channel, _ in opacity_set_list: + for channel, _ in original_opacity_values: node.set_opacity(0.0, channel) yield finally: for node in filtered_nodes: - for channel, opacity in opacity_set_list: + for channel, opacity in original_opacity_values: node.set_opacity(opacity, channel) diff --git a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py index 3a6387d71d..044561af6c 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py @@ -31,8 +31,10 @@ class CreateTextures(Creator): channel_mapping = [] def apply_settings(self, project_settings): - settings = project_settings["substancepainter"].get("create") # noqa - self.channel_mapping = settings["CreateTextures"].get("channel_mapping") + settings = project_settings["substancepainter"].get("create", []) # noqa + if settings: + self.channel_mapping = settings["CreateTextures"].get( + "channel_mapping", []) def create(self, product_name, instance_data, pre_create_data): diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py b/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py index b90e77db80..31740840c6 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py @@ -8,7 +8,8 @@ import substance_painter.textureset from ayon_core.pipeline import publish from ayon_core.hosts.substancepainter.api.lib import ( get_parsed_export_maps, - get_export_presets_by_filtering, + get_export_preset_by_name, + get_export_preset_with_filtered_maps, strip_template ) from ayon_core.pipeline.create import get_product_name @@ -210,6 +211,8 @@ class CollectTextureSet(pyblish.api.InstancePlugin): parameters.pop(key) channel_layer = creator_attrs.get("exportChannel", []) if channel_layer: - maps = get_export_presets_by_filtering(preset_url, channel_layer) + export_preset_nice_name = get_export_preset_by_name(preset_url) + maps = get_export_preset_with_filtered_maps( + export_preset_nice_name, channel_layer) config.update(maps) return config From e9a56f356d9d93d6cd2bcb1abb151781866704e3 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Thu, 23 May 2024 19:59:15 +0800 Subject: [PATCH 15/42] implement backward compatibility for the channel setting in creator --- .../hosts/substancepainter/api/lib.py | 37 +++++++++++++++++++ .../plugins/create/create_textures.py | 14 ++++--- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index e92a730b28..43765e7bdd 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -13,6 +13,43 @@ import substance_painter.export from qtpy import QtGui, QtWidgets, QtCore +def get_channel_map_enum(): + """Function to get channel map items value. + For backward compatibility only. Will be removed after + client addon migration + """ + return { + "BaseColor": "Base Color", + "Metallic": "Metallic", + "Roughness": "Roughness", + "SpecularEdgeColor": "Specular Edge Color", + "Emissive": "Emissive", + "Opacity": "Opacity", + "Displacement": "Displacement", + "Glossiness": "Glossiness", + "Anisotropylevel": "Anisotropy Level", + "AO": "Ambient Occulsion", + "Anisotropyangle": "Anisotropy Angle", + "Transmissive": "Transmissive", + "Reflection": "Reflection", + "Diffuse": "Diffuse", + "Ior": "Index of Refraction", + "Specularlevel": "Specular Level", + "BlendingMask": "Blending Mask", + "Translucency": "Translucency", + "Scattering": "Scattering", + "ScatterColor": "Scatter Color", + "SheenOpacity": "Sheen Opacity", + "SheenRoughness": "Sheen Roughness", + "SheenColor": "Sheen Color", + "CoatOpacity": "Coat Opacity", + "CoatColor": "Coat Color", + "CoatRoughness": "Coat Roughness", + "CoatSpecularLevel": "Coat Specular Level", + "CoatNormal": "Coat Normal", + } + + def get_export_presets(): """Return Export Preset resource URLs for all available Export Presets. diff --git a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py index 044561af6c..ca766d3ce9 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py @@ -14,7 +14,9 @@ from ayon_core.hosts.substancepainter.api.pipeline import ( set_instances, remove_instance ) -from ayon_core.hosts.substancepainter.api.lib import get_export_presets +from ayon_core.hosts.substancepainter.api.lib import ( + get_export_presets, get_channel_map_enum +) import substance_painter import substance_painter.project @@ -35,6 +37,8 @@ class CreateTextures(Creator): if settings: self.channel_mapping = settings["CreateTextures"].get( "channel_mapping", []) + else: + self.channel_mapping = get_channel_map_enum() def create(self, product_name, instance_data, pre_create_data): @@ -200,10 +204,10 @@ class CreateTextures(Creator): def get_pre_create_attr_defs(self): # Use same attributes as for instance attributes - selection_list = [] + attr_defs = [] if substance_painter.application.version_info()[0] >= 10: - selection_list = [ + attr_defs.append( BoolDef("use_selection", label="Use selection", tooltip="Select Layer Stack(s) for exporting") - ] - return selection_list + self.get_instance_attr_defs() + ) + return attr_defs + self.get_instance_attr_defs() From b70e0b304b9e08854875ae38316606086b019a8a Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Thu, 23 May 2024 20:08:23 +0800 Subject: [PATCH 16/42] renaming filtered_nodes to excluded_nodes & make sure the code implmentation in creator doesn't break the integration --- .../ayon_core/hosts/substancepainter/api/lib.py | 17 +++++++++-------- .../plugins/create/create_textures.py | 14 +++++++------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index 43765e7bdd..0b5a328cb8 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -726,29 +726,30 @@ def set_layer_stack_opacity(node_ids, channel_types): if not node_ids or not channel_types: yield return - all_selected_nodes = [] - original_opacity_values = [] + stack = substance_painter.textureset.get_active_stack() stack_root_layers = ( substance_painter.layerstack.get_root_layer_nodes(stack) ) - + all_selected_nodes = [] for node_id in node_ids: node = substance_painter.layerstack.get_node_by_uid(int(node_id)) all_selected_nodes.append(node) - filtered_nodes = {node for node in stack_root_layers - if node not in all_selected_nodes} - for node in filtered_nodes: + excluded_nodes = {node for node in stack_root_layers + if node not in all_selected_nodes} + + original_opacity_values = [] + for node in excluded_nodes: for channel in channel_types: chan = getattr(substance_painter.textureset.ChannelType, channel) original_opacity_values.append((chan, node.get_opacity(chan))) try: - for node in filtered_nodes: + for node in excluded_nodes: for channel, _ in original_opacity_values: node.set_opacity(0.0, channel) yield finally: - for node in filtered_nodes: + for node in excluded_nodes: for channel, opacity in original_opacity_values: node.set_opacity(opacity, channel) diff --git a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py index ca766d3ce9..04b471f24d 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py @@ -15,7 +15,8 @@ from ayon_core.hosts.substancepainter.api.pipeline import ( remove_instance ) from ayon_core.hosts.substancepainter.api.lib import ( - get_export_presets, get_channel_map_enum + get_export_presets, + get_channel_map_enum ) import substance_painter @@ -35,8 +36,11 @@ class CreateTextures(Creator): def apply_settings(self, project_settings): settings = project_settings["substancepainter"].get("create", []) # noqa if settings: - self.channel_mapping = settings["CreateTextures"].get( + self.channel_mapping = { + item["value"]: item["name"] + for item in settings["CreateTextures"].get( "channel_mapping", []) + } else: self.channel_mapping = get_channel_map_enum() @@ -108,14 +112,10 @@ class CreateTextures(Creator): return instance def get_instance_attr_defs(self): - export_channel_enum = { - item["value"]: item["name"] - for item in self.channel_mapping - } return [ EnumDef("exportChannel", - items=export_channel_enum, + items=self.channel_mapping, multiselection=True, default=None, label="Export Channel(s)", From 63398b1c61cafe089731e739f1b93513cec31d42 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Thu, 23 May 2024 20:19:58 +0800 Subject: [PATCH 17/42] make sure the code doesn't break the integration --- .../ayon_core/hosts/substancepainter/api/lib.py | 7 ++----- .../plugins/create/create_textures.py | 16 +++++++++------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index 0b5a328cb8..edf7851aa0 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -681,7 +681,7 @@ def prompt_new_file_with_mesh(mesh_filepath): return project_mesh -def get_export_preset_by_name(preset_name: str) -> substance_painter.export.Resource: +def get_export_preset_by_name(preset_name: str): export_presets= get_export_presets() preset_full_name = export_presets[preset_name] for export_preset in substance_painter.export.list_resource_export_presets(): @@ -689,9 +689,7 @@ def get_export_preset_by_name(preset_name: str) -> substance_painter.export.Reso return export_preset -def get_export_preset_with_filtered_maps( - export_preset: substance_painter.export.Resource, - channel_type_names: list[str]) -> dict: +def get_export_preset_with_filtered_maps(export_preset, channel_type_names): filtered_maps = [] for output_map in export_preset.list_output_maps(): output_filename = output_map.get("fileName") @@ -752,4 +750,3 @@ def set_layer_stack_opacity(node_ids, channel_types): for node in excluded_nodes: for channel, opacity in original_opacity_values: node.set_opacity(opacity, channel) - diff --git a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py index 04b471f24d..36dd9d6dba 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py @@ -36,13 +36,8 @@ class CreateTextures(Creator): def apply_settings(self, project_settings): settings = project_settings["substancepainter"].get("create", []) # noqa if settings: - self.channel_mapping = { - item["value"]: item["name"] - for item in settings["CreateTextures"].get( + self.channel_mapping = settings["CreateTextures"].get( "channel_mapping", []) - } - else: - self.channel_mapping = get_channel_map_enum() def create(self, product_name, instance_data, pre_create_data): @@ -112,10 +107,17 @@ class CreateTextures(Creator): return instance def get_instance_attr_defs(self): + if self.channel_mapping: + export_channel_enum = { + item["value"]: item["name"] + for item in self.channel_mapping + } + else: + export_channel_enum = get_channel_map_enum() return [ EnumDef("exportChannel", - items=self.channel_mapping, + items=export_channel_enum, multiselection=True, default=None, label="Export Channel(s)", From b57854784f9d0aff4fb7116d5f0aa58ac39b8059 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Thu, 23 May 2024 20:37:01 +0800 Subject: [PATCH 18/42] make sure the export channel filtering function is working --- .../hosts/substancepainter/api/lib.py | 52 ++++++++++++------- .../publish/collect_textureset_images.py | 7 +-- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index edf7851aa0..f026425f24 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -681,32 +681,46 @@ def prompt_new_file_with_mesh(mesh_filepath): return project_mesh -def get_export_preset_by_name(preset_name: str): - export_presets= get_export_presets() - preset_full_name = export_presets[preset_name] - for export_preset in substance_painter.export.list_resource_export_presets(): - if export_preset.resource_id.name == preset_full_name: - return export_preset +def get_export_presets_by_filtering(export_preset_name, channel_type_names): + """Function to get export presets included with specific channels + requested by users. + Args: + export_preset_name (str): Name of export preset + channel_type_list (list): A list of channel type requested by users -def get_export_preset_with_filtered_maps(export_preset, channel_type_names): - filtered_maps = [] - for output_map in export_preset.list_output_maps(): - output_filename = output_map.get("fileName") - if not output_filename: - continue + Returns: + dict: export preset data + """ - if any( - channel_type_name in output_filename - for channel_type_name in channel_type_names - ): - filtered_maps.append(output_map) + target_maps = [] + + export_presets = get_export_presets() + export_preset_nice_name = export_presets[export_preset_name] + resource_presets = substance_painter.export.list_resource_export_presets() + preset = next( + ( + preset for preset in resource_presets + if preset.resource_id.name == export_preset_nice_name + ), None + ) + if preset is None: + return {} + + maps = preset.list_output_maps() + for channel_map in maps: + for channel_name in channel_type_names: + if not channel_map.get("fileName"): + continue + + if channel_name in channel_map["fileName"]: + target_maps.append(channel_map) # Create a new preset return { "exportPresets": [ { - "name": export_preset.resource_id.name, - "maps": filtered_maps + "name": export_preset_name, + "maps": target_maps } ], } diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py b/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py index 31740840c6..b90e77db80 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py @@ -8,8 +8,7 @@ import substance_painter.textureset from ayon_core.pipeline import publish from ayon_core.hosts.substancepainter.api.lib import ( get_parsed_export_maps, - get_export_preset_by_name, - get_export_preset_with_filtered_maps, + get_export_presets_by_filtering, strip_template ) from ayon_core.pipeline.create import get_product_name @@ -211,8 +210,6 @@ class CollectTextureSet(pyblish.api.InstancePlugin): parameters.pop(key) channel_layer = creator_attrs.get("exportChannel", []) if channel_layer: - export_preset_nice_name = get_export_preset_by_name(preset_url) - maps = get_export_preset_with_filtered_maps( - export_preset_nice_name, channel_layer) + maps = get_export_presets_by_filtering(preset_url, channel_layer) config.update(maps) return config From f3033a08f8ad926a420902b8ed797f404a0674f4 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Thu, 23 May 2024 22:27:46 +0800 Subject: [PATCH 19/42] rename channel name to channel map --- .../substancepainter/server/settings/creator_plugins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server_addon/substancepainter/server/settings/creator_plugins.py b/server_addon/substancepainter/server/settings/creator_plugins.py index b16c9504aa..363ed7fe88 100644 --- a/server_addon/substancepainter/server/settings/creator_plugins.py +++ b/server_addon/substancepainter/server/settings/creator_plugins.py @@ -4,7 +4,7 @@ from ayon_server.settings import BaseSettingsModel, SettingsField class ChannelMappingItemModel(BaseSettingsModel): _layout = "compact" name: str = SettingsField(title="Channel Type") - value: str = SettingsField(title="Channel Name") + value: str = SettingsField(title="Channel Map") class CreateTextureModel(BaseSettingsModel): From cc600bd930e2dd26f7f8356b89f0c69f6628cae8 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Thu, 23 May 2024 23:20:37 +0800 Subject: [PATCH 20/42] add roughness, roughness, height option into the channel_mapping --- .../substancepainter/server/settings/creator_plugins.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server_addon/substancepainter/server/settings/creator_plugins.py b/server_addon/substancepainter/server/settings/creator_plugins.py index 363ed7fe88..9ba7684d30 100644 --- a/server_addon/substancepainter/server/settings/creator_plugins.py +++ b/server_addon/substancepainter/server/settings/creator_plugins.py @@ -24,6 +24,9 @@ DEFAULT_CREATOR_SETTINGS = { "channel_mapping": [ {"name": "Base Color", "value": "BaseColor"}, {"name": "Metallic", "value": "Metallic"}, + {"name": "Roughness", "value": "Roughness"}, + {"name": "Normal", "value": "Normal"}, + {"name": "Height", "value": "Height"}, {"name": "Specular Edge Color", "value": "SpecularEdgeColor"}, {"name": "Opacity", "value": "Opacity"}, From 6d03f7bd87b1e1e76fa3b158f0baf01c945de54f Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Fri, 24 May 2024 20:05:17 +0800 Subject: [PATCH 21/42] support to validate the texture maps filtering when no texture map after filtering to export the image instance --- .../plugins/publish/validate_ouput_maps.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py index 720771994c..b69308abd4 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py @@ -25,16 +25,22 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): def process(self, instance): config = instance.data["exportConfig"] - + creator_attrs = instance.data["creator_attributes"] # Substance Painter API does not allow to query the actual output maps # it will generate without actually exporting the files. So we try to # generate the smallest size / fastest export as possible config = copy.deepcopy(config) + if creator_attrs.get("exportChannel", []): + for export_preset in config.get("exportPresets", {}): + if not export_preset.get("maps"): + raise PublishValidationError( + "No Texture Map Exported with texture set:{}.".format( + instance.name) + ) parameters = config["exportParameters"][0]["parameters"] parameters["sizeLog2"] = [1, 1] # output 2x2 images (smallest) parameters["paddingAlgorithm"] = "passthrough" # no dilation (faster) parameters["dithering"] = False # no dithering (faster) - result = substance_painter.export.export_project_textures(config) if result.status != substance_painter.export.ExportStatus.Success: raise PublishValidationError( From fb2e41c9d8be87cc87127fcd3105137655d9d01c Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Fri, 24 May 2024 21:46:27 +0800 Subject: [PATCH 22/42] support to validate multiple export channel filtering --- .../plugins/publish/validate_ouput_maps.py | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py index b69308abd4..9ea3be8c31 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py @@ -30,13 +30,27 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): # it will generate without actually exporting the files. So we try to # generate the smallest size / fastest export as possible config = copy.deepcopy(config) - if creator_attrs.get("exportChannel", []): - for export_preset in config.get("exportPresets", {}): - if not export_preset.get("maps"): - raise PublishValidationError( - "No Texture Map Exported with texture set:{}.".format( - instance.name) - ) + export_channel = creator_attrs.get("exportChannel", []) + tmp_export_channel = copy.deepcopy(export_channel) + if export_channel: + for export_preset in config.get("exportPresets", {}): + if not export_preset.get("maps", {}): + raise PublishValidationError( + "No Texture Map Exported with texture set:{}.".format( + instance.name) + ) + map_names = [channel_map["fileName"] for channel_map + in export_preset["maps"]] + for channel in tmp_export_channel: + for map_name in map_names: + if channel in map_name: + tmp_export_channel.remove(channel) + if tmp_export_channel: + raise PublishValidationError( + "No Channel(s) {} found in the texture set:{}".format( + tmp_export_channel, instance.name + )) + parameters = config["exportParameters"][0]["parameters"] parameters["sizeLog2"] = [1, 1] # output 2x2 images (smallest) parameters["paddingAlgorithm"] = "passthrough" # no dilation (faster) From 158e9b75536af222632571d40758e8cdc43851c0 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 24 May 2024 16:19:50 +0200 Subject: [PATCH 23/42] Publish representation with `isIntermediate` flag in data - Adjusted method parameters in ExporterReview class for better readability. - Added colorspace parameter to get_representation_data method. - Included representation data with isIntermediate flag for identifying intermediate files. --- client/ayon_core/hosts/nuke/api/plugin.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/plugin.py b/client/ayon_core/hosts/nuke/api/plugin.py index ec13104d4d..ffe0cf2a2c 100644 --- a/client/ayon_core/hosts/nuke/api/plugin.py +++ b/client/ayon_core/hosts/nuke/api/plugin.py @@ -572,8 +572,11 @@ class ExporterReview(object): self.fhead = self.fhead.replace("#", "")[:-1] def get_representation_data( - self, tags=None, range=False, - custom_tags=None, colorspace=None + self, + tags=None, + range=False, + custom_tags=None, + colorspace=None, ): """ Add representation data to self.data @@ -584,6 +587,8 @@ class ExporterReview(object): Defaults to False. custom_tags (list[str], optional): user inputted custom tags. Defaults to None. + colorspace (str, optional): colorspace name. + Defaults to None. """ add_tags = tags or [] repre = { @@ -591,7 +596,13 @@ class ExporterReview(object): "ext": self.ext, "files": self.file, "stagingDir": self.staging_dir, - "tags": [self.name.replace("_", "-")] + add_tags + "tags": [self.name.replace("_", "-")] + add_tags, + "data": { + # making sure that once intermediate file is published + # as representation, we will be able to then identify it + # from representation.data.isIntermediate + "isIntermediate": True + }, } if custom_tags: @@ -999,7 +1010,7 @@ class ExporterReviewMov(ExporterReview): tags=tags + add_tags, custom_tags=add_custom_tags, range=True, - colorspace=colorspace + colorspace=colorspace, ) self.log.debug("Representation... `{}`".format(self.data)) From bd3be3695476e41bfec6fc4221d26f7f944f2e90 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Fri, 24 May 2024 22:25:32 +0800 Subject: [PATCH 24/42] edit error message --- .../substancepainter/plugins/publish/validate_ouput_maps.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py index 9ea3be8c31..143acee3f5 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py @@ -47,7 +47,7 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): tmp_export_channel.remove(channel) if tmp_export_channel: raise PublishValidationError( - "No Channel(s) {} found in the texture set:{}".format( + "No Channel(s){} found in the texture set:{}".format( tmp_export_channel, instance.name )) From 339eea017e4f0699d3480194e906df9ba4a577de Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Fri, 24 May 2024 23:16:32 +0800 Subject: [PATCH 25/42] improve the validation on invalid channel function --- .../plugins/publish/validate_ouput_maps.py | 69 +++++++++++++------ 1 file changed, 47 insertions(+), 22 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py index 143acee3f5..31201e6c3b 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py @@ -25,32 +25,17 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): def process(self, instance): config = instance.data["exportConfig"] - creator_attrs = instance.data["creator_attributes"] + # Substance Painter API does not allow to query the actual output maps # it will generate without actually exporting the files. So we try to # generate the smallest size / fastest export as possible config = copy.deepcopy(config) - export_channel = creator_attrs.get("exportChannel", []) - tmp_export_channel = copy.deepcopy(export_channel) - if export_channel: - for export_preset in config.get("exportPresets", {}): - if not export_preset.get("maps", {}): - raise PublishValidationError( - "No Texture Map Exported with texture set:{}.".format( - instance.name) - ) - map_names = [channel_map["fileName"] for channel_map - in export_preset["maps"]] - for channel in tmp_export_channel: - for map_name in map_names: - if channel in map_name: - tmp_export_channel.remove(channel) - if tmp_export_channel: - raise PublishValidationError( - "No Channel(s){} found in the texture set:{}".format( - tmp_export_channel, instance.name - )) - + invalid_channels = self.get_invalid_channels(instance, config) + if invalid_channels: + raise PublishValidationError( + "No Channel(s){} found in the texture set:{}".format( + invalid_channels, instance.name + )) parameters = config["exportParameters"][0]["parameters"] parameters["sizeLog2"] = [1, 1] # output 2x2 images (smallest) parameters["paddingAlgorithm"] = "passthrough" # no dilation (faster) @@ -128,3 +113,43 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): message=message, title="Missing output maps" ) + + + def get_invalid_channels(self, instance, config): + """Function to get invalid channel(s) from export channel + filtering + + Args: + instance (pyblish.api.Instance): Instance + config (dict): export config + + Raises: + PublishValidationError: raise Publish Validation + Error if any invalid channel(s) found + + Returns: + list: invalid channel(s) + """ + creator_attrs = instance.data["creator_attributes"] + export_channel = creator_attrs.get("exportChannel", []) + tmp_export_channel = copy.deepcopy(export_channel) + invalid_channel = [] + if export_channel: + for export_preset in config.get("exportPresets", {}): + if not export_preset.get("maps", {}): + raise PublishValidationError( + "No Texture Map Exported with texture set:{}.".format( + instance.name) + ) + map_names = [channel_map["fileName"] for channel_map + in export_preset["maps"]] + for channel in tmp_export_channel: + found = False + for map_name in map_names: + if channel in map_name: + found = True + break # Exit the inner loop once a match is found + if not found: + invalid_channel.append(channel) + + return invalid_channel From 3d6f1a7c27a9e029c81d92a57cccaf305d32d330 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 27 May 2024 14:20:20 +0200 Subject: [PATCH 26/42] nuke host folder migrated into server_addons --- .../nuke/client/ayon_nuke}/__init__.py | 0 .../nuke/client/ayon_nuke}/addon.py | 0 .../nuke/client/ayon_nuke}/api/__init__.py | 0 .../nuke/client/ayon_nuke}/api/actions.py | 0 .../nuke/client/ayon_nuke}/api/command.py | 0 .../nuke/client/ayon_nuke}/api/constants.py | 0 .../nuke/client/ayon_nuke}/api/gizmo_menu.py | 0 .../nuke/client/ayon_nuke}/api/lib.py | 10 +++++----- .../nuke/client/ayon_nuke}/api/pipeline.py | 8 ++++---- .../nuke/client/ayon_nuke}/api/plugin.py | 2 +- .../nuke/client/ayon_nuke}/api/utils.py | 0 .../client/ayon_nuke}/api/workfile_template_builder.py | 0 .../nuke/client/ayon_nuke}/api/workio.py | 0 .../client/ayon_nuke}/hooks/pre_nukeassist_setup.py | 0 .../nuke/client/ayon_nuke}/plugins/__init__.py | 0 .../nuke/client/ayon_nuke}/plugins/create/__init__.py | 0 .../client/ayon_nuke}/plugins/create/convert_legacy.py | 4 ++-- .../ayon_nuke}/plugins/create/create_backdrop.py | 2 +- .../client/ayon_nuke}/plugins/create/create_camera.py | 4 ++-- .../client/ayon_nuke}/plugins/create/create_gizmo.py | 2 +- .../client/ayon_nuke}/plugins/create/create_model.py | 2 +- .../client/ayon_nuke}/plugins/create/create_source.py | 2 +- .../ayon_nuke}/plugins/create/create_write_image.py | 2 +- .../plugins/create/create_write_prerender.py | 2 +- .../ayon_nuke}/plugins/create/create_write_render.py | 2 +- .../ayon_nuke}/plugins/create/workfile_creator.py | 4 ++-- .../ayon_nuke}/plugins/inventory/repair_old_loaders.py | 2 +- .../ayon_nuke}/plugins/inventory/select_containers.py | 2 +- .../nuke/client/ayon_nuke}/plugins/load/actions.py | 2 +- .../client/ayon_nuke}/plugins/load/load_backdrop.py | 6 +++--- .../client/ayon_nuke}/plugins/load/load_camera_abc.py | 4 ++-- .../nuke/client/ayon_nuke}/plugins/load/load_clip.py | 6 +++--- .../client/ayon_nuke}/plugins/load/load_effects.py | 2 +- .../client/ayon_nuke}/plugins/load/load_effects_ip.py | 4 ++-- .../nuke/client/ayon_nuke}/plugins/load/load_gizmo.py | 4 ++-- .../client/ayon_nuke}/plugins/load/load_gizmo_ip.py | 4 ++-- .../nuke/client/ayon_nuke}/plugins/load/load_image.py | 4 ++-- .../client/ayon_nuke}/plugins/load/load_matchmove.py | 0 .../nuke/client/ayon_nuke}/plugins/load/load_model.py | 4 ++-- .../client/ayon_nuke}/plugins/load/load_ociolook.py | 2 +- .../ayon_nuke}/plugins/load/load_script_precomp.py | 4 ++-- .../ayon_nuke}/plugins/publish/collect_backdrop.py | 2 +- .../ayon_nuke}/plugins/publish/collect_context_data.py | 2 +- .../ayon_nuke}/plugins/publish/collect_framerate.py | 0 .../client/ayon_nuke}/plugins/publish/collect_gizmo.py | 0 .../plugins/publish/collect_headless_farm.py | 0 .../client/ayon_nuke}/plugins/publish/collect_model.py | 0 .../plugins/publish/collect_nuke_instance_data.py | 0 .../client/ayon_nuke}/plugins/publish/collect_reads.py | 0 .../ayon_nuke}/plugins/publish/collect_slate_node.py | 0 .../ayon_nuke}/plugins/publish/collect_workfile.py | 0 .../ayon_nuke}/plugins/publish/collect_writes.py | 0 .../ayon_nuke}/plugins/publish/extract_backdrop.py | 2 +- .../ayon_nuke}/plugins/publish/extract_camera.py | 2 +- .../client/ayon_nuke}/plugins/publish/extract_gizmo.py | 4 ++-- .../plugins/publish/extract_headless_farm.py | 0 .../client/ayon_nuke}/plugins/publish/extract_model.py | 2 +- .../ayon_nuke}/plugins/publish/extract_ouput_node.py | 2 +- .../plugins/publish/extract_output_directory.py | 0 .../ayon_nuke}/plugins/publish/extract_render_local.py | 0 .../ayon_nuke}/plugins/publish/extract_review_data.py | 0 .../plugins/publish/extract_review_data_lut.py | 4 ++-- .../plugins/publish/extract_review_intermediates.py | 4 ++-- .../ayon_nuke}/plugins/publish/extract_script_save.py | 0 .../ayon_nuke}/plugins/publish/extract_slate_frame.py | 2 +- .../plugins/publish/help/validate_asset_context.xml | 0 .../plugins/publish/help/validate_backdrop.xml | 0 .../ayon_nuke}/plugins/publish/help/validate_gizmo.xml | 0 .../ayon_nuke}/plugins/publish/help/validate_knobs.xml | 0 .../publish/help/validate_output_resolution.xml | 0 .../plugins/publish/help/validate_proxy_mode.xml | 0 .../plugins/publish/help/validate_rendered_frames.xml | 0 .../publish/help/validate_script_attributes.xml | 0 .../plugins/publish/help/validate_write_nodes.xml | 0 .../plugins/publish/increment_script_version.py | 0 .../ayon_nuke}/plugins/publish/remove_ouput_node.py | 0 .../plugins/publish/validate_asset_context.py | 2 +- .../ayon_nuke}/plugins/publish/validate_backdrop.py | 0 .../plugins/publish/validate_exposed_knobs.py | 2 +- .../ayon_nuke}/plugins/publish/validate_gizmo.py | 0 .../ayon_nuke}/plugins/publish/validate_knobs.py | 0 .../plugins/publish/validate_output_resolution.py | 0 .../ayon_nuke}/plugins/publish/validate_proxy_mode.py | 0 .../plugins/publish/validate_rendered_frames.py | 0 .../plugins/publish/validate_script_attributes.py | 2 +- .../ayon_nuke}/plugins/publish/validate_write_nodes.py | 2 +- .../plugins/workfile_build/create_placeholder.py | 4 ++-- .../plugins/workfile_build/load_placeholder.py | 4 ++-- .../nuke/client/ayon_nuke}/startup/__init__.py | 0 .../nuke/client/ayon_nuke}/startup/clear_rendered.py | 0 .../client/ayon_nuke}/startup/custom_write_node.py | 2 +- .../ayon_nuke}/startup/frame_setting_for_read_nodes.py | 0 .../nuke/client/ayon_nuke}/startup/menu.py | 2 +- .../nuke/client/ayon_nuke}/startup/write_to_read.py | 0 .../ayon_nuke}/vendor/google/protobuf/__init__.py | 0 .../ayon_nuke}/vendor/google/protobuf/any_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/api_pb2.py | 0 .../vendor/google/protobuf/compiler/__init__.py | 0 .../vendor/google/protobuf/compiler/plugin_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/descriptor.py | 0 .../vendor/google/protobuf/descriptor_database.py | 0 .../vendor/google/protobuf/descriptor_pb2.py | 0 .../vendor/google/protobuf/descriptor_pool.py | 0 .../ayon_nuke}/vendor/google/protobuf/duration_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/empty_pb2.py | 0 .../vendor/google/protobuf/field_mask_pb2.py | 0 .../vendor/google/protobuf/internal/__init__.py | 0 .../vendor/google/protobuf/internal/_parameterized.py | 0 .../google/protobuf/internal/api_implementation.py | 0 .../vendor/google/protobuf/internal/builder.py | 0 .../vendor/google/protobuf/internal/containers.py | 0 .../vendor/google/protobuf/internal/decoder.py | 0 .../vendor/google/protobuf/internal/encoder.py | 0 .../google/protobuf/internal/enum_type_wrapper.py | 0 .../vendor/google/protobuf/internal/extension_dict.py | 0 .../google/protobuf/internal/message_listener.py | 0 .../protobuf/internal/message_set_extensions_pb2.py | 0 .../protobuf/internal/missing_enum_values_pb2.py | 0 .../protobuf/internal/more_extensions_dynamic_pb2.py | 0 .../google/protobuf/internal/more_extensions_pb2.py | 0 .../google/protobuf/internal/more_messages_pb2.py | 0 .../vendor/google/protobuf/internal/no_package_pb2.py | 0 .../vendor/google/protobuf/internal/python_message.py | 0 .../vendor/google/protobuf/internal/type_checkers.py | 0 .../google/protobuf/internal/well_known_types.py | 0 .../vendor/google/protobuf/internal/wire_format.py | 0 .../ayon_nuke}/vendor/google/protobuf/json_format.py | 0 .../ayon_nuke}/vendor/google/protobuf/message.py | 0 .../vendor/google/protobuf/message_factory.py | 0 .../ayon_nuke}/vendor/google/protobuf/proto_builder.py | 0 .../vendor/google/protobuf/pyext/__init__.py | 0 .../vendor/google/protobuf/pyext/cpp_message.py | 0 .../vendor/google/protobuf/pyext/python_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/reflection.py | 0 .../ayon_nuke}/vendor/google/protobuf/service.py | 0 .../vendor/google/protobuf/service_reflection.py | 0 .../vendor/google/protobuf/source_context_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/struct_pb2.py | 0 .../vendor/google/protobuf/symbol_database.py | 0 .../ayon_nuke}/vendor/google/protobuf/text_encoding.py | 0 .../ayon_nuke}/vendor/google/protobuf/text_format.py | 0 .../ayon_nuke}/vendor/google/protobuf/timestamp_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/type_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/util/__init__.py | 0 .../vendor/google/protobuf/util/json_format_pb2.py | 0 .../google/protobuf/util/json_format_proto3_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/wrappers_pb2.py | 0 147 files changed, 71 insertions(+), 71 deletions(-) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/addon.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/actions.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/command.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/constants.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/gizmo_menu.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/lib.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/pipeline.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/plugin.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/utils.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/workfile_template_builder.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/workio.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/hooks/pre_nukeassist_setup.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/convert_legacy.py (93%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_backdrop.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_camera.py (95%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_gizmo.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_model.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_source.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_write_image.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_write_prerender.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_write_render.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/workfile_creator.py (96%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/inventory/repair_old_loaders.py (94%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/inventory/select_containers.py (88%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/actions.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_backdrop.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_camera_abc.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_clip.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_effects.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_effects_ip.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_gizmo.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_gizmo_ip.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_image.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_matchmove.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_model.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_ociolook.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_script_precomp.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_backdrop.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_context_data.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_framerate.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_gizmo.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_headless_farm.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_model.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_nuke_instance_data.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_reads.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_slate_node.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_workfile.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_writes.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_backdrop.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_camera.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_gizmo.py (96%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_headless_farm.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_model.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_ouput_node.py (95%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_output_directory.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_render_local.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_review_data.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_review_data_lut.py (95%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_review_intermediates.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_script_save.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_slate_frame.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_asset_context.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_backdrop.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_gizmo.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_knobs.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_output_resolution.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_proxy_mode.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_rendered_frames.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_script_attributes.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_write_nodes.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/increment_script_version.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/remove_ouput_node.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_asset_context.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_backdrop.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_exposed_knobs.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_gizmo.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_knobs.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_output_resolution.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_proxy_mode.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_rendered_frames.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_script_attributes.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_write_nodes.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/workfile_build/create_placeholder.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/workfile_build/load_placeholder.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/clear_rendered.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/custom_write_node.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/frame_setting_for_read_nodes.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/menu.py (64%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/write_to_read.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/any_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/api_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/compiler/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/compiler/plugin_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/descriptor.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/descriptor_database.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/descriptor_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/descriptor_pool.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/duration_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/empty_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/field_mask_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/_parameterized.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/api_implementation.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/builder.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/containers.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/decoder.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/encoder.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/enum_type_wrapper.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/extension_dict.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/message_listener.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/message_set_extensions_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/missing_enum_values_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/more_extensions_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/more_messages_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/no_package_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/python_message.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/type_checkers.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/well_known_types.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/wire_format.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/json_format.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/message.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/message_factory.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/proto_builder.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/pyext/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/pyext/cpp_message.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/pyext/python_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/reflection.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/service.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/service_reflection.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/source_context_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/struct_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/symbol_database.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/text_encoding.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/text_format.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/timestamp_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/type_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/util/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/util/json_format_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/util/json_format_proto3_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/wrappers_pb2.py (100%) diff --git a/client/ayon_core/hosts/nuke/__init__.py b/server_addon/nuke/client/ayon_nuke/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/__init__.py rename to server_addon/nuke/client/ayon_nuke/__init__.py diff --git a/client/ayon_core/hosts/nuke/addon.py b/server_addon/nuke/client/ayon_nuke/addon.py similarity index 100% rename from client/ayon_core/hosts/nuke/addon.py rename to server_addon/nuke/client/ayon_nuke/addon.py diff --git a/client/ayon_core/hosts/nuke/api/__init__.py b/server_addon/nuke/client/ayon_nuke/api/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/__init__.py rename to server_addon/nuke/client/ayon_nuke/api/__init__.py diff --git a/client/ayon_core/hosts/nuke/api/actions.py b/server_addon/nuke/client/ayon_nuke/api/actions.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/actions.py rename to server_addon/nuke/client/ayon_nuke/api/actions.py diff --git a/client/ayon_core/hosts/nuke/api/command.py b/server_addon/nuke/client/ayon_nuke/api/command.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/command.py rename to server_addon/nuke/client/ayon_nuke/api/command.py diff --git a/client/ayon_core/hosts/nuke/api/constants.py b/server_addon/nuke/client/ayon_nuke/api/constants.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/constants.py rename to server_addon/nuke/client/ayon_nuke/api/constants.py diff --git a/client/ayon_core/hosts/nuke/api/gizmo_menu.py b/server_addon/nuke/client/ayon_nuke/api/gizmo_menu.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/gizmo_menu.py rename to server_addon/nuke/client/ayon_nuke/api/gizmo_menu.py diff --git a/client/ayon_core/hosts/nuke/api/lib.py b/server_addon/nuke/client/ayon_nuke/api/lib.py similarity index 99% rename from client/ayon_core/hosts/nuke/api/lib.py rename to server_addon/nuke/client/ayon_nuke/api/lib.py index 500a0f9601..09dab4687a 100644 --- a/client/ayon_core/hosts/nuke/api/lib.py +++ b/server_addon/nuke/client/ayon_nuke/api/lib.py @@ -354,7 +354,7 @@ def imprint(node, data, tab=None): Examples: ``` import nuke - from ayon_core.hosts.nuke.api import lib + from ayon_nuke.api import lib node = nuke.createNode("NoOp") data = { @@ -419,7 +419,7 @@ def add_publish_knob(node): return node -@deprecated("ayon_core.hosts.nuke.api.lib.set_node_data") +@deprecated("ayon_nuke.api.lib.set_node_data") def set_avalon_knob_data(node, data=None, prefix="avalon:"): """[DEPRECATED] Sets data into nodes's avalon knob @@ -485,7 +485,7 @@ def set_avalon_knob_data(node, data=None, prefix="avalon:"): return node -@deprecated("ayon_core.hosts.nuke.api.lib.get_node_data") +@deprecated("ayon_nuke.api.lib.get_node_data") def get_avalon_knob_data(node, prefix="avalon:", create=True): """[DEPRECATED] Gets a data from nodes's avalon knob @@ -1028,7 +1028,7 @@ def add_button_render_on_farm(node): name = "renderOnFarm" label = "Render On Farm" value = ( - "from ayon_core.hosts.nuke.api.utils import submit_render_on_farm;" + "from ayon_nuke.api.utils import submit_render_on_farm;" "submit_render_on_farm(nuke.thisNode())" ) knob = nuke.PyScript_Knob(name, label, value) @@ -2469,7 +2469,7 @@ def _launch_workfile_app(): host_tools.show_workfiles(parent=None, on_top=True) -@deprecated("ayon_core.hosts.nuke.api.lib.start_workfile_template_builder") +@deprecated("ayon_nuke.api.lib.start_workfile_template_builder") def process_workfile_builder(): """ [DEPRECATED] Process workfile builder on nuke start diff --git a/client/ayon_core/hosts/nuke/api/pipeline.py b/server_addon/nuke/client/ayon_nuke/api/pipeline.py similarity index 99% rename from client/ayon_core/hosts/nuke/api/pipeline.py rename to server_addon/nuke/client/ayon_nuke/api/pipeline.py index d35a2e89e0..0425dd20d4 100644 --- a/client/ayon_core/hosts/nuke/api/pipeline.py +++ b/server_addon/nuke/client/ayon_nuke/api/pipeline.py @@ -188,10 +188,10 @@ def reload_config(): """ for module in ( - "ayon_core.hosts.nuke.api.actions", - "ayon_core.hosts.nuke.api.menu", - "ayon_core.hosts.nuke.api.plugin", - "ayon_core.hosts.nuke.api.lib", + "ayon_nuke.api.actions", + "ayon_nuke.api.menu", + "ayon_nuke.api.plugin", + "ayon_nuke.api.lib", ): log.info("Reloading module: {}...".format(module)) diff --git a/client/ayon_core/hosts/nuke/api/plugin.py b/server_addon/nuke/client/ayon_nuke/api/plugin.py similarity index 99% rename from client/ayon_core/hosts/nuke/api/plugin.py rename to server_addon/nuke/client/ayon_nuke/api/plugin.py index ec13104d4d..03b4af3475 100644 --- a/client/ayon_core/hosts/nuke/api/plugin.py +++ b/server_addon/nuke/client/ayon_nuke/api/plugin.py @@ -1038,7 +1038,7 @@ def convert_to_valid_instaces(): } return mapping[product_type] - from ayon_core.hosts.nuke.api import workio + from ayon_nuke.api import workio task_name = get_current_task_name() diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/server_addon/nuke/client/ayon_nuke/api/utils.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/utils.py rename to server_addon/nuke/client/ayon_nuke/api/utils.py diff --git a/client/ayon_core/hosts/nuke/api/workfile_template_builder.py b/server_addon/nuke/client/ayon_nuke/api/workfile_template_builder.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/workfile_template_builder.py rename to server_addon/nuke/client/ayon_nuke/api/workfile_template_builder.py diff --git a/client/ayon_core/hosts/nuke/api/workio.py b/server_addon/nuke/client/ayon_nuke/api/workio.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/workio.py rename to server_addon/nuke/client/ayon_nuke/api/workio.py diff --git a/client/ayon_core/hosts/nuke/hooks/pre_nukeassist_setup.py b/server_addon/nuke/client/ayon_nuke/hooks/pre_nukeassist_setup.py similarity index 100% rename from client/ayon_core/hosts/nuke/hooks/pre_nukeassist_setup.py rename to server_addon/nuke/client/ayon_nuke/hooks/pre_nukeassist_setup.py diff --git a/client/ayon_core/hosts/nuke/plugins/__init__.py b/server_addon/nuke/client/ayon_nuke/plugins/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/__init__.py rename to server_addon/nuke/client/ayon_nuke/plugins/__init__.py diff --git a/client/ayon_core/hosts/nuke/plugins/create/__init__.py b/server_addon/nuke/client/ayon_nuke/plugins/create/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/create/__init__.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/__init__.py diff --git a/client/ayon_core/hosts/nuke/plugins/create/convert_legacy.py b/server_addon/nuke/client/ayon_nuke/plugins/create/convert_legacy.py similarity index 93% rename from client/ayon_core/hosts/nuke/plugins/create/convert_legacy.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/convert_legacy.py index 8fb8abfbbf..65e719d15b 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/convert_legacy.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/convert_legacy.py @@ -1,12 +1,12 @@ from ayon_core.pipeline import AYON_INSTANCE_ID, AVALON_INSTANCE_ID from ayon_core.pipeline.create.creator_plugins import ProductConvertorPlugin -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( INSTANCE_DATA_KNOB, get_node_data, get_avalon_knob_data, NODE_TAB_NAME, ) -from ayon_core.hosts.nuke.api.plugin import convert_to_valid_instaces +from ayon_nuke.api.plugin import convert_to_valid_instaces import nuke diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/create/create_backdrop.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py index cefd9501ec..6d50b066d7 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py @@ -1,6 +1,6 @@ from nukescripts import autoBackdrop -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( NukeCreator, maintained_selection, select_nodes diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_camera.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py similarity index 95% rename from client/ayon_core/hosts/nuke/plugins/create/create_camera.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py index 764de84dcf..acf7448232 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_camera.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py @@ -1,10 +1,10 @@ import nuke -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( NukeCreator, NukeCreatorError, maintained_selection ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( create_camera_node_by_version ) diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/create/create_gizmo.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py index ccc6aa13bd..cc1c4edf82 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py @@ -1,5 +1,5 @@ import nuke -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( NukeCreator, NukeCreatorError, maintained_selection diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_model.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/create/create_model.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py index 507b7a1b57..6c1bf612b9 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py @@ -1,5 +1,5 @@ import nuke -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( NukeCreator, NukeCreatorError, maintained_selection diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_source.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/create/create_source.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py index ac6b8f694b..b2a21f032d 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_source.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py @@ -1,7 +1,7 @@ import nuke import six import sys -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( INSTANCE_DATA_KNOB, NukeCreator, NukeCreatorError, diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/create/create_write_image.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py index fc2538f23d..43f9d4c207 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py @@ -12,7 +12,7 @@ from ayon_core.lib import ( EnumDef ) from ayon_core.hosts.nuke import api as napi -from ayon_core.hosts.nuke.api.plugin import exposed_write_knobs +from ayon_nuke.api.plugin import exposed_write_knobs class CreateWriteImage(napi.NukeWriteCreator): diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py index 47796d159c..91b0022c86 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py @@ -9,7 +9,7 @@ from ayon_core.lib import ( BoolDef ) from ayon_core.hosts.nuke import api as napi -from ayon_core.hosts.nuke.api.plugin import exposed_write_knobs +from ayon_nuke.api.plugin import exposed_write_knobs class CreateWritePrerender(napi.NukeWriteCreator): diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/create/create_write_render.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py index 4cb5ccdfa2..85a09d65b7 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py @@ -9,7 +9,7 @@ from ayon_core.lib import ( BoolDef ) from ayon_core.hosts.nuke import api as napi -from ayon_core.hosts.nuke.api.plugin import exposed_write_knobs +from ayon_nuke.api.plugin import exposed_write_knobs class CreateWriteRender(napi.NukeWriteCreator): diff --git a/client/ayon_core/hosts/nuke/plugins/create/workfile_creator.py b/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py similarity index 96% rename from client/ayon_core/hosts/nuke/plugins/create/workfile_creator.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py index b9d83a2b48..c49ca1f502 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/workfile_creator.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py @@ -1,11 +1,11 @@ import ayon_api -import ayon_core.hosts.nuke.api as api +import ayon_nuke.api as api from ayon_core.pipeline import ( AutoCreator, CreatedInstance, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( INSTANCE_DATA_KNOB, set_node_data ) diff --git a/client/ayon_core/hosts/nuke/plugins/inventory/repair_old_loaders.py b/server_addon/nuke/client/ayon_nuke/plugins/inventory/repair_old_loaders.py similarity index 94% rename from client/ayon_core/hosts/nuke/plugins/inventory/repair_old_loaders.py rename to server_addon/nuke/client/ayon_nuke/plugins/inventory/repair_old_loaders.py index 7bb5c8ef20..11d65d4b8c 100644 --- a/client/ayon_core/hosts/nuke/plugins/inventory/repair_old_loaders.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/inventory/repair_old_loaders.py @@ -1,6 +1,6 @@ from ayon_core.lib import Logger from ayon_core.pipeline import InventoryAction -from ayon_core.hosts.nuke.api.lib import set_avalon_knob_data +from ayon_nuke.api.lib import set_avalon_knob_data class RepairOldLoaders(InventoryAction): diff --git a/client/ayon_core/hosts/nuke/plugins/inventory/select_containers.py b/server_addon/nuke/client/ayon_nuke/plugins/inventory/select_containers.py similarity index 88% rename from client/ayon_core/hosts/nuke/plugins/inventory/select_containers.py rename to server_addon/nuke/client/ayon_nuke/plugins/inventory/select_containers.py index 2fa9c06984..f67c8c16e9 100644 --- a/client/ayon_core/hosts/nuke/plugins/inventory/select_containers.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/inventory/select_containers.py @@ -1,5 +1,5 @@ from ayon_core.pipeline import InventoryAction -from ayon_core.hosts.nuke.api.command import viewer_update_and_undo_stop +from ayon_nuke.api.command import viewer_update_and_undo_stop class SelectContainers(InventoryAction): diff --git a/client/ayon_core/hosts/nuke/plugins/load/actions.py b/server_addon/nuke/client/ayon_nuke/plugins/load/actions.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/actions.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/actions.py index 53cb03087b..a4e2b156a3 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/actions.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/actions.py @@ -4,7 +4,7 @@ from ayon_core.lib import Logger from ayon_core.pipeline import load -from ayon_core.hosts.nuke.api import lib +from ayon_nuke.api import lib log = Logger.get_logger(__name__) diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/load/load_backdrop.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py index 50af8a4eb9..f21920cdd2 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py @@ -6,7 +6,7 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( find_free_space_to_paste_nodes, maintained_selection, reset_selection, @@ -14,8 +14,8 @@ from ayon_core.hosts.nuke.api.lib import ( get_avalon_knob_data, set_avalon_knob_data ) -from ayon_core.hosts.nuke.api.command import viewer_update_and_undo_stop -from ayon_core.hosts.nuke.api import containerise, update_container +from ayon_nuke.api.command import viewer_update_and_undo_stop +from ayon_nuke.api import containerise, update_container class LoadBackdropNodes(load.LoaderPlugin): diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_camera_abc.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/load_camera_abc.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py index 3c7d4f3bb2..a1e0eb0ecc 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_camera_abc.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py @@ -5,12 +5,12 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( maintained_selection ) diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_clip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/load/load_clip.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py index 7fa90da86f..cc2e7359b9 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_clip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py @@ -12,11 +12,11 @@ from ayon_core.pipeline.colorspace import ( get_imageio_file_rules_colorspace_from_filepath, get_current_context_imageio_config_preset, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( get_imageio_input_colorspace, maintained_selection ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop, @@ -26,7 +26,7 @@ from ayon_core.lib.transcoding import ( VIDEO_EXTENSIONS, IMAGE_EXTENSIONS ) -from ayon_core.hosts.nuke.api import plugin +from ayon_nuke.api import plugin class LoadClip(plugin.NukeLoader): diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_effects.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/load/load_effects.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py index be7420fcf0..ea397a6ae3 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_effects.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py @@ -8,7 +8,7 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_effects_ip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/load/load_effects_ip.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py index 9bb430b37b..3ced3fb4f0 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_effects_ip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py @@ -8,8 +8,8 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api import lib -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import lib +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/load_gizmo.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py index 57d00795ae..b3822e9de2 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py @@ -5,13 +5,13 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( maintained_selection, get_avalon_knob_data, set_avalon_knob_data, swap_node_with_dependency, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_gizmo_ip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/load_gizmo_ip.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py index ed2b1ec458..2fb3201108 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_gizmo_ip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py @@ -6,14 +6,14 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( maintained_selection, create_backdrop, get_avalon_knob_data, set_avalon_knob_data, swap_node_with_dependency, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_image.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/load_image.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py index b5fccd8a0d..b98668d983 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_image.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py @@ -7,10 +7,10 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( get_imageio_input_colorspace ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_matchmove.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/load/load_matchmove.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_model.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/load_model.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py index 40862cd1e0..2d509775f5 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py @@ -5,8 +5,8 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import maintained_selection -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api.lib import maintained_selection +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_ociolook.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/load/load_ociolook.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py index c369030b65..9210e83d6a 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_ociolook.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py @@ -10,7 +10,7 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, viewer_update_and_undo_stop, update_container, diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_script_precomp.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/load/load_script_precomp.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py index d6699be164..e68ae2651b 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_script_precomp.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py @@ -5,8 +5,8 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import get_avalon_knob_data -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api.lib import get_avalon_knob_data +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_backdrop.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py index fc17de95b4..89136fa52b 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py @@ -1,6 +1,6 @@ from pprint import pformat import pyblish.api -from ayon_core.hosts.nuke.api import lib as pnlib +from ayon_nuke.api import lib as pnlib import nuke diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_context_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_context_data.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py index 0a032e5a2d..0a5f1563d6 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_context_data.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py @@ -2,7 +2,7 @@ import os import nuke import pyblish.api from ayon_core.lib import get_version_from_path -import ayon_core.hosts.nuke.api as napi +import ayon_nuke.api as napi from ayon_core.pipeline import KnownPublishError diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_framerate.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_framerate.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_gizmo.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_model.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_model.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_nuke_instance_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_nuke_instance_data.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_reads.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_reads.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_slate_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_slate_node.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_workfile.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_workfile.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_writes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_writes.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_backdrop.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py index e53ce9015a..ec9e664a7c 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py @@ -5,7 +5,7 @@ import nuke import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( maintained_selection, reset_selection, select_nodes diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_camera.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_camera.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py index a1a5acb63b..dfb4b04f9a 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_camera.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py @@ -6,7 +6,7 @@ import nuke import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api.lib import maintained_selection +from ayon_nuke.api.lib import maintained_selection class ExtractCamera(publish.Extractor): diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py similarity index 96% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_gizmo.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py index 2a2e2255fd..3a8d418ff3 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py @@ -4,8 +4,8 @@ import nuke import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api import utils as pnutils -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api import utils as pnutils +from ayon_nuke.api.lib import ( maintained_selection, reset_selection, select_nodes diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_model.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_model.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py index 36896fe595..fce47714a4 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py @@ -4,7 +4,7 @@ import nuke import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( maintained_selection, select_nodes ) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_ouput_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py similarity index 95% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_ouput_node.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py index b8e038a4f5..c0e5c4334e 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_ouput_node.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py @@ -1,6 +1,6 @@ import nuke import pyblish.api -from ayon_core.hosts.nuke.api.lib import maintained_selection +from ayon_nuke.api.lib import maintained_selection class CreateOutputNode(pyblish.api.ContextPlugin): diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_output_directory.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_output_directory.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_render_local.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_render_local.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_review_data.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_data_lut.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py similarity index 95% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_review_data_lut.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py index 0674a2dd55..808ba9d8a7 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_data_lut.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py @@ -2,8 +2,8 @@ import os import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api import plugin -from ayon_core.hosts.nuke.api.lib import maintained_selection +from ayon_nuke.api import plugin +from ayon_nuke.api.lib import maintained_selection class ExtractReviewDataLut(publish.Extractor): diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_intermediates.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_review_intermediates.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py index 82c7b6e4c5..99e02536a4 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_intermediates.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py @@ -4,8 +4,8 @@ from pprint import pformat import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api import plugin -from ayon_core.hosts.nuke.api.lib import maintained_selection +from ayon_nuke.api import plugin +from ayon_nuke.api.lib import maintained_selection class ExtractReviewIntermediates(publish.Extractor): diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_script_save.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_script_save.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_slate_frame.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_slate_frame.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py index 627888ac92..ff01779208 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_slate_frame.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py @@ -7,7 +7,7 @@ import pyblish.api import six from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( maintained_selection, duplicate_node, get_view_process_node diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_asset_context.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_asset_context.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_asset_context.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_asset_context.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_backdrop.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_backdrop.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_backdrop.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_backdrop.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_gizmo.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_gizmo.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_gizmo.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_gizmo.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_knobs.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_knobs.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_knobs.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_knobs.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_output_resolution.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_output_resolution.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_output_resolution.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_output_resolution.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_proxy_mode.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_proxy_mode.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_proxy_mode.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_proxy_mode.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_rendered_frames.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_rendered_frames.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_rendered_frames.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_rendered_frames.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_script_attributes.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_script_attributes.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_script_attributes.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_script_attributes.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_write_nodes.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_write_nodes.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_write_nodes.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_write_nodes.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/remove_ouput_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/remove_ouput_node.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_asset_context.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_asset_context.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py index 93a30aa438..f747732cbf 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/validate_asset_context.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py @@ -10,7 +10,7 @@ from ayon_core.pipeline.publish import ( PublishXmlValidationError, OptionalPyblishPluginMixin ) -from ayon_core.hosts.nuke.api import SelectInstanceNodeAction +from ayon_nuke.api import SelectInstanceNodeAction class ValidateCorrectAssetContext( diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_backdrop.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_exposed_knobs.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_exposed_knobs.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py index 217fe6fb85..7ff13bca30 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/validate_exposed_knobs.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py @@ -1,7 +1,7 @@ import pyblish.api from ayon_core.pipeline.publish import get_errored_instances_from_context -from ayon_core.hosts.nuke.api.lib import link_knobs +from ayon_nuke.api.lib import link_knobs from ayon_core.pipeline.publish import ( OptionalPyblishPluginMixin, PublishValidationError diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_gizmo.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_knobs.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_knobs.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_output_resolution.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_output_resolution.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_proxy_mode.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_proxy_mode.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_rendered_frames.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_rendered_frames.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_script_attributes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_script_attributes.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py index 2bd2034079..15a586580e 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/validate_script_attributes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py @@ -5,7 +5,7 @@ from ayon_core.pipeline import ( OptionalPyblishPluginMixin ) from ayon_core.pipeline.publish import RepairAction -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( WorkfileSettings ) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_write_nodes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_write_nodes.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py index 0244c1d504..6a76bf06d1 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/validate_write_nodes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py @@ -2,7 +2,7 @@ from collections import defaultdict import pyblish.api from ayon_core.pipeline.publish import get_errored_instances_from_context -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( get_write_node_template_attr, set_node_knobs_from_settings, color_gui_to_int diff --git a/client/ayon_core/hosts/nuke/plugins/workfile_build/create_placeholder.py b/server_addon/nuke/client/ayon_nuke/plugins/workfile_build/create_placeholder.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/workfile_build/create_placeholder.py rename to server_addon/nuke/client/ayon_nuke/plugins/workfile_build/create_placeholder.py index a5490021e4..4d43d59bad 100644 --- a/client/ayon_core/hosts/nuke/plugins/workfile_build/create_placeholder.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/workfile_build/create_placeholder.py @@ -4,7 +4,7 @@ from ayon_core.pipeline.workfile.workfile_template_builder import ( CreatePlaceholderItem, PlaceholderCreateMixin, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( find_free_space_to_paste_nodes, get_extreme_positions, get_group_io_nodes, @@ -18,7 +18,7 @@ from ayon_core.hosts.nuke.api.lib import ( duplicate_node, node_tempfile, ) -from ayon_core.hosts.nuke.api.workfile_template_builder import ( +from ayon_nuke.api.workfile_template_builder import ( NukePlaceholderPlugin ) diff --git a/client/ayon_core/hosts/nuke/plugins/workfile_build/load_placeholder.py b/server_addon/nuke/client/ayon_nuke/plugins/workfile_build/load_placeholder.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/workfile_build/load_placeholder.py rename to server_addon/nuke/client/ayon_nuke/plugins/workfile_build/load_placeholder.py index 258f48c9d3..68bc10e41b 100644 --- a/client/ayon_core/hosts/nuke/plugins/workfile_build/load_placeholder.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/workfile_build/load_placeholder.py @@ -4,7 +4,7 @@ from ayon_core.pipeline.workfile.workfile_template_builder import ( LoadPlaceholderItem, PlaceholderLoadMixin, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( find_free_space_to_paste_nodes, get_extreme_positions, get_group_io_nodes, @@ -18,7 +18,7 @@ from ayon_core.hosts.nuke.api.lib import ( duplicate_node, node_tempfile, ) -from ayon_core.hosts.nuke.api.workfile_template_builder import ( +from ayon_nuke.api.workfile_template_builder import ( NukePlaceholderPlugin ) diff --git a/client/ayon_core/hosts/nuke/startup/__init__.py b/server_addon/nuke/client/ayon_nuke/startup/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/startup/__init__.py rename to server_addon/nuke/client/ayon_nuke/startup/__init__.py diff --git a/client/ayon_core/hosts/nuke/startup/clear_rendered.py b/server_addon/nuke/client/ayon_nuke/startup/clear_rendered.py similarity index 100% rename from client/ayon_core/hosts/nuke/startup/clear_rendered.py rename to server_addon/nuke/client/ayon_nuke/startup/clear_rendered.py diff --git a/client/ayon_core/hosts/nuke/startup/custom_write_node.py b/server_addon/nuke/client/ayon_nuke/startup/custom_write_node.py similarity index 99% rename from client/ayon_core/hosts/nuke/startup/custom_write_node.py rename to server_addon/nuke/client/ayon_nuke/startup/custom_write_node.py index f119e69919..5b0f240a49 100644 --- a/client/ayon_core/hosts/nuke/startup/custom_write_node.py +++ b/server_addon/nuke/client/ayon_nuke/startup/custom_write_node.py @@ -3,7 +3,7 @@ import os import nuke import nukescripts from ayon_core.pipeline import Anatomy, get_current_project_name -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( set_node_knobs_from_settings, get_nuke_imageio_settings ) diff --git a/client/ayon_core/hosts/nuke/startup/frame_setting_for_read_nodes.py b/server_addon/nuke/client/ayon_nuke/startup/frame_setting_for_read_nodes.py similarity index 100% rename from client/ayon_core/hosts/nuke/startup/frame_setting_for_read_nodes.py rename to server_addon/nuke/client/ayon_nuke/startup/frame_setting_for_read_nodes.py diff --git a/client/ayon_core/hosts/nuke/startup/menu.py b/server_addon/nuke/client/ayon_nuke/startup/menu.py similarity index 64% rename from client/ayon_core/hosts/nuke/startup/menu.py rename to server_addon/nuke/client/ayon_nuke/startup/menu.py index 2559e2142a..c3dd8cda8f 100644 --- a/client/ayon_core/hosts/nuke/startup/menu.py +++ b/server_addon/nuke/client/ayon_nuke/startup/menu.py @@ -1,5 +1,5 @@ from ayon_core.pipeline import install_host -from ayon_core.hosts.nuke.api import NukeHost +from ayon_nuke.api import NukeHost host = NukeHost() install_host(host) diff --git a/client/ayon_core/hosts/nuke/startup/write_to_read.py b/server_addon/nuke/client/ayon_nuke/startup/write_to_read.py similarity index 100% rename from client/ayon_core/hosts/nuke/startup/write_to_read.py rename to server_addon/nuke/client/ayon_nuke/startup/write_to_read.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/__init__.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/__init__.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/__init__.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/any_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/any_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/any_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/any_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/api_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/api_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/api_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/api_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/compiler/__init__.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/compiler/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/compiler/__init__.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/compiler/__init__.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/compiler/plugin_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/compiler/plugin_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/compiler/plugin_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/compiler/plugin_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_database.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_database.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_database.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_database.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_pool.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_pool.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_pool.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_pool.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/duration_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/duration_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/duration_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/duration_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/empty_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/empty_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/empty_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/empty_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/field_mask_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/field_mask_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/field_mask_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/field_mask_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/__init__.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/__init__.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/__init__.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/_parameterized.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/_parameterized.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/_parameterized.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/_parameterized.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/api_implementation.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/api_implementation.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/api_implementation.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/api_implementation.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/builder.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/builder.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/builder.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/builder.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/containers.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/containers.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/containers.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/containers.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/decoder.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/decoder.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/decoder.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/decoder.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/encoder.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/encoder.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/encoder.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/encoder.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/enum_type_wrapper.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/enum_type_wrapper.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/enum_type_wrapper.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/enum_type_wrapper.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/extension_dict.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/extension_dict.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/extension_dict.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/extension_dict.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/message_listener.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/message_listener.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/message_listener.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/message_listener.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/message_set_extensions_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/message_set_extensions_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/message_set_extensions_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/message_set_extensions_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/missing_enum_values_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/missing_enum_values_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/missing_enum_values_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/missing_enum_values_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_extensions_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_extensions_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_extensions_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_extensions_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_messages_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_messages_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_messages_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_messages_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/no_package_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/no_package_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/no_package_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/no_package_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/python_message.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/python_message.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/python_message.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/python_message.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/type_checkers.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/type_checkers.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/type_checkers.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/type_checkers.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/well_known_types.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/well_known_types.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/well_known_types.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/well_known_types.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/wire_format.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/wire_format.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/wire_format.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/wire_format.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/json_format.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/json_format.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/json_format.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/json_format.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/message.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/message.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/message.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/message.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/message_factory.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/message_factory.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/message_factory.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/message_factory.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/proto_builder.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/proto_builder.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/proto_builder.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/proto_builder.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/__init__.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/__init__.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/__init__.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/cpp_message.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/cpp_message.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/cpp_message.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/cpp_message.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/python_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/python_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/python_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/python_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/reflection.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/reflection.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/reflection.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/reflection.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/service.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/service.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/service.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/service.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/service_reflection.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/service_reflection.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/service_reflection.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/service_reflection.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/source_context_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/source_context_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/source_context_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/source_context_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/struct_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/struct_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/struct_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/struct_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/symbol_database.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/symbol_database.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/symbol_database.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/symbol_database.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/text_encoding.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/text_encoding.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/text_encoding.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/text_encoding.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/text_format.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/text_format.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/text_format.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/text_format.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/timestamp_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/timestamp_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/timestamp_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/timestamp_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/type_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/type_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/type_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/type_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/util/__init__.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/util/__init__.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/__init__.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/util/json_format_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/json_format_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/util/json_format_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/json_format_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/util/json_format_proto3_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/json_format_proto3_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/util/json_format_proto3_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/json_format_proto3_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/wrappers_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/wrappers_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/wrappers_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/wrappers_pb2.py From 6e0491af06fdb1ac28f9b7162979bd15ce6f32dd Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Mon, 27 May 2024 20:45:55 +0800 Subject: [PATCH 27/42] add options to read the deepexr file --- .../hosts/nuke/plugins/load/load_clip.py | 33 ++++++++++++++----- server_addon/nuke/package.py | 2 +- .../nuke/server/settings/loader_plugins.py | 7 ++-- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_clip.py b/client/ayon_core/hosts/nuke/plugins/load/load_clip.py index 7fa90da86f..23d8c4ae85 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_clip.py +++ b/client/ayon_core/hosts/nuke/plugins/load/load_clip.py @@ -61,7 +61,8 @@ class LoadClip(plugin.NukeLoader): # option gui options_defaults = { "start_at_workfile": True, - "add_retime": True + "add_retime": True, + "deep_exr": False } node_name_template = "{class_name}_{ext}" @@ -78,6 +79,11 @@ class LoadClip(plugin.NukeLoader): "add_retime", help="Load with retime", default=cls.options_defaults["add_retime"] + ), + qargparse.Boolean( + "deep_exr", + help="Read with deep exr", + default=cls.options_defaults["deep_exr"] ) ] @@ -113,6 +119,9 @@ class LoadClip(plugin.NukeLoader): add_retime = options.get( "add_retime", self.options_defaults["add_retime"]) + deep_exr = options.get( + "deep_exr", self.options_defaults["deep_exr"]) + repre_id = repre_entity["id"] self.log.debug( @@ -153,13 +162,21 @@ class LoadClip(plugin.NukeLoader): return read_name = self._get_node_name(context) - - # Create the Loader with the filename path set - read_node = nuke.createNode( - "Read", - "name {}".format(read_name), - inpanel=False - ) + read_node = None + if deep_exr: + # Create the Loader with the filename path set + read_node = nuke.createNode( + "DeepRead", + "name {}".format(read_name), + inpanel=False + ) + else: + # Create the Loader with the filename path set + read_node = nuke.createNode( + "Read", + "name {}".format(read_name), + inpanel=False + ) # get colorspace colorspace = ( diff --git a/server_addon/nuke/package.py b/server_addon/nuke/package.py index d8decef208..e6f3a0bd44 100644 --- a/server_addon/nuke/package.py +++ b/server_addon/nuke/package.py @@ -1,3 +1,3 @@ name = "nuke" title = "Nuke" -version = "0.1.14" +version = "0.1.15" diff --git a/server_addon/nuke/server/settings/loader_plugins.py b/server_addon/nuke/server/settings/loader_plugins.py index 531ea8d986..22cb469e8d 100644 --- a/server_addon/nuke/server/settings/loader_plugins.py +++ b/server_addon/nuke/server/settings/loader_plugins.py @@ -22,7 +22,9 @@ class LoadClipOptionsModel(BaseSettingsModel): add_retime: bool = SettingsField( title="Add retime" ) - + deep_exr: bool = SettingsField( + title="Deep Exr Read Node" + ) class LoadClipModel(BaseSettingsModel): enabled: bool = SettingsField( @@ -65,7 +67,8 @@ DEFAULT_LOADER_PLUGINS_SETTINGS = { "node_name_template": "{class_name}_{ext}", "options_defaults": { "start_at_workfile": True, - "add_retime": True + "add_retime": True, + "deep_exr": False } } } From f18f50ad9cd383cf6c0236bbbd69e28cebf47e9a Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 27 May 2024 14:49:02 +0200 Subject: [PATCH 28/42] Add settings category "nuke" to various plugins for consistency. - Added a common settings category "nuke" to multiple plugin files. --- .../client/ayon_nuke/plugins/create/create_backdrop.py | 2 ++ .../client/ayon_nuke/plugins/create/create_camera.py | 2 ++ .../nuke/client/ayon_nuke/plugins/create/create_gizmo.py | 2 ++ .../nuke/client/ayon_nuke/plugins/create/create_model.py | 2 ++ .../client/ayon_nuke/plugins/create/create_source.py | 2 ++ .../ayon_nuke/plugins/create/create_write_image.py | 3 +++ .../ayon_nuke/plugins/create/create_write_prerender.py | 3 +++ .../ayon_nuke/plugins/create/create_write_render.py | 3 +++ .../client/ayon_nuke/plugins/create/workfile_creator.py | 3 +++ .../nuke/client/ayon_nuke/plugins/load/load_backdrop.py | 2 ++ .../client/ayon_nuke/plugins/load/load_camera_abc.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_clip.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_effects.py | 3 ++- .../client/ayon_nuke/plugins/load/load_effects_ip.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_gizmo.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_image.py | 6 +++--- .../nuke/client/ayon_nuke/plugins/load/load_matchmove.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_model.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_ociolook.py | 2 ++ .../client/ayon_nuke/plugins/load/load_script_precomp.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_backdrop.py | 2 ++ .../ayon_nuke/plugins/publish/collect_context_data.py | 2 ++ .../ayon_nuke/plugins/publish/collect_framerate.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_gizmo.py | 2 ++ .../ayon_nuke/plugins/publish/collect_headless_farm.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_model.py | 2 ++ .../plugins/publish/collect_nuke_instance_data.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_reads.py | 2 ++ .../ayon_nuke/plugins/publish/collect_slate_node.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_workfile.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_writes.py | 2 ++ .../client/ayon_nuke/plugins/publish/extract_backdrop.py | 2 ++ .../client/ayon_nuke/plugins/publish/extract_camera.py | 2 ++ .../client/ayon_nuke/plugins/publish/extract_gizmo.py | 2 ++ .../ayon_nuke/plugins/publish/extract_headless_farm.py | 2 ++ .../client/ayon_nuke/plugins/publish/extract_model.py | 2 ++ .../ayon_nuke/plugins/publish/extract_ouput_node.py | 4 +++- .../plugins/publish/extract_output_directory.py | 2 +- .../ayon_nuke/plugins/publish/extract_render_local.py | 2 ++ .../ayon_nuke/plugins/publish/extract_review_data.py | 2 ++ .../ayon_nuke/plugins/publish/extract_review_data_lut.py | 2 ++ .../plugins/publish/extract_review_intermediates.py | 2 ++ .../ayon_nuke/plugins/publish/extract_script_save.py | 4 +++- .../ayon_nuke/plugins/publish/extract_slate_frame.py | 2 ++ .../plugins/publish/increment_script_version.py | 5 +++-- .../ayon_nuke/plugins/publish/remove_ouput_node.py | 4 +++- .../ayon_nuke/plugins/publish/validate_asset_context.py | 2 ++ .../ayon_nuke/plugins/publish/validate_backdrop.py | 2 ++ .../ayon_nuke/plugins/publish/validate_exposed_knobs.py | 3 +++ .../client/ayon_nuke/plugins/publish/validate_gizmo.py | 2 ++ .../client/ayon_nuke/plugins/publish/validate_knobs.py | 2 ++ .../plugins/publish/validate_output_resolution.py | 2 ++ .../ayon_nuke/plugins/publish/validate_proxy_mode.py | 2 ++ .../plugins/publish/validate_rendered_frames.py | 2 ++ .../plugins/publish/validate_script_attributes.py | 2 ++ .../ayon_nuke/plugins/publish/validate_write_nodes.py | 2 ++ server_addon/nuke/package.py | 9 ++++++++- 58 files changed, 131 insertions(+), 11 deletions(-) diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py index 6d50b066d7..f97b9efeb6 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py @@ -10,6 +10,8 @@ from ayon_nuke.api import ( class CreateBackdrop(NukeCreator): """Add Publishable Backdrop""" + settings_category = "nuke" + identifier = "create_backdrop" label = "Nukenodes (backdrop)" product_type = "nukenodes" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py index acf7448232..69e5b9c676 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py @@ -12,6 +12,8 @@ from ayon_nuke.api.lib import ( class CreateCamera(NukeCreator): """Add Publishable Camera""" + settings_category = "nuke" + identifier = "create_camera" label = "Camera (3d)" product_type = "camera" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py index cc1c4edf82..6be7cd58db 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py @@ -9,6 +9,8 @@ from ayon_nuke.api import ( class CreateGizmo(NukeCreator): """Add Publishable Group as gizmo""" + settings_category = "nuke" + identifier = "create_gizmo" label = "Gizmo (group)" product_type = "gizmo" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py index 6c1bf612b9..b7d7b740c2 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py @@ -9,6 +9,8 @@ from ayon_nuke.api import ( class CreateModel(NukeCreator): """Add Publishable Camera""" + settings_category = "nuke" + identifier = "create_model" label = "Model (3d)" product_type = "model" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py index b2a21f032d..1579cebb1d 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py @@ -15,6 +15,8 @@ from ayon_core.pipeline import ( class CreateSource(NukeCreator): """Add Publishable Read with source""" + settings_category = "nuke" + identifier = "create_source" label = "Source (read)" product_type = "source" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py index 43f9d4c207..11f574732a 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py @@ -16,6 +16,9 @@ from ayon_nuke.api.plugin import exposed_write_knobs class CreateWriteImage(napi.NukeWriteCreator): + + settings_category = "nuke" + identifier = "create_write_image" label = "Image (write)" product_type = "image" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py index 91b0022c86..c18217c4c5 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py @@ -13,6 +13,9 @@ from ayon_nuke.api.plugin import exposed_write_knobs class CreateWritePrerender(napi.NukeWriteCreator): + + settings_category = "nuke" + identifier = "create_write_prerender" label = "Prerender (write)" product_type = "prerender" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py index 85a09d65b7..8ff9b2b15e 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py @@ -13,6 +13,9 @@ from ayon_nuke.api.plugin import exposed_write_knobs class CreateWriteRender(napi.NukeWriteCreator): + + settings_category = "nuke" + identifier = "create_write_render" label = "Render (write)" product_type = "render" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py b/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py index c49ca1f502..463d898224 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py @@ -13,6 +13,9 @@ import nuke class WorkfileCreator(AutoCreator): + + settings_category = "nuke" + identifier = "workfile" product_type = "workfile" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py index f21920cdd2..054a56d041 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py @@ -25,6 +25,8 @@ class LoadBackdropNodes(load.LoaderPlugin): representations = {"*"} extensions = {"nk"} + settings_category = "nuke" + label = "Import Nuke Nodes" order = 0 icon = "eye" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py index a1e0eb0ecc..3930cf52fa 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py @@ -24,6 +24,8 @@ class AlembicCameraLoader(load.LoaderPlugin): representations = {"*"} extensions = {"abc"} + settings_category = "nuke" + label = "Load Alembic Camera" icon = "camera" color = "orange" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py index cc2e7359b9..8be1c7d109 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py @@ -48,6 +48,8 @@ class LoadClip(plugin.NukeLoader): ext.lstrip(".") for ext in IMAGE_EXTENSIONS.union(VIDEO_EXTENSIONS) ) + settings_category = "nuke" + label = "Load Clip" order = -20 icon = "file-video-o" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py index ea397a6ae3..e923a02424 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py @@ -22,13 +22,14 @@ class LoadEffects(load.LoaderPlugin): representations = {"*"} extensions = {"json"} + settings_category = "nuke" + label = "Load Effects - nodes" order = 0 icon = "cc" color = "white" ignore_attr = ["useLifetime"] - def load(self, context, name, namespace, data): """ Loading function to get the soft effects to particular read node diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py index 3ced3fb4f0..ce7e7debeb 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py @@ -23,6 +23,8 @@ class LoadEffectsInputProcess(load.LoaderPlugin): representations = {"*"} extensions = {"json"} + settings_category = "nuke" + label = "Load Effects - Input Process" order = 0 icon = "eye" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py index b3822e9de2..1c91af0c1c 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py @@ -25,6 +25,8 @@ class LoadGizmo(load.LoaderPlugin): representations = {"*"} extensions = {"nk"} + settings_category = "nuke" + label = "Load Gizmo" order = 0 icon = "dropbox" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py index 2fb3201108..36e878fdf1 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py @@ -27,6 +27,8 @@ class LoadGizmoInputProcess(load.LoaderPlugin): representations = {"*"} extensions = {"nk"} + settings_category = "nuke" + label = "Load Gizmo - Input Process" order = 0 icon = "eye" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py index b98668d983..0c43f5a5ca 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py @@ -33,9 +33,9 @@ class LoadImage(load.LoaderPlugin): "image", } representations = {"*"} - extensions = set( - ext.lstrip(".") for ext in IMAGE_EXTENSIONS - ) + extensions = set(ext.lstrip(".") for ext in IMAGE_EXTENSIONS) + + settings_category = "nuke" label = "Load Image" order = -10 diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py index beebd0458f..c1b5a24504 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py @@ -11,6 +11,8 @@ class MatchmoveLoader(load.LoaderPlugin): representations = {"*"} extensions = {"py"} + settings_category = "nuke" + defaults = ["Camera", "Object"] label = "Run matchmove script" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py index 2d509775f5..551147be96 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py @@ -22,6 +22,8 @@ class AlembicModelLoader(load.LoaderPlugin): representations = {"*"} extensions = {"abc"} + settings_category = "nuke" + label = "Load Alembic" icon = "cube" color = "orange" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py index 9210e83d6a..bdff8d7e28 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py @@ -24,6 +24,8 @@ class LoadOcioLookNodes(load.LoaderPlugin): representations = {"*"} extensions = {"json"} + settings_category = "nuke" + label = "Load OcioLook [nodes]" order = 0 icon = "cc" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py index e68ae2651b..cf543dabfd 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py @@ -20,6 +20,8 @@ class LinkAsGroup(load.LoaderPlugin): representations = {"*"} extensions = {"nk"} + settings_category = "nuke" + label = "Load Precomp" order = 0 icon = "file" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py index 89136fa52b..1471159380 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py @@ -13,6 +13,8 @@ class CollectBackdrops(pyblish.api.InstancePlugin): hosts = ["nuke"] families = ["nukenodes"] + settings_category = "nuke" + def process(self, instance): self.log.debug(pformat(instance.data)) diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py index 0a5f1563d6..33c8e63e82 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py @@ -13,6 +13,8 @@ class CollectContextData(pyblish.api.ContextPlugin): label = "Collect context data" hosts = ['nuke'] + settings_category = "nuke" + def process(self, context): # sourcery skip: avoid-builtin-shadow root_node = nuke.root() diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py index 88a449e745..cd77eab0f1 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py @@ -13,5 +13,7 @@ class CollectFramerate(pyblish.api.ContextPlugin): "nukeassist" ] + settings_category = "nuke" + def process(self, context): context.data["fps"] = nuke.root()["fps"].getValue() diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py index fda1c7ac31..ece9823b37 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py @@ -11,6 +11,8 @@ class CollectGizmo(pyblish.api.InstancePlugin): hosts = ["nuke"] families = ["gizmo"] + settings_category = "nuke" + def process(self, instance): gizmo_node = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py index 3f49a2bf01..c00b9a8f5d 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py @@ -13,6 +13,8 @@ class CollectRenderOnFarm(pyblish.api.ContextPlugin): label = "Collect Render On Farm" hosts = ["nuke"] + settings_category = "nuke" + def process(self, context): if not context.data.get("render_on_farm", False): return diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py index 1a2bc9c019..f4266bbbcb 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py @@ -11,6 +11,8 @@ class CollectModel(pyblish.api.InstancePlugin): hosts = ["nuke"] families = ["model"] + settings_category = "nuke" + def process(self, instance): geo_node = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py index 951072ff3f..d1392a8460 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py @@ -11,6 +11,8 @@ class CollectInstanceData(pyblish.api.InstancePlugin): label = "Collect Nuke Instance Data" hosts = ["nuke", "nukeassist"] + settings_category = "nuke" + # presets sync_workfile_version_on_families = [] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py index af17933eb1..439374e825 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py @@ -12,6 +12,8 @@ class CollectNukeReads(pyblish.api.InstancePlugin): hosts = ["nuke", "nukeassist"] families = ["source"] + settings_category = "nuke" + def process(self, instance): self.log.debug("checking instance: {}".format(instance)) diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py index ac30bd6051..bb3b0083ab 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py @@ -10,6 +10,8 @@ class CollectSlate(pyblish.api.InstancePlugin): hosts = ["nuke"] families = ["render"] + settings_category = "nuke" + def process(self, instance): node = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py index 0f03572f8b..e4bd5ed129 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py @@ -11,6 +11,8 @@ class CollectWorkfile(pyblish.api.InstancePlugin): hosts = ['nuke'] families = ["workfile"] + settings_category = "nuke" + def process(self, instance): # sourcery skip: avoid-builtin-shadow script_data = instance.context.data["scriptData"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py index 27525bcad1..c90f335d07 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py @@ -14,6 +14,8 @@ class CollectNukeWrites(pyblish.api.InstancePlugin, hosts = ["nuke", "nukeassist"] families = ["render", "prerender", "image"] + settings_category = "nuke" + # cache _write_nodes = {} _frame_ranges = {} diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py index ec9e664a7c..8c42920979 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py @@ -25,6 +25,8 @@ class ExtractBackdropNode(publish.Extractor): hosts = ["nuke"] families = ["nukenodes"] + settings_category = "nuke" + def process(self, instance): tmp_nodes = [] child_nodes = instance.data["transientData"]["childNodes"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py index dfb4b04f9a..83914087e3 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py @@ -17,6 +17,8 @@ class ExtractCamera(publish.Extractor): families = ["camera"] hosts = ["nuke"] + settings_category = "nuke" + # presets write_geo_knobs = [ ("file_type", "abc"), diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py index 3a8d418ff3..05e3164163 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py @@ -23,6 +23,8 @@ class ExtractGizmo(publish.Extractor): hosts = ["nuke"] families = ["gizmo"] + settings_category = "nuke" + def process(self, instance): tmp_nodes = [] orig_grpn = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py index 4ba55f8c46..4721fe4462 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py @@ -15,6 +15,8 @@ class ExtractRenderOnFarm(pyblish.api.InstancePlugin): hosts = ["nuke"] families = ["render_on_farm"] + settings_category = "nuke" + def process(self, instance): if not instance.context.data.get("render_on_farm", False): return diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py index fce47714a4..58b9d4179b 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py @@ -18,6 +18,8 @@ class ExtractModel(publish.Extractor): families = ["model"] hosts = ["nuke"] + settings_category = "nuke" + # presets write_geo_knobs = [ ("file_type", "abc"), diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py index c0e5c4334e..52072cddc5 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py @@ -11,7 +11,9 @@ class CreateOutputNode(pyblish.api.ContextPlugin): label = 'Output Node Create' order = pyblish.api.ExtractorOrder + 0.4 families = ["workfile"] - hosts = ['nuke'] + hosts = ["nuke"] + + settings_category = "nuke" def process(self, context): # capture selection state diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py index d999d200de..45156ca9ae 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py @@ -10,7 +10,7 @@ class ExtractOutputDirectory(pyblish.api.InstancePlugin): label = "Output Directory" optional = True - # targets = ["process"] + settings_category = "nuke" def process(self, instance): diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py index c8be2a5564..55a2beea81 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py @@ -25,6 +25,8 @@ class NukeRenderLocal(publish.Extractor, hosts = ["nuke"] families = ["render.local", "prerender.local", "image.local"] + settings_category = "nuke" + def process(self, instance): child_nodes = ( instance.data.get("transientData", {}).get("childNodes") diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py index 258a019319..856616898b 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py @@ -16,6 +16,8 @@ class ExtractReviewData(publish.Extractor): families = ["review"] hosts = ["nuke"] + settings_category = "nuke" + def process(self, instance): fpath = instance.data["path"] ext = os.path.splitext(fpath)[-1][1:] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py index 808ba9d8a7..d3377807ea 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py @@ -19,6 +19,8 @@ class ExtractReviewDataLut(publish.Extractor): families = ["review"] hosts = ["nuke"] + settings_category = "nuke" + def process(self, instance): self.log.debug("Creating staging dir...") if "representations" in instance.data: diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py index 99e02536a4..c12d14adf4 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py @@ -22,6 +22,8 @@ class ExtractReviewIntermediates(publish.Extractor): families = ["review"] hosts = ["nuke"] + settings_category = "nuke" + # presets viewer_lut_raw = None outputs = {} diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py index d325684a7c..ea584b6529 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py @@ -6,7 +6,9 @@ class ExtractScriptSave(pyblish.api.InstancePlugin): """Save current Nuke workfile script""" label = 'Script Save' order = pyblish.api.ExtractorOrder - 0.1 - hosts = ['nuke'] + hosts = ["nuke"] + + settings_category = "nuke" def process(self, instance): diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py index ff01779208..47750ea637 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py @@ -27,6 +27,8 @@ class ExtractSlateFrame(publish.Extractor): families = ["slate"] hosts = ["nuke"] + settings_category = "nuke" + # Settings values key_value_mapping = { "f_submission_note": { diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py index 70fd04a985..36659aa2d2 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py @@ -1,4 +1,3 @@ - import nuke import pyblish.api @@ -10,7 +9,9 @@ class IncrementScriptVersion(pyblish.api.ContextPlugin): label = "Increment Script Version" optional = True families = ["workfile"] - hosts = ['nuke'] + hosts = ["nuke"] + + settings_category = "nuke" def process(self, context): if not context.data.get("increment_script_version", True): diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py index fb77e8638c..4c17cb5f56 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py @@ -9,7 +9,9 @@ class RemoveOutputNode(pyblish.api.ContextPlugin): label = 'Output Node Remove' order = pyblish.api.IntegratorOrder + 0.4 families = ["workfile"] - hosts = ['nuke'] + hosts = ["nuke"] + + settings_category = "nuke" def process(self, context): try: diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py index f747732cbf..903648fd1b 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py @@ -34,6 +34,8 @@ class ValidateCorrectAssetContext( ] optional = True + settings_category = "nuke" + @classmethod def apply_settings(cls, project_settings): """Apply deprecated settings from project settings. diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py index 22344c661e..133dc6ec93 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py @@ -65,6 +65,8 @@ class ValidateBackdrop( hosts = ["nuke"] actions = [SelectCenterInNodeGraph] + settings_category = "nuke" + def process(self, instance): if not self.is_active(instance.data): return diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py index 7ff13bca30..d1b7c146fb 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py @@ -52,6 +52,9 @@ class ValidateExposedKnobs( label = "Validate Exposed Knobs" actions = [RepairExposedKnobs] hosts = ["nuke"] + + settings_category = "nuke" + product_types_mapping = { "render": "CreateWriteRender", "prerender": "CreateWritePrerender", diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py index 2cdcb90d70..3804efc9ae 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py @@ -43,6 +43,8 @@ class ValidateGizmo(pyblish.api.InstancePlugin): hosts = ["nuke"] actions = [OpenFailedGroupNode] + settings_category = "nuke" + def process(self, instance): grpn = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py index 8bcde9609d..ea03bd94b2 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py @@ -32,6 +32,8 @@ class ValidateKnobs(pyblish.api.ContextPlugin): actions = [RepairContextAction] optional = True + settings_category = "nuke" + knobs = "{}" def process(self, context): diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py index e8a00d2294..c7a6f7d47c 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py @@ -27,6 +27,8 @@ class ValidateOutputResolution( hosts = ["nuke"] actions = [RepairAction] + settings_category = "nuke" + missing_msg = "Missing Reformat node in render group node" resolution_msg = "Reformat is set to wrong format" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py index 26e54295c9..1eb858b17e 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py @@ -25,6 +25,8 @@ class ValidateProxyMode(pyblish.api.ContextPlugin): hosts = ["nuke"] actions = [FixProxyMode] + settings_category = "nuke" + def process(self, context): rootNode = nuke.root() diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py index 76ac7e97ad..20b7f6a6ac 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py @@ -54,6 +54,8 @@ class ValidateRenderedFrames(pyblish.api.InstancePlugin): hosts = ["nuke", "nukestudio"] actions = [RepairCollectionActionToLocal, RepairCollectionActionToFarm] + settings_category = "nuke" + def process(self, instance): node = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py index 15a586580e..617d8d835b 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py @@ -23,6 +23,8 @@ class ValidateScriptAttributes( optional = True actions = [RepairAction] + settings_category = "nuke" + def process(self, instance): if not self.is_active(instance.data): return diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py index 6a76bf06d1..d642a4314c 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py @@ -59,6 +59,8 @@ class ValidateNukeWriteNode( actions = [RepairNukeWriteNodeAction] hosts = ["nuke"] + settings_category = "nuke" + def process(self, instance): if not self.is_active(instance.data): return diff --git a/server_addon/nuke/package.py b/server_addon/nuke/package.py index d8decef208..af36e61cef 100644 --- a/server_addon/nuke/package.py +++ b/server_addon/nuke/package.py @@ -1,3 +1,10 @@ name = "nuke" title = "Nuke" -version = "0.1.14" +version = "0.2.0" + +client_dir = "ayon_nuke" + +ayon_required_addons = { + "core": ">0.3.2", +} +ayon_compatible_addons = {} From 18b7e6ec9e0e8b21a3926e15f8575e04aae004d0 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 27 May 2024 15:08:54 +0200 Subject: [PATCH 29/42] Add new version info for "nuke" addon. - Update the MOVED_ADDON_MILESTONE_VERSIONS dictionary to include the "nuke" addon with version 0.2.0. --- client/ayon_core/addon/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py index dba25510be..64627ef32e 100644 --- a/client/ayon_core/addon/base.py +++ b/client/ayon_core/addon/base.py @@ -54,6 +54,7 @@ MOVED_ADDON_MILESTONE_VERSIONS = { "clockify": VersionInfo(0, 2, 0), "traypublisher": VersionInfo(0, 2, 0), "tvpaint": VersionInfo(0, 2, 0), + "nuke": VersionInfo(0, 2, 0), } # Inherit from `object` for Python 2 hosts From ca29fe77c7ec1939b863cbdb5f916f381ecfbbf5 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 27 May 2024 15:13:25 +0200 Subject: [PATCH 30/42] add line --- client/ayon_core/addon/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py index 64627ef32e..939fab68b8 100644 --- a/client/ayon_core/addon/base.py +++ b/client/ayon_core/addon/base.py @@ -57,6 +57,7 @@ MOVED_ADDON_MILESTONE_VERSIONS = { "nuke": VersionInfo(0, 2, 0), } + # Inherit from `object` for Python 2 hosts class _ModuleClass(object): """Fake module class for storing AYON addons. From 007d4a453d2a69d143cf574db837a3f32ae930fb Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 27 May 2024 15:24:14 +0200 Subject: [PATCH 31/42] import statements to use the correct module path for Nuke host API. --- server_addon/nuke/client/ayon_nuke/api/pipeline.py | 2 +- .../nuke/client/ayon_nuke/plugins/create/create_write_image.py | 2 +- .../client/ayon_nuke/plugins/create/create_write_prerender.py | 2 +- .../nuke/client/ayon_nuke/plugins/create/create_write_render.py | 2 +- .../nuke/client/ayon_nuke/plugins/publish/collect_writes.py | 2 +- .../client/ayon_nuke/plugins/publish/extract_render_local.py | 2 +- .../nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py | 2 +- .../nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py | 2 +- .../ayon_nuke/plugins/publish/validate_output_resolution.py | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/server_addon/nuke/client/ayon_nuke/api/pipeline.py b/server_addon/nuke/client/ayon_nuke/api/pipeline.py index 0425dd20d4..ad8e17b1f6 100644 --- a/server_addon/nuke/client/ayon_nuke/api/pipeline.py +++ b/server_addon/nuke/client/ayon_nuke/api/pipeline.py @@ -28,7 +28,7 @@ from ayon_core.pipeline import ( ) from ayon_core.pipeline.workfile import BuildWorkfile from ayon_core.tools.utils import host_tools -from ayon_core.hosts.nuke import NUKE_ROOT_DIR +from ayon_nuke import NUKE_ROOT_DIR from ayon_core.tools.workfile_template_build import open_template_ui from .lib import ( diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py index 11f574732a..2268817e76 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py @@ -11,7 +11,7 @@ from ayon_core.lib import ( UISeparatorDef, EnumDef ) -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_nuke.api.plugin import exposed_write_knobs diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py index c18217c4c5..014e91e81c 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py @@ -8,7 +8,7 @@ from ayon_core.pipeline import ( from ayon_core.lib import ( BoolDef ) -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_nuke.api.plugin import exposed_write_knobs diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py index 8ff9b2b15e..bed081c882 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py @@ -8,7 +8,7 @@ from ayon_core.pipeline import ( from ayon_core.lib import ( BoolDef ) -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_nuke.api.plugin import exposed_write_knobs diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py index c90f335d07..816f493d72 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py @@ -1,7 +1,7 @@ import os import nuke import pyblish.api -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_core.pipeline import publish diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py index 55a2beea81..c865684e7a 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py @@ -4,7 +4,7 @@ import shutil import pyblish.api import clique import nuke -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_core.pipeline import publish from ayon_core.lib import collect_frames diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py index 133dc6ec93..f7b94e0c82 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py @@ -1,6 +1,6 @@ import nuke import pyblish -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_core.pipeline.publish import ( ValidateContentsOrder, diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py index 3804efc9ae..55249ae931 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py @@ -1,6 +1,6 @@ import pyblish from ayon_core.pipeline import PublishXmlValidationError -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi import nuke diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py index c7a6f7d47c..440cb8b758 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py @@ -1,6 +1,6 @@ import pyblish.api -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_core.pipeline.publish import RepairAction from ayon_core.pipeline import ( PublishXmlValidationError, From 45fc7f02d1e170f38249541d6dba77b519980884 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 27 May 2024 15:38:06 +0200 Subject: [PATCH 32/42] fix support for PySide6 in loader --- client/ayon_core/tools/loader/ui/products_delegates.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/loader/ui/products_delegates.py b/client/ayon_core/tools/loader/ui/products_delegates.py index 6bcb78ec66..51424034aa 100644 --- a/client/ayon_core/tools/loader/ui/products_delegates.py +++ b/client/ayon_core/tools/loader/ui/products_delegates.py @@ -107,7 +107,10 @@ class VersionDelegate(QtWidgets.QStyledItemDelegate): style = QtWidgets.QApplication.style() style.drawControl( - style.CE_ItemViewItem, option, painter, option.widget + QtWidgets.QCommonStyle.CE_ItemViewItem, + option, + painter, + option.widget ) painter.save() @@ -207,7 +210,10 @@ class StatusDelegate(QtWidgets.QStyledItemDelegate): style = QtWidgets.QApplication.style() style.drawControl( - style.CE_ItemViewItem, option, painter, option.widget + QtWidgets.QCommonStyle.CE_ItemViewItem, + option, + painter, + option.widget ) painter.save() From afe0887d96e686937d3e1dca4acdaf7163eb11bf Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 27 May 2024 15:45:53 +0200 Subject: [PATCH 33/42] fix more constants --- .../tools/loader/ui/products_delegates.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/tools/loader/ui/products_delegates.py b/client/ayon_core/tools/loader/ui/products_delegates.py index 51424034aa..1ac19b53eb 100644 --- a/client/ayon_core/tools/loader/ui/products_delegates.py +++ b/client/ayon_core/tools/loader/ui/products_delegates.py @@ -122,9 +122,14 @@ class VersionDelegate(QtWidgets.QStyledItemDelegate): pen.setColor(fg_color) painter.setPen(pen) - text_rect = style.subElementRect(style.SE_ItemViewItemText, option) + text_rect = style.subElementRect( + QtWidgets.QCommonStyle.SE_ItemViewItemText, + option + ) text_margin = style.proxy().pixelMetric( - style.PM_FocusFrameHMargin, option, option.widget + QtWidgets.QCommonStyle.PM_FocusFrameHMargin, + option, + option.widget ) + 1 painter.drawText( @@ -218,9 +223,14 @@ class StatusDelegate(QtWidgets.QStyledItemDelegate): painter.save() - text_rect = style.subElementRect(style.SE_ItemViewItemText, option) + text_rect = style.subElementRect( + QtWidgets.QCommonStyle.SE_ItemViewItemText, + option + ) text_margin = style.proxy().pixelMetric( - style.PM_FocusFrameHMargin, option, option.widget + QtWidgets.QCommonStyle.PM_FocusFrameHMargin, + option, + option.widget ) + 1 padded_text_rect = text_rect.adjusted( text_margin, 0, - text_margin, 0 From 95976b7cfdbfeadda4aab128b30fea737638c6ff Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 28 May 2024 13:33:46 +0200 Subject: [PATCH 34/42] actually return parent on PublishAttributeValues --- client/ayon_core/pipeline/create/context.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/create/context.py b/client/ayon_core/pipeline/create/context.py index 7615ce6aee..45846553a4 100644 --- a/client/ayon_core/pipeline/create/context.py +++ b/client/ayon_core/pipeline/create/context.py @@ -681,7 +681,7 @@ class PublishAttributeValues(AttributeValues): @property def parent(self): - self.publish_attributes.parent + return self.publish_attributes.parent class PublishAttributes: From 0ebda1d45cd70ad5b67a6ab8d20453d87239aa5f Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 28 May 2024 20:08:11 +0800 Subject: [PATCH 35/42] code tweaks and clean up --BigRoy's comment --- .../hosts/substancepainter/api/lib.py | 49 +++---------------- .../plugins/create/create_textures.py | 34 +++++++++++-- .../plugins/publish/validate_ouput_maps.py | 8 ++- 3 files changed, 42 insertions(+), 49 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index f026425f24..c89f87ebb9 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -13,43 +13,6 @@ import substance_painter.export from qtpy import QtGui, QtWidgets, QtCore -def get_channel_map_enum(): - """Function to get channel map items value. - For backward compatibility only. Will be removed after - client addon migration - """ - return { - "BaseColor": "Base Color", - "Metallic": "Metallic", - "Roughness": "Roughness", - "SpecularEdgeColor": "Specular Edge Color", - "Emissive": "Emissive", - "Opacity": "Opacity", - "Displacement": "Displacement", - "Glossiness": "Glossiness", - "Anisotropylevel": "Anisotropy Level", - "AO": "Ambient Occulsion", - "Anisotropyangle": "Anisotropy Angle", - "Transmissive": "Transmissive", - "Reflection": "Reflection", - "Diffuse": "Diffuse", - "Ior": "Index of Refraction", - "Specularlevel": "Specular Level", - "BlendingMask": "Blending Mask", - "Translucency": "Translucency", - "Scattering": "Scattering", - "ScatterColor": "Scatter Color", - "SheenOpacity": "Sheen Opacity", - "SheenRoughness": "Sheen Roughness", - "SheenColor": "Sheen Color", - "CoatOpacity": "Coat Opacity", - "CoatColor": "Coat Color", - "CoatRoughness": "Coat Roughness", - "CoatSpecularLevel": "Coat Specular Level", - "CoatNormal": "Coat Normal", - } - - def get_export_presets(): """Return Export Preset resource URLs for all available Export Presets. @@ -731,8 +694,9 @@ def set_layer_stack_opacity(node_ids, channel_types): """Function to set the opacity of the layer stack during context Args: - node_ids (list): A list of substance painter node ids - channel_types (list): A list of channel types + node_ids (list[int]): Substance painter root layer node ids + channel_types (list[str]): Channel type names as defined as + attributes in `substance_painter.textureset.ChannelType` """ # Do nothing if not node_ids or not channel_types: @@ -747,8 +711,11 @@ def set_layer_stack_opacity(node_ids, channel_types): for node_id in node_ids: node = substance_painter.layerstack.get_node_by_uid(int(node_id)) all_selected_nodes.append(node) - excluded_nodes = {node for node in stack_root_layers - if node not in all_selected_nodes} + node_ids = set(node_ids) # lookup + excluded_nodes = [ + node for node in stack_root_layers + if node.uid() not in node_ids + ] original_opacity_values = [] for node in excluded_nodes: diff --git a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py index 36dd9d6dba..a9b26c62c6 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py @@ -15,8 +15,7 @@ from ayon_core.hosts.substancepainter.api.pipeline import ( remove_instance ) from ayon_core.hosts.substancepainter.api.lib import ( - get_export_presets, - get_channel_map_enum + get_export_presets ) import substance_painter @@ -113,7 +112,36 @@ class CreateTextures(Creator): for item in self.channel_mapping } else: - export_channel_enum = get_channel_map_enum() + export_channel_enum = { + "BaseColor": "Base Color", + "Metallic": "Metallic", + "Roughness": "Roughness", + "SpecularEdgeColor": "Specular Edge Color", + "Emissive": "Emissive", + "Opacity": "Opacity", + "Displacement": "Displacement", + "Glossiness": "Glossiness", + "Anisotropylevel": "Anisotropy Level", + "AO": "Ambient Occulsion", + "Anisotropyangle": "Anisotropy Angle", + "Transmissive": "Transmissive", + "Reflection": "Reflection", + "Diffuse": "Diffuse", + "Ior": "Index of Refraction", + "Specularlevel": "Specular Level", + "BlendingMask": "Blending Mask", + "Translucency": "Translucency", + "Scattering": "Scattering", + "ScatterColor": "Scatter Color", + "SheenOpacity": "Sheen Opacity", + "SheenRoughness": "Sheen Roughness", + "SheenColor": "Sheen Color", + "CoatOpacity": "Coat Opacity", + "CoatColor": "Coat Color", + "CoatRoughness": "Coat Roughness", + "CoatSpecularLevel": "Coat Specular Level", + "CoatNormal": "Coat Normal", + } return [ EnumDef("exportChannel", diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py index 31201e6c3b..777031b1ad 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py @@ -114,7 +114,6 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): title="Missing output maps" ) - def get_invalid_channels(self, instance, config): """Function to get invalid channel(s) from export channel filtering @@ -144,12 +143,11 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): map_names = [channel_map["fileName"] for channel_map in export_preset["maps"]] for channel in tmp_export_channel: - found = False + # Check if channel is found in at least one map for map_name in map_names: if channel in map_name: - found = True - break # Exit the inner loop once a match is found - if not found: + break + else: invalid_channel.append(channel) return invalid_channel From 119428bcdb1b6d181957ccd1039f6b167e3bf6b3 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 28 May 2024 20:18:42 +0800 Subject: [PATCH 36/42] improve publish validation message --- .../plugins/publish/validate_ouput_maps.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py index 777031b1ad..3a49cd86d0 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py @@ -31,11 +31,18 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): # generate the smallest size / fastest export as possible config = copy.deepcopy(config) invalid_channels = self.get_invalid_channels(instance, config) + msg = [] if invalid_channels: + bullet_point_invalid_statement = "\n".join( + "- {}".format(message) for _, message + in invalid_channels + ) + report = ( + "Invalid Channel Maps found.\n\n" + f"{bullet_point_invalid_statement}\n\n" + ) raise PublishValidationError( - "No Channel(s){} found in the texture set:{}".format( - invalid_channels, instance.name - )) + report, title="Invalid Channel Maps") parameters = config["exportParameters"][0]["parameters"] parameters["sizeLog2"] = [1, 1] # output 2x2 images (smallest) parameters["paddingAlgorithm"] = "passthrough" # no dilation (faster) @@ -132,6 +139,7 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): creator_attrs = instance.data["creator_attributes"] export_channel = creator_attrs.get("exportChannel", []) tmp_export_channel = copy.deepcopy(export_channel) + invalid_message = [] invalid_channel = [] if export_channel: for export_preset in config.get("exportPresets", {}): @@ -148,6 +156,9 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): if channel in map_name: break else: + invalid_message.append( + f"Channel map {channel} found " + "in the export_preset") invalid_channel.append(channel) - return invalid_channel + return invalid_channel, invalid_message From 447edbee03bdc139a8e37ee1192ebf03da81fedf Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 28 May 2024 20:20:23 +0800 Subject: [PATCH 37/42] cosmetic fix --- .../substancepainter/plugins/publish/validate_ouput_maps.py | 1 - 1 file changed, 1 deletion(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py index 3a49cd86d0..64445319d9 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py @@ -31,7 +31,6 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): # generate the smallest size / fastest export as possible config = copy.deepcopy(config) invalid_channels = self.get_invalid_channels(instance, config) - msg = [] if invalid_channels: bullet_point_invalid_statement = "\n".join( "- {}".format(message) for _, message From 5f950b72184bea5f8c74601e4b9e5d5c6147deb0 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 28 May 2024 20:49:31 +0800 Subject: [PATCH 38/42] improve debug msg --- .../plugins/publish/validate_ouput_maps.py | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py index 64445319d9..bf04d118db 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py @@ -32,16 +32,10 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): config = copy.deepcopy(config) invalid_channels = self.get_invalid_channels(instance, config) if invalid_channels: - bullet_point_invalid_statement = "\n".join( - "- {}".format(message) for _, message - in invalid_channels - ) - report = ( - "Invalid Channel Maps found.\n\n" - f"{bullet_point_invalid_statement}\n\n" - ) raise PublishValidationError( - report, title="Invalid Channel Maps") + "No Channel(s): {} found in the texture set {}".format( + invalid_channels, instance.name + )) parameters = config["exportParameters"][0]["parameters"] parameters["sizeLog2"] = [1, 1] # output 2x2 images (smallest) parameters["paddingAlgorithm"] = "passthrough" # no dilation (faster) @@ -138,7 +132,6 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): creator_attrs = instance.data["creator_attributes"] export_channel = creator_attrs.get("exportChannel", []) tmp_export_channel = copy.deepcopy(export_channel) - invalid_message = [] invalid_channel = [] if export_channel: for export_preset in config.get("exportPresets", {}): @@ -155,9 +148,6 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): if channel in map_name: break else: - invalid_message.append( - f"Channel map {channel} found " - "in the export_preset") invalid_channel.append(channel) - return invalid_channel, invalid_message + return invalid_channel From a392567e55402296fb2c8aa05dc83245647cdc90 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 28 May 2024 20:50:29 +0800 Subject: [PATCH 39/42] improve debug msg --- .../substancepainter/plugins/publish/validate_ouput_maps.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py index bf04d118db..36b4aeddd2 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py @@ -33,7 +33,7 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): invalid_channels = self.get_invalid_channels(instance, config) if invalid_channels: raise PublishValidationError( - "No Channel(s): {} found in the texture set {}".format( + "Invalid Channel(s): {} found in the texture set {}".format( invalid_channels, instance.name )) parameters = config["exportParameters"][0]["parameters"] From 3b074c91820606948a622f4e653b7688d49093e9 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Wed, 29 May 2024 08:13:12 +0800 Subject: [PATCH 40/42] code tweaks - big roy's comment --- client/ayon_core/hosts/substancepainter/api/lib.py | 6 +----- .../substancepainter/plugins/create/create_textures.py | 4 +--- .../plugins/publish/collect_textureset_images.py | 4 ++-- .../substancepainter/plugins/publish/validate_ouput_maps.py | 4 ++-- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index c89f87ebb9..e409605d07 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -645,7 +645,7 @@ def prompt_new_file_with_mesh(mesh_filepath): def get_export_presets_by_filtering(export_preset_name, channel_type_names): - """Function to get export presets included with specific channels + """Return export presets included with specific channels requested by users. Args: @@ -707,10 +707,6 @@ def set_layer_stack_opacity(node_ids, channel_types): stack_root_layers = ( substance_painter.layerstack.get_root_layer_nodes(stack) ) - all_selected_nodes = [] - for node_id in node_ids: - node = substance_painter.layerstack.get_node_by_uid(int(node_id)) - all_selected_nodes.append(node) node_ids = set(node_ids) # lookup excluded_nodes = [ node for node in stack_root_layers diff --git a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py index a9b26c62c6..34826240a3 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py +++ b/client/ayon_core/hosts/substancepainter/plugins/create/create_textures.py @@ -14,9 +14,7 @@ from ayon_core.hosts.substancepainter.api.pipeline import ( set_instances, remove_instance ) -from ayon_core.hosts.substancepainter.api.lib import ( - get_export_presets -) +from ayon_core.hosts.substancepainter.api.lib import get_export_presets import substance_painter import substance_painter.project diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py b/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py index b90e77db80..f7837e5106 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/collect_textureset_images.py @@ -8,7 +8,7 @@ import substance_painter.textureset from ayon_core.pipeline import publish from ayon_core.hosts.substancepainter.api.lib import ( get_parsed_export_maps, - get_export_presets_by_filtering, + get_filtered_export_preset, strip_template ) from ayon_core.pipeline.create import get_product_name @@ -210,6 +210,6 @@ class CollectTextureSet(pyblish.api.InstancePlugin): parameters.pop(key) channel_layer = creator_attrs.get("exportChannel", []) if channel_layer: - maps = get_export_presets_by_filtering(preset_url, channel_layer) + maps = get_filtered_export_preset(preset_url, channel_layer) config.update(maps) return config diff --git a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py index 36b4aeddd2..3293e7f204 100644 --- a/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py +++ b/client/ayon_core/hosts/substancepainter/plugins/publish/validate_ouput_maps.py @@ -33,7 +33,7 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): invalid_channels = self.get_invalid_channels(instance, config) if invalid_channels: raise PublishValidationError( - "Invalid Channel(s): {} found in the texture set {}".format( + "Invalid Channel(s): {} found in texture set {}".format( invalid_channels, instance.name )) parameters = config["exportParameters"][0]["parameters"] @@ -137,7 +137,7 @@ class ValidateOutputMaps(pyblish.api.InstancePlugin): for export_preset in config.get("exportPresets", {}): if not export_preset.get("maps", {}): raise PublishValidationError( - "No Texture Map Exported with texture set:{}.".format( + "No Texture Map Exported with texture set: {}.".format( instance.name) ) map_names = [channel_map["fileName"] for channel_map From eeb454432baa37dd4a2b58d5b5df6cd77413509a Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Wed, 29 May 2024 08:14:47 +0800 Subject: [PATCH 41/42] code tweaks - big roy's comment --- client/ayon_core/hosts/substancepainter/api/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/hosts/substancepainter/api/lib.py b/client/ayon_core/hosts/substancepainter/api/lib.py index e409605d07..0ae3932f58 100644 --- a/client/ayon_core/hosts/substancepainter/api/lib.py +++ b/client/ayon_core/hosts/substancepainter/api/lib.py @@ -644,7 +644,7 @@ def prompt_new_file_with_mesh(mesh_filepath): return project_mesh -def get_export_presets_by_filtering(export_preset_name, channel_type_names): +def get_filtered_export_preset(export_preset_name, channel_type_names): """Return export presets included with specific channels requested by users. From 4359f21c50a796b7afd6913107685999f416c869 Mon Sep 17 00:00:00 2001 From: Mustafa Taher Date: Wed, 29 May 2024 11:19:43 +0300 Subject: [PATCH 42/42] refine the description of `only_available`. Co-authored-by: Roy Nieterau --- server_addon/applications/server/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server_addon/applications/server/settings.py b/server_addon/applications/server/settings.py index 6c131a5e9d..3f9d90ef5b 100644 --- a/server_addon/applications/server/settings.py +++ b/server_addon/applications/server/settings.py @@ -214,7 +214,7 @@ class ApplicationsAddonSettings(BaseSettingsModel): only_available: bool = SettingsField( True, title="Show only available applications", - description="Enable to show only available applications in AYON Launcher" + description="Enable to show only applications in AYON Launcher" " for which the executable paths are found on the running machine." " This applies as an additional filter to the applications defined in a " " project's anatomy settings to ignore unavailable applications."