diff --git a/06-DCC/Blender/Blender删除骨骼权重脚本.md b/06-DCC/Blender/Blender删除骨骼权重脚本.md new file mode 100644 index 0000000..ac16fa5 --- /dev/null +++ b/06-DCC/Blender/Blender删除骨骼权重脚本.md @@ -0,0 +1,43 @@ +```python +import bpy +#import os +import sys + +argv = sys.argv +argv = argv[argv.index("--") + 1:] # get all args after "--" +# print(argv) # --> ['example', 'args', '123'] +SourceFBXPath = argv[0] +ExportFBXPath = argv[1] +RemoveWeightBoneNames = argv[2] +RemoveWeightBoneNameList = RemoveWeightBoneNames.split(',') +#RemoveWeightBoneNameList = ['calf_twist_01_l','calf_twist_01_r','calf_twist_02_l','calf_twist_02_r','lowerarm_twist_01_l','lowerarm_twist_01_r'] + +bpy.ops.scene.new(type='EMPTY') +bpy.ops.object.select_all(action='SELECT') +bpy.ops.object.delete() + +bpy.ops.import_scene.fbx(filepath=SourceFBXPath) + +for obj in bpy.data.objects: + if obj.type == 'MESH': + for BoneName in RemoveWeightBoneNameList: + vg = obj.vertex_groups.get(BoneName) + if vg is not None: + obj.vertex_groups.remove(vg) + +bpy.ops.export_scene.fbx(filepath=ExportFBXPath,add_leaf_bones=False) + +# ob = bpy.context.object +# if ob.type == 'ARMATURE': +# armature = ob.data + +# bpy.ops.object.mode_set(mode='EDIT') + +# for bone in armature.bones: +# if fnmatch.fnmatchcase(bone.name, "something"): +# armature.delete(bone) + +# for bone in armature.edit_bones: +# if fnmatch.fnmatchcase(bone.name, "something"): +# armature.edit_bones.remove(bone) +``` \ No newline at end of file