From 940bc14d77ffc2c8914d39a9ec67fdca6ab798ce Mon Sep 17 00:00:00 2001 From: Aurelien Vaillant Date: Fri, 31 May 2024 10:42:41 +0200 Subject: [PATCH] Update export, to be more clear and readable. --- Fange_Pipeline/operators/exports.py | 132 +++++++++++++--------------- 1 file changed, 63 insertions(+), 69 deletions(-) diff --git a/Fange_Pipeline/operators/exports.py b/Fange_Pipeline/operators/exports.py index 90068bd..708e086 100644 --- a/Fange_Pipeline/operators/exports.py +++ b/Fange_Pipeline/operators/exports.py @@ -27,7 +27,6 @@ Requiert your blend file are write on your hard-drive.""" def execute(self, context): bpy.ops.object.select_all(action='DESELECT') - print(f'[Pipeline] Start to export the building props.') # Make a check if the file are saved on the disk if not bpy.data.is_saved: @@ -42,81 +41,76 @@ Requiert your blend file are write on your hard-drive.""" self.report({'WARNING'}, 'No children collection, nothing can be exported.') return {'CANCELLED'} - if not len(self.coll_layout.collection_children): + for coll in self.coll_layout.children: + print(f'[Pipeline] Update "{coll.name}" mesh') + child = bpy.data.collections.get(coll.name) - for coll in self.coll_layout.children: - print(f'[Pipeline] Update "{coll.name}" mesh') - child = bpy.data.collections.get(coll.name) + for ob in child.all_objects: + print(f'\tLook "{ob.name}", his type are "{type(ob.data)}"') + # TODO Support another type object, not only SM/SK + if ob.type == 'MESH' or 'EMPTY': + print(f'[Pipeline] Check ob {ob.name} and is type {type(ob)}') + ob.select_set(True) - for ob in child.all_objects: - print(f'\tLook "{ob.name}", his type are "{type(ob.data)}"') - # TODO Support another type object, not only SM/SK - if ob.type == 'MESH' or 'EMPTY': - print(f'[Pipeline] Check ob {ob.name} and is type {type(ob)}') - ob.select_set(True) + if ob.type == 'EMPTY': + if ob.instance_type != 'NONE': + self.instance_type_dict[ob.name] = ob.instance_type + ob.instance_type = 'NONE' - if ob.type == 'EMPTY': - if ob.instance_type != 'NONE': - self.instance_type_dict[ob.name] = ob.instance_type - ob.instance_type = 'NONE' + abs_export = self.category.joinpath(self.asset, "Meshes") + if not abs_export.exists(): + abs_export.mkdir(parents=True) - abs_export = self.category.joinpath(self.asset, "Meshes") - if not abs_export.exists(): - abs_export.mkdir(parents=True) + if coll.name != 'Socket': + asset_name = f"SM_{coll.name}.fbx" + else: + asset_name = f"{coll.name}.fbx" - if coll.name != 'Socket': - asset_name = f"SM_{coll.name}.fbx" - else: - asset_name = f"{coll.name}.fbx" + # TODO Use the preset system + bpy.ops.export_scene.fbx(filepath=abs_export.joinpath(asset_name).as_posix(), + use_selection=True, + use_visible=False, + use_active_collection=False, + global_scale=1.0, + apply_unit_scale=True, + apply_scale_options='FBX_SCALE_NONE', + use_space_transform=True, + bake_space_transform=True, + object_types={'MESH', 'EMPTY'}, + use_mesh_modifiers=True, + use_mesh_modifiers_render=True, + mesh_smooth_type='OFF', + colors_type='SRGB', + prioritize_active_color=False, + use_subsurf=False, + use_mesh_edges=False, + use_tspace=False, + use_triangles=False, + use_custom_props=False, + add_leaf_bones=True, + primary_bone_axis='Y', + secondary_bone_axis='X', + use_armature_deform_only=False, + armature_nodetype='NULL', + bake_anim=False, + bake_anim_use_all_bones=True, + bake_anim_use_nla_strips=True, + bake_anim_use_all_actions=True, + bake_anim_force_startend_keying=True, + bake_anim_step=1.0, + bake_anim_simplify_factor=1.0, + path_mode='AUTO', + embed_textures=False, + batch_mode='OFF', + use_batch_own_dir=True, + axis_forward='X', + axis_up='Y' + ) - # TODO Use the preset system - bpy.ops.export_scene.fbx(filepath=abs_export.joinpath(asset_name).as_posix(), - use_selection=True, - use_visible=False, - use_active_collection=False, - global_scale=1.0, - apply_unit_scale=True, - apply_scale_options='FBX_SCALE_NONE', - use_space_transform=True, - bake_space_transform=True, - object_types={'MESH', 'EMPTY'}, - use_mesh_modifiers=True, - use_mesh_modifiers_render=True, - mesh_smooth_type='OFF', - colors_type='SRGB', - prioritize_active_color=False, - use_subsurf=False, - use_mesh_edges=False, - use_tspace=False, - use_triangles=False, - use_custom_props=False, - add_leaf_bones=True, - primary_bone_axis='Y', - secondary_bone_axis='X', - use_armature_deform_only=False, - armature_nodetype='NULL', - bake_anim=False, - bake_anim_use_all_bones=True, - bake_anim_use_nla_strips=True, - bake_anim_use_all_actions=True, - bake_anim_force_startend_keying=True, - bake_anim_step=1.0, - bake_anim_simplify_factor=1.0, - path_mode='AUTO', - embed_textures=False, - batch_mode='OFF', - use_batch_own_dir=True, - axis_forward='X', - axis_up='Y' - ) + print(f'[Pipeline] Export here "{abs_export}"') + bpy.ops.object.select_all(action='DESELECT') - print(f'[Pipeline] Export here "{abs_export}"') - bpy.ops.object.select_all(action='DESELECT') - - self.set_instance_type() - - # for coll in coll_layout.children: - # print(f'[Pipeline] Check {coll}. Item type {type(coll)}') + self.set_instance_type() self.report({'INFO'}, 'Placeholder exported') return {'FINISHED'}