import bpy # Get export directory path: str = bpy.data.filepath.replace('\\Shelby', '').replace('\\Tommy', '') pathPrefix = max(path.rfind('animations/'), path.rfind('animations\\')) pathStart = pathPrefix + len('animations/') pathEnd = max(path.rfind('/'), path.rfind('\\')) # Figure out who made these animations based on filepath fileIndividual = '' if 'tommy' in path: fileIndividual = 'tommy' elif 'shelby' in path: fileIndividual = 'shelby' elif 'alan' in path: fileIndividual = 'alan' # Build export filepath dirName = path[pathStart:pathEnd] filePath = path[:pathPrefix] + 'export\\' + dirName + '\\anims_' + dirName + '_' + fileIndividual + '.fbx' # RIG MUST BE ACTIVE armature = bpy.context.active_object.data # Set all bone layers, but not mechanical bones, to be visible for i in range(0, 29): armature.layers[i] = True for i in range(29,32): armature.layers[i] = False bpy.ops.object.mode_set(mode='POSE') # Enter pose mode bpy.ops.pose.transforms_clear() # Clear all transforms # Export animations bpy.ops.export_scene.fbx( # I/O filepath = filePath, check_existing = False, path_mode = 'STRIP', batch_mode = 'OFF', use_visible = True, object_types = {'MESH', 'ARMATURE'}, axis_forward = '-Y', axis_up = 'Z', # Mesh Settings use_mesh_modifiers = True, use_mesh_modifiers_render = False, use_triangles = True, colors_type = 'NONE', # Animation use_armature_deform_only = True, add_leaf_bones = True, bake_anim = True, bake_anim_use_all_bones = True, bake_anim_use_nla_strips = False, bake_anim_use_all_actions = True, bake_anim_force_startend_keying = True, ) bpy.ops.pose.transforms_clear() # Clear all transforms bpy.ops.object.mode_set(mode='OBJECT') ## FOR DEBUGGING, see https://blender.stackexchange.com/questions/93728/blender-script-run-print-to-console # from bpy import context # import builtins as __builtin__ # def console_print(*args, **kwargs): # for a in context.screen.areas: # if a.type == 'CONSOLE': # c = {} # c['area'] = a # c['space_data'] = a.spaces.active # c['region'] = a.regions[-1] # c['window'] = context.window # c['screen'] = context.screen # s = " ".join([str(arg) for arg in args]) # for line in s.split("\n"): # bpy.ops.console.scrollback_append(c, text=line) # def print(*args, **kwargs): # """Console print() function.""" # console_print(*args, **kwargs) # to py consoles # __builtin__.print(*args, **kwargs) # to system console