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:
+26
-1
@@ -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
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user