From 6571972d634e41d1a967546fc2f8c53bcc47d07a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20David?= Date: Fri, 9 Jun 2023 08:47:08 +0200 Subject: [PATCH] Fix: Image and audio datablocks tagged for container auto creation --- .../hosts/blender/plugins/load/load_audio.py | 19 +++++++++++++ .../hosts/blender/plugins/load/load_image.py | 27 ++++++++++++++----- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/openpype/hosts/blender/plugins/load/load_audio.py b/openpype/hosts/blender/plugins/load/load_audio.py index 2bee85265a1..6bbbd66207e 100644 --- a/openpype/hosts/blender/plugins/load/load_audio.py +++ b/openpype/hosts/blender/plugins/load/load_audio.py @@ -7,6 +7,7 @@ from openpype.hosts.blender.api import plugin from openpype.hosts.blender.api.properties import OpenpypeContainer +from openpype.hosts.blender.api.utils import AVALON_PROPERTY class AudioLoader(plugin.AssetLoader): @@ -60,6 +61,20 @@ def _load_library_datablocks( return container, datablocks + def load(self, *args, **kwargs): + """OVERRIDE. + + Keep container metadata in sound datablock to allow container + auto creation of theses datablocks. + """ + container, datablocks = super().load(*args, **kwargs) + sound = datablocks[0] + + # Set container metadata to sound datablock + sound[AVALON_PROPERTY] = container.get(AVALON_PROPERTY) + + return container, datablocks + def update( self, *args, **kwargs ) -> Tuple[OpenpypeContainer, List[bpy.types.ID]]: @@ -77,6 +92,10 @@ def switch( container_metadata, representation ) + # Set container metadata to sound datablock + sound = datablocks[0] + sound[AVALON_PROPERTY] = container.get(AVALON_PROPERTY) + return container, datablocks def remove(self, container: Dict) -> bool: diff --git a/openpype/hosts/blender/plugins/load/load_image.py b/openpype/hosts/blender/plugins/load/load_image.py index cc0846c91e6..b9aec815d09 100644 --- a/openpype/hosts/blender/plugins/load/load_image.py +++ b/openpype/hosts/blender/plugins/load/load_image.py @@ -7,6 +7,7 @@ from openpype.hosts.blender.api import plugin from openpype.hosts.blender.api.lib import get_selection from openpype.hosts.blender.api.properties import OpenpypeContainer +from openpype.hosts.blender.api.utils import AVALON_PROPERTY class ImageLoader(plugin.AssetLoader): @@ -25,7 +26,7 @@ class ImageLoader(plugin.AssetLoader): order = 0 color = "orange" - load_type = "LINK" # TODO meaningless here, must be refactored + load_type = "LINK" # TODO meaningless here, must be refactored def _load_library_datablocks( self, @@ -59,6 +60,20 @@ def _load_library_datablocks( ) return container, datablocks + def load(self, *args, **kwargs): + """OVERRIDE. + + Keep container metadata in image datablock to allow container + auto creation of theses datablocks. + """ + container, datablocks = super().load(*args, **kwargs) + img = datablocks[0] + + # Set container metadata to image datablock + img[AVALON_PROPERTY] = container.get(AVALON_PROPERTY) + + return container, datablocks + class ReferenceLoader(ImageLoader): """Load image as Reference. @@ -156,11 +171,11 @@ def load(self, *args, **kwargs): bpy.context.scene.frame_end - bpy.context.scene.frame_start ) # Append audio in the sequencer - bpy.context.scene.sequence_editor.sequences.new_sound( - img.name, - img.filepath, - 1, - bpy.context.scene.frame_start + sound_seq = bpy.context.scene.sequence_editor.sequences.new_sound( + img.name, img.filepath, 1, bpy.context.scene.frame_start ) + # Add container metadata to sound + sound_seq.sound[AVALON_PROPERTY] = container.get(AVALON_PROPERTY) + return container, datablocks