Start of Tools Panel

Several Improvements and etc. Still need to do the other half of the functions but getting there.
This commit is contained in:
Yusarina
2024-12-05 13:36:25 +00:00
parent 9cc5a41a98
commit 5ce3f9ff68
9 changed files with 634 additions and 2 deletions
+26 -1
View File
@@ -1,6 +1,6 @@
import bpy
import numpy as np
from bpy.types import Context, Object, Modifier
from bpy.types import Context, Object, Modifier, EditBone
from typing import Optional, Tuple, List, Set, Dict, Any, Generator, Callable
from ..core.logging_setup import logger
from ..core.translations import t
@@ -385,3 +385,28 @@ def clear_unused_data_blocks(self) -> int:
bpy.ops.outliner.orphans_purge(do_local_ids=True, do_linked_ids=True, do_recursive=True)
final_count: int = sum(len(getattr(bpy.data, attr)) for attr in dir(bpy.data) if isinstance(getattr(bpy.data, attr), bpy.types.bpy_prop_collection))
return initial_count - final_count
def simplify_bonename(name: str) -> str:
"""Simplify bone name by removing spaces, underscores, dots and converting to lowercase"""
return name.lower().translate(dict.fromkeys(map(ord, u" _.")))
def duplicate_bone_chain(bones: List[EditBone]) -> List[EditBone]:
"""Duplicate a chain of bones while preserving hierarchy"""
new_bones = []
parent_map = {}
for bone in bones:
new_bone = duplicate_bone(bone)
if bone.parent and bone.parent in parent_map:
new_bone.parent = parent_map[bone.parent]
parent_map[bone] = new_bone
new_bones.append(new_bone)
return new_bones
def restore_bone_transforms(bone: EditBone, transforms: Dict[str, Any]) -> None:
"""Restore bone transforms from stored data"""
bone.head = transforms['head']
bone.tail = transforms['tail']
bone.roll = transforms['roll']
bone.matrix = transforms['matrix']
+57 -1
View File
@@ -109,4 +109,60 @@ dont_delete_these_main_bones = [
'MiddleFinger1_R', 'MiddleFinger2_R', 'MiddleFinger3_R',
'RingFinger1_R', 'RingFinger2_R', 'RingFinger3_R',
'LittleFinger1_R', 'LittleFinger2_R', 'LittleFinger3_R',
]
]
resonite_translations = {
'hips': "Hips",
'spine': "Spine",
'chest': "Chest",
'neck': "Neck",
'head': "Head",
'left_eye': "Eye.L",
'right_eye': "Eye.R",
'right_leg': "UpperLeg.R",
'right_knee': "Calf.R",
'right_ankle': "Foot.R",
'right_toe': 'Toes.R',
'right_shoulder': "Shoulder.R",
'right_arm': "UpperArm.R",
'right_elbow': "ForeArm.R",
'right_wrist': "Hand.R",
'left_leg': "UpperLeg.L",
'left_knee': "Calf.L",
'left_ankle': "Foot.L",
'left_toe': "Toes.L",
'left_shoulder': "Shoulder.L",
'left_arm': "UpperArm.L",
'left_elbow': "ForeArm.L",
'left_wrist': "Hand.L",
'pinkie_1_l': "pinkie1.L",
'pinkie_2_l': "pinkie2.L",
'pinkie_3_l': "pinkie3.L",
'ring_1_l': "ring1.L",
'ring_2_l': "ring2.L",
'ring_3_l': "ring3.L",
'middle_1_l': "middle1.L",
'middle_2_l': "middle2.L",
'middle_3_l': "middle3.L",
'index_1_l': "index1.L",
'index_2_l': "index2.L",
'index_3_l': "index3.L",
'thumb_1_l': "thumb1.L",
'thumb_2_l': "thumb2.L",
'thumb_3_l': "thumb3.L",
'pinkie_1_r': "pinkie1.R",
'pinkie_2_r': "pinkie2.R",
'pinkie_3_r': "pinkie3.R",
'ring_1_r': "ring1.R",
'ring_2_r': "ring2.R",
'ring_3_r': "ring3.R",
'middle_1_r': "middle1.R",
'middle_2_r': "middle2.R",
'middle_3_r': "middle3.R",
'index_1_r': "index1.R",
'index_2_r': "index2.R",
'index_3_r': "index3.R",
'thumb_1_r': "thumb1.R",
'thumb_2_r': "thumb2.R",
'thumb_3_r': "thumb3.R"
}
+14
View File
@@ -86,6 +86,20 @@ class AvatarToolkitSceneProperties(PropertyGroup):
default=False
)
merge_twist_bones: BoolProperty(
name=t("Tools.merge_twist_bones"),
description=t("Tools.merge_twist_bones_desc"),
default=True
)
clean_weights_threshold: FloatProperty(
name=t("Tools.clean_weights_threshold"),
description=t("Tools.clean_weights_threshold_desc"),
default=0.01,
min=0.0000001,
max=0.9999999
)
def register() -> None:
"""Register the Avatar Toolkit property group"""
logger.info("Registering Avatar Toolkit properties")