Advertisement
Guest User

bone delete script

a guest
Jun 25th, 2022
3,878
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. '''
  2. Adapted from https://blender.stackexchange.com/a/226914/132453
  3. '''
  4. import bpy
  5.  
  6. def transfer_weights(source, target, obj):
  7. source_group = obj.vertex_groups.get(source.name)
  8. if source_group is None:
  9. return
  10. source_i = source_group.index
  11. target_group = obj.vertex_groups.get(target.name)
  12. if target_group is None:
  13. target_group = obj.vertex_groups.new(name=target.name)
  14.  
  15. for v in obj.data.vertices:
  16. for g in v.groups:
  17. if g.group == source_i:
  18. target_group.add((v.index,), g.weight, 'ADD')
  19. obj.vertex_groups.remove(source_group)
  20.  
  21.  
  22. def remove_bone(source, target):
  23. for o in bpy.data.objects:
  24. transfer_weights(source, target, o)
  25. edit_bone = bpy.context.object.data.edit_bones.get(source.name)
  26. bpy.context.object.data.edit_bones.remove(edit_bone)
  27.  
  28.  
  29. def find_parent_not_in_collection(bone, collection):
  30. if bone.parent in collection:
  31. return find_parent_not_in_collection(bone.parent, collection)
  32. else:
  33. return bone.parent
  34.  
  35. def main():
  36. selected_bones = [bone for bone in bpy.context.object.data.edit_bones if bone.select is True]
  37. for selected_bone in selected_bones:
  38. target = find_parent_not_in_collection(selected_bone, selected_bones)
  39. remove_bone(selected_bone, target)
  40.  
  41. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement