From 66df4fcf0dabec8b223f3f0305b38e65d9211727 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 4 Jun 2024 17:42:04 +0800 Subject: [PATCH] add sync workfile version into substance painter --- .../publish/collect_anatomy_instance_data.py | 5 +++-- server/settings/publish_plugins.py | 1 + .../plugins/create/create_textures.py | 13 +++++++++++++ .../plugins/publish/collect_current_file.py | 10 +++++++--- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py b/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py index ad5a5d43fc..2113ad1f4d 100644 --- a/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py +++ b/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py @@ -313,8 +313,9 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin): # Define version version_number = None - if self.follow_workfile_version: - version_number = context.data("version") + if self.follow_workfile_version or instance.data.get( + "follow_workfile_version", self.follow_workfile_version): + version_number = context.data("version") # Even if 'follow_workfile_version' is enabled, it may not be set # because workfile version was not collected to 'context.data' diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py index 2640a3db37..6dbc2253e2 100644 --- a/server/settings/publish_plugins.py +++ b/server/settings/publish_plugins.py @@ -890,6 +890,7 @@ DEFAULT_PUBLISH_VALUES = { "maya", "nuke", "photoshop", + "substancepainter" ], "enabled": True, "optional": False, diff --git a/server_addon/substancepainter/client/ayon_substancepainter/plugins/create/create_textures.py b/server_addon/substancepainter/client/ayon_substancepainter/plugins/create/create_textures.py index 8869cb5eb0..ce37d6e206 100644 --- a/server_addon/substancepainter/client/ayon_substancepainter/plugins/create/create_textures.py +++ b/server_addon/substancepainter/client/ayon_substancepainter/plugins/create/create_textures.py @@ -30,12 +30,18 @@ class CreateTextures(Creator): default_variant = "Main" settings_category = "substancepainter" channel_mapping = [] + follow_workfile_version = False def apply_settings(self, project_settings): settings = project_settings["substancepainter"].get("create", []) # noqa if settings: self.channel_mapping = settings["CreateTextures"].get( "channel_mapping", []) + core_setting = project_settings["core"]["publish"].get( + "CollectAnatomyInstanceData", []) + if core_setting: + self.follow_workfile_version = core_setting.get( + "follow_workfile_version", False) def create(self, product_name, instance_data, pre_create_data): @@ -57,6 +63,10 @@ class CreateTextures(Creator): if key in pre_create_data: creator_attributes[key] = pre_create_data[key] + if pre_create_data.get("follow_workfile_version"): + instance_data["follow_workfile_version"] = pre_create_data.get( + "follow_workfile_version") + if pre_create_data.get("use_selection"): stack = substance_painter.textureset.get_active_stack() @@ -143,6 +153,9 @@ class CreateTextures(Creator): } return [ + BoolDef("follow_workfile_version", + label="Follow Workfile Version", + default=self.follow_workfile_version), EnumDef("exportChannel", items=export_channel_enum, multiselection=True, diff --git a/server_addon/substancepainter/client/ayon_substancepainter/plugins/publish/collect_current_file.py b/server_addon/substancepainter/client/ayon_substancepainter/plugins/publish/collect_current_file.py index db0edafac0..ce739d66cb 100644 --- a/server_addon/substancepainter/client/ayon_substancepainter/plugins/publish/collect_current_file.py +++ b/server_addon/substancepainter/client/ayon_substancepainter/plugins/publish/collect_current_file.py @@ -1,13 +1,14 @@ import pyblish.api from ayon_core.pipeline import registered_host +from ayon_core.lib import get_version_from_path -class CollectCurrentFile(pyblish.api.ContextPlugin): - """Inject the current working file into context""" +class CollectContextData(pyblish.api.ContextPlugin): + """Collect current context publish""" order = pyblish.api.CollectorOrder - 0.49 - label = "Current Workfile" + label = "Collect Context Data" hosts = ["substancepainter"] def process(self, context): @@ -15,3 +16,6 @@ class CollectCurrentFile(pyblish.api.ContextPlugin): path = host.get_current_workfile() context.data["currentFile"] = path self.log.debug(f"Current workfile: {path}") + version = int(get_version_from_path(path)) + context.data["version"] = version + self.log.debug(f"Current Version: {version}")