diff options
Diffstat (limited to 'rigify/rig_ui_template.py')
-rw-r--r-- | rigify/rig_ui_template.py | 143 |
1 files changed, 75 insertions, 68 deletions
diff --git a/rigify/rig_ui_template.py b/rigify/rig_ui_template.py index 3cdda311..aec675e3 100644 --- a/rigify/rig_ui_template.py +++ b/rigify/rig_ui_template.py @@ -20,6 +20,7 @@ UI_SLIDERS = ''' import bpy +from bpy.props import StringProperty from mathutils import Matrix, Vector from math import acos, pi, radians @@ -135,11 +136,11 @@ def get_pose_matrix_in_other_space(mat, pose_bone): par_rest = Matrix() # Get matrix in bone's current transform space - smat = rest_inv * (par_rest * (par_inv * mat)) + smat = rest_inv @ (par_rest @ (par_inv @ mat)) # Compensate for non-local location #if not pose_bone.bone.use_local_location: - # loc = smat.to_translation() * (par_rest.inverted() * rest).to_quaternion() + # loc = smat.to_translation() @ (par_rest.inverted() @ rest).to_quaternion() # smat.translation = loc return smat @@ -166,8 +167,8 @@ def set_pose_translation(pose_bone, mat): else: par_rest = Matrix() - q = (par_rest.inverted() * rest).to_quaternion() - pose_bone.location = q * loc + q = (par_rest.inverted() @ rest).to_quaternion() + pose_bone.location = q @ loc def set_pose_rotation(pose_bone, mat): @@ -283,11 +284,11 @@ def match_pole_target(ik_first, ik_last, pole, match_bone, length): angle = rotation_difference(ik_first.matrix, match_bone.matrix) # Try compensating for the rotation difference in both directions - pv1 = Matrix.Rotation(angle, 4, ikv) * pv + pv1 = Matrix.Rotation(angle, 4, ikv) @ pv set_pole(pv1) ang1 = rotation_difference(ik_first.matrix, match_bone.matrix) - pv2 = Matrix.Rotation(-angle, 4, ikv) * pv + pv2 = Matrix.Rotation(-angle, 4, ikv) @ pv set_pole(pv2) ang2 = rotation_difference(ik_first.matrix, match_bone.matrix) @@ -424,8 +425,8 @@ def fk2ik_leg(obj, fk, ik): match_pose_scale(shin, shini) # Foot position - mat = mfoot.bone.matrix_local.inverted() * foot.bone.matrix_local - footmat = get_pose_matrix_in_other_space(mfooti.matrix, foot) * mat + mat = mfoot.bone.matrix_local.inverted() @ foot.bone.matrix_local + footmat = get_pose_matrix_in_other_space(mfooti.matrix, foot) @ mat set_pose_rotation(foot, footmat) set_pose_scale(foot, footmat) bpy.ops.object.mode_set(mode='OBJECT') @@ -442,8 +443,8 @@ def fk2ik_leg(obj, fk, ik): match_pose_scale(shin, shini) # Foot position - mat = mfoot.bone.matrix_local.inverted() * foot.bone.matrix_local - footmat = get_pose_matrix_in_other_space(mfooti.matrix, foot) * mat + mat = mfoot.bone.matrix_local.inverted() @ foot.bone.matrix_local + footmat = get_pose_matrix_in_other_space(mfooti.matrix, foot) @ mat set_pose_rotation(foot, footmat) set_pose_scale(foot, footmat) bpy.ops.object.mode_set(mode='OBJECT') @@ -482,8 +483,8 @@ def ik2fk_leg(obj, fk, ik): set_pose_rotation(footroll, Matrix()) # Foot position - mat = mfooti.bone.matrix_local.inverted() * footi.bone.matrix_local - footmat = get_pose_matrix_in_other_space(foot.matrix, footi) * mat + mat = mfooti.bone.matrix_local.inverted() @ footi.bone.matrix_local + footmat = get_pose_matrix_in_other_space(foot.matrix, footi) @ mat set_pose_translation(footi, footmat) set_pose_rotation(footi, footmat) set_pose_scale(footi, footmat) @@ -508,8 +509,8 @@ def ik2fk_leg(obj, fk, ik): set_pose_rotation(footroll, Matrix()) # Foot position - mat = mfooti.bone.matrix_local.inverted() * footi.bone.matrix_local - footmat = get_pose_matrix_in_other_space(mfoot.matrix, footi) * mat + mat = mfooti.bone.matrix_local.inverted() @ footi.bone.matrix_local + footmat = get_pose_matrix_in_other_space(mfoot.matrix, footi) @ mat set_pose_translation(footi, footmat) set_pose_rotation(footi, footmat) set_pose_scale(footi, footmat) @@ -600,13 +601,13 @@ class Rigify_Arm_FK2IK(bpy.types.Operator): bl_label = "Rigify Snap FK arm to IK" bl_options = {'UNDO'} - uarm_fk = bpy.props.StringProperty(name="Upper Arm FK Name") - farm_fk = bpy.props.StringProperty(name="Forerm FK Name") - hand_fk = bpy.props.StringProperty(name="Hand FK Name") + uarm_fk: StringProperty(name="Upper Arm FK Name") + farm_fk: StringProperty(name="Forerm FK Name") + hand_fk: StringProperty(name="Hand FK Name") - uarm_ik = bpy.props.StringProperty(name="Upper Arm IK Name") - farm_ik = bpy.props.StringProperty(name="Forearm IK Name") - hand_ik = bpy.props.StringProperty(name="Hand IK Name") + uarm_ik: StringProperty(name="Upper Arm IK Name") + farm_ik: StringProperty(name="Forearm IK Name") + hand_ik: StringProperty(name="Hand IK Name") @classmethod def poll(cls, context): @@ -629,16 +630,16 @@ class Rigify_Arm_IK2FK(bpy.types.Operator): bl_label = "Rigify Snap IK arm to FK" bl_options = {'UNDO'} - uarm_fk = bpy.props.StringProperty(name="Upper Arm FK Name") - farm_fk = bpy.props.StringProperty(name="Forerm FK Name") - hand_fk = bpy.props.StringProperty(name="Hand FK Name") + uarm_fk: StringProperty(name="Upper Arm FK Name") + farm_fk: StringProperty(name="Forerm FK Name") + hand_fk: StringProperty(name="Hand FK Name") - uarm_ik = bpy.props.StringProperty(name="Upper Arm IK Name") - farm_ik = bpy.props.StringProperty(name="Forearm IK Name") - hand_ik = bpy.props.StringProperty(name="Hand IK Name") - pole = bpy.props.StringProperty(name="Pole IK Name") + uarm_ik: StringProperty(name="Upper Arm IK Name") + farm_ik: StringProperty(name="Forearm IK Name") + hand_ik: StringProperty(name="Hand IK Name") + pole : StringProperty(name="Pole IK Name") - main_parent = bpy.props.StringProperty(name="Main Parent", default="") + main_parent: StringProperty(name="Main Parent", default="") @classmethod def poll(cls, context): @@ -661,15 +662,15 @@ class Rigify_Leg_FK2IK(bpy.types.Operator): bl_label = "Rigify Snap FK leg to IK" bl_options = {'UNDO'} - thigh_fk = bpy.props.StringProperty(name="Thigh FK Name") - shin_fk = bpy.props.StringProperty(name="Shin FK Name") - foot_fk = bpy.props.StringProperty(name="Foot FK Name") - mfoot_fk = bpy.props.StringProperty(name="MFoot FK Name") + thigh_fk: StringProperty(name="Thigh FK Name") + shin_fk: StringProperty(name="Shin FK Name") + foot_fk: StringProperty(name="Foot FK Name") + mfoot_fk: StringProperty(name="MFoot FK Name") - thigh_ik = bpy.props.StringProperty(name="Thigh IK Name") - shin_ik = bpy.props.StringProperty(name="Shin IK Name") - foot_ik = bpy.props.StringProperty(name="Foot IK Name") - mfoot_ik = bpy.props.StringProperty(name="MFoot IK Name") + thigh_ik: StringProperty(name="Thigh IK Name") + shin_ik: StringProperty(name="Shin IK Name") + foot_ik: StringProperty(name="Foot IK Name") + mfoot_ik: StringProperty(name="MFoot IK Name") @classmethod def poll(cls, context): @@ -692,18 +693,18 @@ class Rigify_Leg_IK2FK(bpy.types.Operator): bl_label = "Rigify Snap IK leg to FK" bl_options = {'UNDO'} - thigh_fk = bpy.props.StringProperty(name="Thigh FK Name") - shin_fk = bpy.props.StringProperty(name="Shin FK Name") - mfoot_fk = bpy.props.StringProperty(name="MFoot FK Name") - foot_fk = bpy.props.StringProperty(name="Foot FK Name", default="") - thigh_ik = bpy.props.StringProperty(name="Thigh IK Name") - shin_ik = bpy.props.StringProperty(name="Shin IK Name") - foot_ik = bpy.props.StringProperty(name="Foot IK Name") - footroll = bpy.props.StringProperty(name="Foot Roll Name") - pole = bpy.props.StringProperty(name="Pole IK Name") - mfoot_ik = bpy.props.StringProperty(name="MFoot IK Name") + thigh_fk: StringProperty(name="Thigh FK Name") + shin_fk: StringProperty(name="Shin FK Name") + mfoot_fk: StringProperty(name="MFoot FK Name") + foot_fk: StringProperty(name="Foot FK Name", default="") + thigh_ik: StringProperty(name="Thigh IK Name") + shin_ik: StringProperty(name="Shin IK Name") + foot_ik: StringProperty(name="Foot IK Name") + footroll: StringProperty(name="Foot Roll Name") + pole: StringProperty(name="Pole IK Name") + mfoot_ik: StringProperty(name="MFoot IK Name") - main_parent = bpy.props.StringProperty(name="Main Parent", default="") + main_parent: StringProperty(name="Main Parent", default="") @classmethod def poll(cls, context): @@ -726,13 +727,14 @@ class Rigify_Rot2PoleSwitch(bpy.types.Operator): bl_idname = "pose.rigify_rot2pole_" + rig_id bl_label = "Rotation - Pole toggle" bl_description = "Toggles IK chain between rotation and pole target" - bone_name = bpy.props.StringProperty(default='') - limb_type = bpy.props.StringProperty(name="Limb Type") - controls = bpy.props.StringProperty(name="Controls string") - ik_ctrl = bpy.props.StringProperty(name="IK Controls string") - fk_ctrl = bpy.props.StringProperty(name="FK Controls string") - parent = bpy.props.StringProperty(name="Parent name") - pole = bpy.props.StringProperty(name="Pole name") + + bone_name: StringProperty(default='') + limb_type: StringProperty(name="Limb Type") + controls: StringProperty(name="Controls string") + ik_ctrl: StringProperty(name="IK Controls string") + fk_ctrl: StringProperty(name="FK Controls string") + parent: StringProperty(name="Parent name") + pole: StringProperty(name="Pole name") def execute(self, context): rig = context.object @@ -753,6 +755,7 @@ class RigUI(bpy.types.Panel): bl_region_type = 'UI' bl_label = "Rig Main Properties" bl_idname = rig_id + "_PT_rig_ui" + bl_category = 'View' @classmethod def poll(self, context): @@ -796,6 +799,7 @@ class RigLayers(bpy.types.Panel): bl_region_type = 'UI' bl_label = "Rig Layers" bl_idname = rig_id + "_PT_rig_layers" + bl_category = 'View' @classmethod def poll(self, context): @@ -841,23 +845,26 @@ class RigLayers(bpy.types.Panel): UI_REGISTER = ''' +classes = ( + Rigify_Arm_FK2IK, + Rigify_Arm_IK2FK, + Rigify_Leg_FK2IK, + Rigify_Leg_IK2FK, + Rigify_Rot2PoleSwitch, + RigUI, + RigLayers, +) + def register(): - bpy.utils.register_class(Rigify_Arm_FK2IK) - bpy.utils.register_class(Rigify_Arm_IK2FK) - bpy.utils.register_class(Rigify_Leg_FK2IK) - bpy.utils.register_class(Rigify_Leg_IK2FK) - bpy.utils.register_class(Rigify_Rot2PoleSwitch) - bpy.utils.register_class(RigUI) - bpy.utils.register_class(RigLayers) + from bpy.utils import register_class + for cls in classes: + register_class(cls) + def unregister(): - bpy.utils.unregister_class(Rigify_Arm_FK2IK) - bpy.utils.unregister_class(Rigify_Arm_IK2FK) - bpy.utils.unregister_class(Rigify_Leg_FK2IK) - bpy.utils.unregister_class(Rigify_Leg_IK2FK) - bpy.utils.register_class(Rigify_Rot2PoleSwitch) - bpy.utils.unregister_class(RigUI) - bpy.utils.unregister_class(RigLayers) + from bpy.utils import unregister_class + for cls in classes: + unregister_class(cls) register() ''' |