From 2f98c006b2c80ab798b39cf5593cc9f27bc80b5d Mon Sep 17 00:00:00 2001 From: Simone Barbieri Date: Fri, 10 May 2024 16:45:05 +0100 Subject: [PATCH 1/3] Implemented deadline file dependencies for Blender --- .../publish/collect_file_dependencies.py | 36 +++++++++++++++++++ .../publish/submit_blender_deadline.py | 13 ++++++- server_addon/deadline/package.py | 2 +- .../server/settings/publish_plugins.py | 2 ++ 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 client/ayon_core/hosts/blender/plugins/publish/collect_file_dependencies.py diff --git a/client/ayon_core/hosts/blender/plugins/publish/collect_file_dependencies.py b/client/ayon_core/hosts/blender/plugins/publish/collect_file_dependencies.py new file mode 100644 index 0000000000..ea36ab459c --- /dev/null +++ b/client/ayon_core/hosts/blender/plugins/publish/collect_file_dependencies.py @@ -0,0 +1,36 @@ +from pathlib import Path + +import pyblish.api + +import bpy + + +class CollectFileDependencies(pyblish.api.ContextPlugin): + """Gather all files referenced in this scene.""" + + label = "Collect File Dependencies" + order = pyblish.api.CollectorOrder - 0.49 + hosts = ["blender"] + families = ["render"] + + @classmethod + def apply_settings(cls, project_settings): + # Disable plug-in if not used for deadline submission anyway + settings = project_settings["deadline"]["publish"]["BlenderSubmitDeadline"] # noqa + cls.enabled = settings.get("asset_dependencies", True) + + def process(self, context): + dependencies = set() + + # Add alembic files as dependencies + for cache in bpy.data.cache_files: + dependencies.add( + Path(bpy.path.abspath(cache.filepath)).resolve().as_posix()) + + # Add image files as dependencies + for image in bpy.data.images: + if image.filepath: + dependencies.add(Path( + bpy.path.abspath(image.filepath)).resolve().as_posix()) + + context.data["fileDependencies"] = list(dependencies) diff --git a/client/ayon_core/modules/deadline/plugins/publish/submit_blender_deadline.py b/client/ayon_core/modules/deadline/plugins/publish/submit_blender_deadline.py index f5805beb5c..94fc8ed96d 100644 --- a/client/ayon_core/modules/deadline/plugins/publish/submit_blender_deadline.py +++ b/client/ayon_core/modules/deadline/plugins/publish/submit_blender_deadline.py @@ -40,6 +40,17 @@ class BlenderSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline, group = None job_delay = "00:00:00:00" + @classmethod + def apply_settings(cls, project_settings): + settings = project_settings["deadline"]["publish"]["BlenderSubmitDeadline"] # noqa + + # Take some defaults from settings + cls.asset_dependencies = settings.get("asset_dependencies", + cls.asset_dependencies) + cls.use_published = settings.get("use_published", cls.use_published) + cls.priority = settings.get("priority", cls.priority) + cls.group = settings.get("group", cls.group) + def get_job_info(self): job_info = DeadlineJobInfo(Plugin="Blender") @@ -161,7 +172,7 @@ def get_plugin_info(self): return plugin_payload - def process_submission(self): + def process_submission(self, auth=None): instance = self._instance expected_files = instance.data["expectedFiles"] diff --git a/server_addon/deadline/package.py b/server_addon/deadline/package.py index 25ba1c1166..e26734c813 100644 --- a/server_addon/deadline/package.py +++ b/server_addon/deadline/package.py @@ -1,3 +1,3 @@ name = "deadline" title = "Deadline" -version = "0.1.11" +version = "0.1.12" diff --git a/server_addon/deadline/server/settings/publish_plugins.py b/server_addon/deadline/server/settings/publish_plugins.py index 784ad2560b..85a93d49cd 100644 --- a/server_addon/deadline/server/settings/publish_plugins.py +++ b/server_addon/deadline/server/settings/publish_plugins.py @@ -270,6 +270,7 @@ class BlenderSubmitDeadlineModel(BaseSettingsModel): optional: bool = SettingsField(title="Optional") active: bool = SettingsField(title="Active") use_published: bool = SettingsField(title="Use Published scene") + asset_dependencies: bool = SettingsField(title="Use Asset dependencies") priority: int = SettingsField(title="Priority") chunk_size: int = SettingsField(title="Frame per Task") group: str = SettingsField("", title="Group Name") @@ -413,6 +414,7 @@ class PublishPluginsModel(BaseSettingsModel): "optional": False, "active": True, "use_published": True, + "asset_dependencies": True, "priority": 50, "chunk_size": 10, "group": "none", From ce44538c2e608049f316aec0b9f475bc9accf800 Mon Sep 17 00:00:00 2001 From: Simone Barbieri Date: Tue, 18 Jun 2024 10:40:54 +0100 Subject: [PATCH 2/3] Removed unused function --- .../plugins/publish/submit_blender_deadline.py | 11 ----------- server_addon/deadline/client/ayon_deadline/version.py | 2 +- server_addon/deadline/package.py | 2 +- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/server_addon/deadline/client/ayon_deadline/plugins/publish/submit_blender_deadline.py b/server_addon/deadline/client/ayon_deadline/plugins/publish/submit_blender_deadline.py index f12e6a0760..479dffdcc4 100644 --- a/server_addon/deadline/client/ayon_deadline/plugins/publish/submit_blender_deadline.py +++ b/server_addon/deadline/client/ayon_deadline/plugins/publish/submit_blender_deadline.py @@ -41,17 +41,6 @@ class BlenderSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline, group = None job_delay = "00:00:00:00" - @classmethod - def apply_settings(cls, project_settings): - settings = project_settings["deadline"]["publish"]["BlenderSubmitDeadline"] # noqa - - # Take some defaults from settings - cls.asset_dependencies = settings.get("asset_dependencies", - cls.asset_dependencies) - cls.use_published = settings.get("use_published", cls.use_published) - cls.priority = settings.get("priority", cls.priority) - cls.group = settings.get("group", cls.group) - def get_job_info(self): job_info = DeadlineJobInfo(Plugin="Blender") diff --git a/server_addon/deadline/client/ayon_deadline/version.py b/server_addon/deadline/client/ayon_deadline/version.py index 5baf5122fb..da619d2a42 100644 --- a/server_addon/deadline/client/ayon_deadline/version.py +++ b/server_addon/deadline/client/ayon_deadline/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'deadline' version.""" -__version__ = "0.2.0" +__version__ = "0.2.1" diff --git a/server_addon/deadline/package.py b/server_addon/deadline/package.py index 7e7bae8bd6..5696c60dc6 100644 --- a/server_addon/deadline/package.py +++ b/server_addon/deadline/package.py @@ -1,6 +1,6 @@ name = "deadline" title = "Deadline" -version = "0.2.0" +version = "0.2.1" client_dir = "ayon_deadline" From 7dc954fa8313439152b9fd83e913709d44d51219 Mon Sep 17 00:00:00 2001 From: Simone Barbieri Date: Tue, 18 Jun 2024 10:51:43 +0100 Subject: [PATCH 3/3] Bumped blender version --- server_addon/blender/client/ayon_blender/version.py | 2 +- server_addon/blender/package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server_addon/blender/client/ayon_blender/version.py b/server_addon/blender/client/ayon_blender/version.py index 365c44e71b..c21b06a8de 100644 --- a/server_addon/blender/client/ayon_blender/version.py +++ b/server_addon/blender/client/ayon_blender/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'blender' version.""" -__version__ = "0.2.0" +__version__ = "0.2.1" diff --git a/server_addon/blender/package.py b/server_addon/blender/package.py index 4e0ac112e1..1b595e22da 100644 --- a/server_addon/blender/package.py +++ b/server_addon/blender/package.py @@ -1,6 +1,6 @@ name = "blender" title = "Blender" -version = "0.2.0" +version = "0.2.1" client_dir = "ayon_blender"