fix pointers
fix pointers in operators to point to class bl_idname property
This commit is contained in:
@@ -7,6 +7,7 @@ from ...core.translations import t
|
||||
from ...core.common import (
|
||||
get_all_meshes,
|
||||
fix_zero_length_bones,
|
||||
remove_unused_vertex_groups,
|
||||
clear_unused_data_blocks,
|
||||
join_mesh_objects,
|
||||
remove_unused_shapekeys,
|
||||
@@ -174,7 +175,7 @@ def merge_armatures(
|
||||
merge_armature_data: bpy.types.Armature = merge_armature.data
|
||||
for bone in merge_armature_data.bones:
|
||||
original_parents[bone.name] = bone.parent.name if bone.parent else None
|
||||
|
||||
|
||||
# Switch to edit mode on merge armature and rename bones
|
||||
bpy.context.view_layer.objects.active = merge_armature
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
@@ -377,20 +378,6 @@ def mix_vertex_groups(mesh: Object, vg_from_name: str, vg_to_name: str) -> None:
|
||||
vg_to.add(range(num_vertices), weights_combined.tolist(), 'REPLACE')
|
||||
mesh.vertex_groups.remove(vg_from)
|
||||
|
||||
def remove_unused_vertex_groups(mesh: Object) -> None:
|
||||
"""Remove vertex groups with no weights"""
|
||||
for vg in mesh.vertex_groups:
|
||||
has_weights: bool = False
|
||||
for vert in mesh.data.vertices:
|
||||
for group in vert.groups:
|
||||
if group.group == vg.index and group.weight > 0.001:
|
||||
has_weights = True
|
||||
break
|
||||
if has_weights:
|
||||
break
|
||||
if not has_weights:
|
||||
mesh.vertex_groups.remove(vg)
|
||||
|
||||
def apply_armature_to_mesh(armature: Object, mesh: Object) -> None:
|
||||
"""Apply armature deformation to mesh"""
|
||||
armature_mod: ArmatureModifier = mesh.modifiers.new('PoseToRest', 'ARMATURE')
|
||||
|
||||
@@ -7,7 +7,8 @@ from ...core.common import (
|
||||
get_active_armature,
|
||||
get_all_meshes,
|
||||
ProgressTracker,
|
||||
restore_bone_transforms
|
||||
restore_bone_transforms,
|
||||
remove_unused_vertex_groups,
|
||||
)
|
||||
from ...core.armature_validation import validate_armature, validate_bone_hierarchy
|
||||
|
||||
@@ -262,6 +263,22 @@ class AvatarToolKit_OT_RemoveZeroWeightBones(Operator):
|
||||
self.report({'INFO'}, t("Tools.clean_weights_success", count=removed_count))
|
||||
return {'FINISHED'}
|
||||
|
||||
class AvatarToolKit_OT_RemoveZeroWeightVertexGroups(Operator):
|
||||
"""Operator to remove vertex groups with no weights"""
|
||||
bl_idname = "avatar_toolkit.clean_vertex_groups"
|
||||
bl_label = t("Tools.clean_vertex_groups")
|
||||
bl_description = t("Tools.clean_vertex_groups_desc")
|
||||
bl_options = {'REGISTER', 'UNDO'}
|
||||
|
||||
def execute(self, context: Context) -> set[str]:
|
||||
meshes: list[bpy.types.Object] = get_all_meshes(context)
|
||||
|
||||
for mesh_obj in meshes:
|
||||
remove_unused_vertex_groups(mesh_obj)
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class AvatarToolKit_OT_RemoveSelectedBones(Operator):
|
||||
"""Operator to remove selected bones from the zero weight bones list"""
|
||||
bl_idname = "avatar_toolkit.remove_selected_bones"
|
||||
|
||||
@@ -31,6 +31,8 @@ class AvatarToolkit_OT_AlignUVEdgesToTarget(Operator):
|
||||
return False
|
||||
if not context.space_data:
|
||||
return False
|
||||
if not hasattr(context.space_data, "show_uvedit"):
|
||||
return False
|
||||
if not context.space_data.show_uvedit:
|
||||
return False
|
||||
if context.scene.tool_settings.use_uv_select_sync:
|
||||
|
||||
@@ -124,7 +124,7 @@ class VisemePreview:
|
||||
cls._preview_shapes = None
|
||||
cls._mesh_name = ""
|
||||
|
||||
class ATOOLKIT_OT_preview_visemes(Operator):
|
||||
class AvatarToolkit_OT_PreviewVisemes(Operator):
|
||||
"""Operator for previewing viseme shapes in real-time"""
|
||||
bl_idname: str = "avatar_toolkit.preview_visemes"
|
||||
bl_label: str = t("Visemes.preview_label")
|
||||
@@ -181,7 +181,7 @@ def validate_deformation(mesh, mix_data):
|
||||
mesh_size = max(mesh.dimensions)
|
||||
return max_deform < (mesh_size * 0.4)
|
||||
|
||||
class ATOOLKIT_OT_create_visemes(Operator):
|
||||
class AvatarToolkit_OT_CreateVisemes(Operator):
|
||||
"""Operator for generating VRChat-compatible viseme shape keys"""
|
||||
bl_idname: str = "avatar_toolkit.create_visemes"
|
||||
bl_label: str = t("Visemes.create_label")
|
||||
|
||||
Reference in New Issue
Block a user