From b09efa96756ecb02cd0c1ae8b1183c692ff38147 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 10 May 2023 11:18:30 +0200 Subject: [PATCH] fusion: storing asset frame attribute at comp openpype_instance data --- openpype/hosts/fusion/api/lib.py | 7 ++++ .../publish/collect_comp_frame_range.py | 38 ++++++++++++++----- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/openpype/hosts/fusion/api/lib.py b/openpype/hosts/fusion/api/lib.py index 40cc4d2963..8f7b29f0c4 100644 --- a/openpype/hosts/fusion/api/lib.py +++ b/openpype/hosts/fusion/api/lib.py @@ -51,6 +51,12 @@ def update_frame_range(start, end, comp=None, set_render_range=True, "COMPN_GlobalStart": start - handle_start, "COMPN_GlobalEnd": end + handle_end } + frame_data = { + "frameStart": start, + "frameEnd": end, + "handleStart": handle_start, + "handleEnd": handle_end + } # set frame range if set_render_range: @@ -61,6 +67,7 @@ def update_frame_range(start, end, comp=None, set_render_range=True, with comp_lock_and_undo_chunk(comp): comp.SetAttrs(attrs) + comp.SetData("openpype_instance", frame_data) def set_asset_framerange(): diff --git a/openpype/hosts/fusion/plugins/publish/collect_comp_frame_range.py b/openpype/hosts/fusion/plugins/publish/collect_comp_frame_range.py index fbd7606cd7..2db0002ee6 100644 --- a/openpype/hosts/fusion/plugins/publish/collect_comp_frame_range.py +++ b/openpype/hosts/fusion/plugins/publish/collect_comp_frame_range.py @@ -9,14 +9,20 @@ def get_comp_render_range(comp): global_start = comp_attrs["COMPN_GlobalStart"] global_end = comp_attrs["COMPN_GlobalEnd"] + frame_data = comp.GetData("openpype_instance") + handle_start = frame_data.get("handleStart", 0) + handle_end = frame_data.get("handleEnd", 0) + frame_start = frame_data.get("frameStart", 0) + frame_end = frame_data.get("frameEnd", 0) + # Whenever render ranges are undefined fall back # to the comp's global start and end if start == -1000000000: - start = global_start + start = frame_start if end == -1000000000: - end = global_end + end = frame_end - return start, end, global_start, global_end + return start, end, global_start, global_end, handle_start, handle_end class CollectFusionCompFrameRanges(pyblish.api.ContextPlugin): @@ -34,10 +40,22 @@ class CollectFusionCompFrameRanges(pyblish.api.ContextPlugin): comp = context.data["currentComp"] # Store comp render ranges - start, end, global_start, global_end = get_comp_render_range(comp) - context.data["frameStart"] = int(start) - context.data["frameEnd"] = int(end) - context.data["frameStartHandle"] = int(global_start) - context.data["frameEndHandle"] = int(global_end) - context.data["handleStart"] = int(start) - int(global_start) - context.data["handleEnd"] = int(global_end) - int(end) + ( + start, end, + global_start, + global_end, + handle_start, + handle_end + ) = get_comp_render_range(comp) + + data = {} + data["frameStart"] = int(start) + data["frameEnd"] = int(end) + data["frameStartHandle"] = int(global_start) + data["frameEndHandle"] = int(global_end) + data["handleStart"] = int(handle_start) + data["handleEnd"] = int(handle_end) + + self.log.debug("_ data: {}".format(data)) + + context.data.update(data)