""" Pipeline to export Placeholder inside Unity About building setup: - Get each placeholder collection, and export it has unique mesh with the `SM_` prefix """ import bpy from pathlib import Path # Init all data coll_layout = bpy.data.collections.get('Placeholder') output = Path("W:\\", "Graou Studio", "Game Projects", "Fange Prototype", "Assets", "Graph", "Buildings").resolve() fbx_preset = 'sm-unity-building' bpy.ops.object.select_all(action='DESELECT') def get_export_preset(): fbx_preset_paths = bpy.utils.preset_paths(r"operator\export_scene.fbx") fbx_preset = Path(fbx_preset_paths[0], "sm-unity-building.py") if fbx_preset_paths: print(f'[Pipeline] Get the preset path "{fbx_preset}"') #select_preset = bpy.utils.preset_find(name=preset_name, preset_path=fbx_preset.as_posix()) #print(f'[Pipeline] Preset get {select_preset}') return fbx_preset else: print(f'[Pipeline] Preset folder not found') def apply_mesh_and_join(): """ This function make a new mesh with all selected asset. It's usefull to """ pass if coll_layout: if len(coll_layout.collection_children): for coll in coll_layout.children: print(f'[Pipeline] Update "{coll.name}" mesh') child = bpy.data.collections.get(coll.name) print(f'[Pipeline] Select all mesh inside the collection "{child.name}"') for ob in child.all_objects: print(f'\tLook "{ob.name}", his type are "{type(ob.data)}"') if isinstance(ob.data, bpy.types.Mesh): ob.select_set(True) # Export this collection abs_export = output.joinpath("Garden", "Meshes") if not abs_export.exists(): abs_export.mkdir() bpy.ops.export_scene.fbx(filepath=abs_export.joinpath(f"SM_{coll.name}.fbx").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') #for coll in coll_layout.children: # print(f'[Pipeline] Check {coll}. Item type {type(coll)}')