diff --git a/openpype/hosts/blender/plugins/create/create_blender_scene.py b/openpype/hosts/blender/plugins/create/create_blender_scene.py new file mode 100644 index 0000000000..b63ed4fd3f --- /dev/null +++ b/openpype/hosts/blender/plugins/create/create_blender_scene.py @@ -0,0 +1,37 @@ +import bpy + +from openpype.pipeline import legacy_io +from openpype.hosts.blender.api import plugin, lib, ops +from openpype.hosts.blender.api.pipeline import AVALON_INSTANCES + + +class CreateBlenderScene(plugin.Creator): + """Raw Blender Scene file export""" + + name = "blenderScene" + label = "Blender Scene" + family = "blenderScene" + icon = "file-archive-o" + + def process(self): + """ Run the creator on Blender main thread""" + mti = ops.MainThreadItem(self._process) + ops.execute_in_main_thread(mti) + + def _process(self): + # Get Instance Container or create it if it does not exist + instances = bpy.data.collections.get(AVALON_INSTANCES) + if not instances: + instances = bpy.data.collections.new(name=AVALON_INSTANCES) + bpy.context.scene.collection.children.link(instances) + + asset = self.data["asset"] + subset = self.data["subset"] + name = plugin.asset_name(asset, subset) + + asset_group = bpy.data.collections.new(name=name) + instances.children.link(asset_group) + self.data['task'] = legacy_io.Session.get('AVALON_TASK') + lib.imprint(asset_group, self.data) + + return asset_group