add sync workfile version into substance painter

This commit is contained in:
Kayla Man 2024-06-04 17:42:04 +08:00
parent 72e06a09f6
commit 66df4fcf0d
4 changed files with 24 additions and 5 deletions

View file

@ -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'

View file

@ -890,6 +890,7 @@ DEFAULT_PUBLISH_VALUES = {
"maya",
"nuke",
"photoshop",
"substancepainter"
],
"enabled": True,
"optional": False,

View file

@ -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,

View file

@ -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}")