Archived
0
0
This repository has been archived on 2023-05-13. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blenrig/__init__.py

1842 lines
49 KiB
Python

# ##### BEGIN GPL LICENSE BLOCK #####
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####
#
# ##### ACKNOWLEDGEMENTS #####
#
# BlenRig by: Juan Pablo Bouza
# Initial script programming: Bart Crouch
# Current maintainer and developer: Juan Pablo Bouza, Sav Martin
#
# Synoptic Panel/Rig Picker based on work by: Salvador Artero
#
# Special thanks on python advice to: Campbell Barton, Bassam Kurdali, Daniel Salazar, CodeManX, Patrick Crawford, Gabriel Caraballo, Ines Almeida
# Special thanks for feedback and ideas to: Jorge Rausch, Gabriel Sabsay, Pablo Vázquez, Hjalti Hjálmarsson, Beorn Leonard, Sarah Laufer
#
# #########################################################################################################
bl_info = {
'name': 'BlenRig 5',
'author': 'Juan Pablo Bouza , Sav Martin',
'version': (1,0,4),
'blender': (2, 80, 0),
'location': 'Armature, Object and Lattice properties, View3d tools panel, Armature Add menu',
'description': 'BlenRig 5 rigging system',
'wiki_url': 'https://cloud.blender.org/p/blenrig/56966411c379cf44546120e8',
'tracker_url': 'https://gitlab.com/jpbouza/BlenRig/issues',
'category': 'Rigging'}
import bpy
import os
from bpy.props import FloatProperty, IntProperty, BoolProperty
######### Load Rig Functions ##########
from .rig_functions import (
bone_auto_hide,
reproportion_toggle,
rig_toggles,
toggle_face_drivers,
toggle_flex_drivers,
toggle_body_drivers
)
######### Update Function for Properties ##########
def prop_update(self, context):
bone_auto_hide(context)
def reprop_update(self, context):
reproportion_toggle(context)
def rig_toggles_update(self, context):
rig_toggles(context)
def optimize_face(self, context):
toggle_face_drivers(context)
def optimize_flex(self, context):
toggle_flex_drivers(context)
def optimize_body(self, context):
toggle_body_drivers(context)
######### Handler for update on load and frame change #########
from bpy.app.handlers import persistent
@persistent
def load_reprop_handler(context):
bone_auto_hide(context)
reproportion_toggle(context)
rig_toggles(context)
@persistent
def load_handler(context):
bone_auto_hide(context)
bpy.app.handlers.load_post.append(load_reprop_handler)
bpy.app.handlers.frame_change_post.append(load_handler)
######### Properties Creation ############
#FK/IK
bpy.types.PoseBone.ik_head = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_head"
)
bpy.types.PoseBone.ik_torso = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_torso"
)
bpy.types.PoseBone.inv_torso = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Invert Torso Hierarchy",
update=prop_update,
name="inv_torso"
)
bpy.types.PoseBone.ik_arm_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_arm_L"
)
bpy.types.PoseBone.ik_arm_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_arm_R"
)
bpy.types.PoseBone.ik_leg_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_leg_L"
)
bpy.types.PoseBone.ik_toes_all_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_toes_all_L"
)
bpy.types.PoseBone.ik_leg_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_leg_R"
)
bpy.types.PoseBone.ik_toes_all_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_toes_all_R"
)
bpy.types.PoseBone.ik_fing_ind_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_ind_L"
)
bpy.types.PoseBone.ik_fing_mid_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_mid_L"
)
bpy.types.PoseBone.ik_fing_ring_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_mid_L"
)
bpy.types.PoseBone.ik_fing_lit_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_lit_L"
)
bpy.types.PoseBone.ik_fing_thumb_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_thumb_L"
)
bpy.types.PoseBone.ik_fing_ind_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_ind_R"
)
bpy.types.PoseBone.ik_fing_mid_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_mid_R"
)
bpy.types.PoseBone.ik_fing_ring_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_mid_R"
)
bpy.types.PoseBone.ik_fing_lit_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_lit_R"
)
bpy.types.PoseBone.ik_fing_thumb_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_thumb_R"
)
bpy.types.PoseBone.ik_fing_all_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_all_R"
)
bpy.types.PoseBone.ik_fing_all_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="IK/FK Toggle",
update=prop_update,
name="ik_fing_all_L"
)
# HINGE
bpy.types.PoseBone.hinge_head = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_head"
)
bpy.types.PoseBone.hinge_neck = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_neck"
)
bpy.types.PoseBone.hinge_arm_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_arm_L"
)
bpy.types.PoseBone.hinge_arm_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_arm_R"
)
bpy.types.PoseBone.hinge_hand_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_hand_L"
)
bpy.types.PoseBone.hinge_hand_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_hand_R"
)
bpy.types.PoseBone.hinge_fing_ind_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_ind_L"
)
bpy.types.PoseBone.hinge_fing_mid_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_mid_L"
)
bpy.types.PoseBone.hinge_fing_ring_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_mid_L"
)
bpy.types.PoseBone.hinge_fing_lit_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_lit_L"
)
bpy.types.PoseBone.hinge_fing_thumb_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_thumb_L"
)
bpy.types.PoseBone.hinge_fing_ind_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_ind_R"
)
bpy.types.PoseBone.hinge_fing_mid_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_mid_R"
)
bpy.types.PoseBone.hinge_fing_ring_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_mid_R"
)
bpy.types.PoseBone.hinge_fing_lit_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_lit_R"
)
bpy.types.PoseBone.hinge_fing_thumb_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_thumb_R"
)
bpy.types.PoseBone.hinge_fing_all_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_all_R"
)
bpy.types.PoseBone.hinge_fing_all_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_fing_all_L"
)
bpy.types.PoseBone.hinge_leg_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_leg_L"
)
bpy.types.PoseBone.hinge_toes_all_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_toes_all_L"
)
bpy.types.PoseBone.hinge_leg_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_leg_R"
)
bpy.types.PoseBone.hinge_toes_all_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Isolate Rotation",
update=prop_update,
name="hinge_toes_all_R"
)
#Stretchy IK
bpy.types.PoseBone.toon_head = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Stretchy IK Toggle",
update=prop_update,
name="toon_head"
)
bpy.types.PoseBone.toon_torso = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Stretchy IK Toggle",
update=prop_update,
name="toon_torso"
)
bpy.types.PoseBone.toon_arm_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Stretchy IK Toggle",
update=prop_update,
name="toon_arm_L"
)
bpy.types.PoseBone.toon_arm_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Stretchy IK Toggle",
update=prop_update,
name="toon_arm_R"
)
bpy.types.PoseBone.toon_leg_L = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Stretchy IK Toggle",
update=prop_update,
name="toon_leg_L"
)
bpy.types.PoseBone.toon_leg_R = FloatProperty(
default=0.000,
min=0.000,
max=1.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Stretchy IK Toggle",
update=prop_update,
name="toon_leg_R"
)
# LOOK SWITCH
bpy.types.PoseBone.look_switch = FloatProperty(
default=3.000,
min=0.000,
max=3.000,
precision=0,
step=100,
options={'ANIMATABLE'},
description="Target of Eyes",
update=prop_update,
name="look_switch"
)
# REPROPORTION
bpy.types.Armature.reproportion = BoolProperty(
default=0,
description="Toggle Reproportion Mode",
update=reprop_update,
name="reproportion"
)
# TOGGLE_FACE_DRIVERS
bpy.types.Armature.toggle_face_drivers = BoolProperty(
default=1,
description="Toggle Face Riggin Drivers",
update=optimize_face,
name="toggle_face_drivers"
)
# TOGGLE_FLEX_DRIVERS
bpy.types.Armature.toggle_flex_drivers = BoolProperty(
default=1,
description="Toggle Flex Scaling",
update=optimize_flex,
name="toggle_flex_drivers"
)
# TOGGLE_BODY_DRIVERS
bpy.types.Armature.toggle_body_drivers = BoolProperty(
default=1,
description="Toggle Body Rigging Drivers",
update=optimize_body,
name="toggle_body_drivers"
)
# TOGGLES
bpy.types.PoseBone.toggle_fingers_L = BoolProperty(
default=0,
description="Toggle fingers in rig",
update=rig_toggles_update,
name="toggle_fingers_L"
)
bpy.types.PoseBone.toggle_toes_L = BoolProperty(
default=0,
description="Toggle toes in rig",
update=rig_toggles_update,
name="toggle_toes_L"
)
bpy.types.PoseBone.toggle_fingers_R = BoolProperty(
default=0,
description="Toggle fingers in rig",
update=rig_toggles_update,
name="toggle_fingers_R"
)
bpy.types.PoseBone.toggle_toes_R = BoolProperty(
default=0,
description="Toggle toes in rig",
update=rig_toggles_update,
name="toggle_toes_R"
)
####### Load BlenRig 5 Controls Panel
from .ui_panel_controls import BLENRIG_PT_BlenRig_5_Interface
####### Load BlenRig 5 Rigging Panel
from .ui_panel_rigging import (
BLENRIG_PT_BlenRig_5_rigging_panel,
BLENRIG_PT_BlenRig_5_mesh_panel,
BLENRIG_PT_BlenRig_5_lattice_panel
)
####### Load BlenRig 5 Bake Operators
from .ops_baking import (
ARMATURE_OT_mesh_pose_baker,
ARMATURE_OT_reset_hooks,
ARMATURE_OT_reset_deformers,
ARMATURE_OT_armature_baker,
ARMATURE_OT_reset_constraints
)
####### Load BlenRig 5 Alignment Operators
from .ops_alignment import (
Operator_BlenRig_Fix_Misaligned_Bones,
Operator_BlenRig_Auto_Bone_Roll,
Operator_BlenRig_Custom_Bone_Roll,
Operator_BlenRig_Store_Roll_Angles,
Operator_BlenRig_Restore_Roll_Angles,
Operator_BlenRig_Reset_Dynamic
)
####### Load BlenRig 5 Snapping Operators
from .ops_snapping import (
Operator_Torso_Snap_FK_IK,
Operator_Torso_Snap_IK_FK,
Operator_Head_Snap_FK_IK,
Operator_Head_Snap_IK_FK,
Operator_Torso_Snap_UP_INV,
Operator_Torso_Snap_INV_UP,
Operator_Arm_L_Snap_FK_IK,
Operator_Arm_L_Snap_IK_FK,
Operator_Arm_R_Snap_FK_IK,
Operator_Arm_R_Snap_IK_FK,
Operator_Leg_L_Snap_FK_IK,
Operator_Leg_L_Snap_IK_FK,
Operator_Leg_R_Snap_FK_IK,
Operator_Leg_R_Snap_IK_FK
)
####### Load BlenRig 5 Body Picker Operators
# Biped
from .ops_picker_body import (
Operator_Head_Stretch,
Operator_Head_Toon,
Operator_Head_Top_Ctrl,
Operator_Head_Mid_Ctrl,
Operator_Head_Mid_Curve,
Operator_Mouth_Str_Ctrl,
Operator_Head_FK,
Operator_Head_IK,
Operator_Neck_4_Toon,
Operator_Face_Toon_Up,
Operator_Face_Toon_Mid,
Operator_Face_Toon_Low,
Operator_Neck_3,
Operator_Neck_2,
Operator_Neck_1,
Operator_Neck_3_Toon,
Operator_Neck_2_Toon,
Operator_Neck_Ctrl,
Operator_Shoulder_L,
Operator_Shoulder_R,
Operator_Shoulder_Rot_L,
Operator_Shoulder_Rot_R,
Operator_Clavi_Toon_L,
Operator_Clavi_Toon_R,
Operator_Head_Scale,
Operator_Arm_Toon_L,
Operator_Elbow_Pole_L,
Operator_Forearm_Toon_L,
Operator_Arm_Scale_L,
Operator_Arm_FK_L,
Operator_Arm_IK_L,
Operator_Elbow_Toon_L,
Operator_Forearm_FK_L,
Operator_Forearm_IK_L,
Operator_Hand_Toon_L,
Operator_Arm_Toon_R,
Operator_Elbow_Pole_R,
Operator_Forearm_Toon_R,
Operator_Arm_Scale_R,
Operator_Arm_FK_R,
Operator_Arm_IK_R,
Operator_Elbow_Toon_R,
Operator_Forearm_FK_R,
Operator_Forearm_IK_R,
Operator_Hand_Toon_R,
Operator_Torso_Ctrl,
Operator_Spine_3,
Operator_Spine_2,
Operator_Spine_1,
Operator_Master_Torso_Pivot_Point,
Operator_Master_Torso,
Operator_Pelvis_Ctrl,
Operator_Spine_4_Toon,
Operator_Spine_3_Toon,
Operator_Spine_2_Toon,
Operator_Spine_1_Toon,
Operator_Pelvis_Toon,
Operator_Spine_3_Inv_Ctrl,
Operator_Hand_Roll_L,
Operator_Fing_Spread_L,
Operator_Hand_IK_Pivot_Point_L,
Operator_Hand_IK_Ctrl_L,
Operator_Hand_FK_L,
Operator_Fing_Lit_Ctrl_L,
Operator_Fing_Lit_2_L,
Operator_Fing_Lit_3_L,
Operator_Fing_Lit_4_L,
Operator_Fing_Ring_Ctrl_L,
Operator_Fing_Ring_2_L,
Operator_Fing_Ring_3_L,
Operator_Fing_Ring_4_L,
Operator_Fing_Mid_Ctrl_L,
Operator_Fing_Mid_2_L,
Operator_Fing_Mid_3_L,
Operator_Fing_Mid_4_L,
Operator_Fing_Ind_Ctrl_L,
Operator_Fing_Ind_2_L,
Operator_Fing_Ind_3_L,
Operator_Fing_Ind_4_L,
Operator_Fing_Thumb_Ctrl_L,
Operator_Fing_Thumb_2_L,
Operator_Fing_Thumb_3_L,
Operator_Fing_Thumb_1_L,
Operator_Fing_Lit_IK_L,
Operator_Fing_Ring_IK_L,
Operator_Fing_Mid_IK_L,
Operator_Fing_Ind_IK_L,
Operator_Fing_Thumb_IK_L,
Operator_Hand_Close_L,
Operator_Hand_Roll_R,
Operator_Fing_Spread_R,
Operator_Hand_IK_Pivot_Point_R,
Operator_Hand_IK_Ctrl_R,
Operator_Hand_FK_R,
Operator_Fing_Lit_Ctrl_R,
Operator_Fing_Lit_2_R,
Operator_Fing_Lit_3_R,
Operator_Fing_Lit_4_R,
Operator_Fing_Ring_Ctrl_R,
Operator_Fing_Ring_2_R,
Operator_Fing_Ring_3_R,
Operator_Fing_Ring_4_R,
Operator_Fing_Mid_Ctrl_R,
Operator_Fing_Mid_2_R,
Operator_Fing_Mid_3_R,
Operator_Fing_Mid_4_R,
Operator_Fing_Ind_Ctrl_R,
Operator_Fing_Ind_2_R,
Operator_Fing_Ind_3_R,
Operator_Fing_Ind_4_R,
Operator_Fing_Thumb_Ctrl_R,
Operator_Fing_Thumb_2_R,
Operator_Fing_Thumb_3_R,
Operator_Fing_Thumb_1_R,
Operator_Fing_Lit_IK_R,
Operator_Fing_Ring_IK_R,
Operator_Fing_Mid_IK_R,
Operator_Fing_Ind_IK_R,
Operator_Fing_Thumb_IK_R,
Operator_Hand_Close_R,
Operator_Thigh_Toon_L,
Operator_Knee_Pole_L,
Operator_Shin_Toon_L,
Operator_Pelvis_Toon_L,
Operator_Leg_Scale_L,
Operator_Thigh_FK_L,
Operator_Thigh_IK_L,
Operator_Knee_Toon_L,
Operator_Shin_FK_L,
Operator_Shin_IK_L,
Operator_Foot_Toon_L,
Operator_Thigh_Toon_R,
Operator_Knee_Pole_R,
Operator_Shin_Toon_R,
Operator_Pelvis_Toon_R,
Operator_Leg_Scale_R,
Operator_Thigh_FK_R,
Operator_Thigh_IK_R,
Operator_Knee_Toon_R,
Operator_Shin_FK_R,
Operator_Shin_IK_R,
Operator_Foot_Toon_R,
Operator_Toe_2_FK_L,
Operator_Toe_Roll_1_L,
Operator_Toe_1_FK_L,
Operator_Toe_Roll_2_L,
Operator_Foot_L,
Operator_Foot_Roll_Ctrl_L,
Operator_Toe_Big_Ctrl_L,
Operator_Toe_Big_2_L,
Operator_Toe_Big_3_L,
Operator_Toe_Big_IK_L,
Operator_Toe_Ind_Ctrl_L,
Operator_Toe_Ind_2_L,
Operator_Toe_Ind_3_L,
Operator_Toe_Ind_4_L,
Operator_Toe_Ind_IK_L,
Operator_Toe_Mid_Ctrl_L,
Operator_Toe_Mid_2_L,
Operator_Toe_Mid_3_L,
Operator_Toe_Mid_4_L,
Operator_Toe_Mid_IK_L,
Operator_Toe_Fourth_Ctrl_L,
Operator_Toe_Fourth_2_L,
Operator_Toe_Fourth_3_L,
Operator_Toe_Fourth_4_L,
Operator_Toe_Fourth_IK_L,
Operator_Toe_Lit_Ctrl_L,
Operator_Toe_Lit_2_L,
Operator_Toe_Lit_3_L,
Operator_Toe_Lit_IK_L,
Operator_Toes_Spread_L,
Operator_Toes_IK_Ctrl_Mid_L,
Operator_Toes_IK_Ctrl_L,
Operator_Sole_Ctrl_L,
Operator_Sole_Pivot_Point_L,
Operator_Toe_2_FK_R,
Operator_Toe_Roll_1_R,
Operator_Toe_1_FK_R,
Operator_Toe_Roll_2_R,
Operator_Foot_R,
Operator_Foot_Roll_Ctrl_R,
Operator_Toe_Big_Ctrl_R,
Operator_Toe_Big_2_R,
Operator_Toe_Big_3_R,
Operator_Toe_Big_IK_R,
Operator_Toe_Ind_Ctrl_R,
Operator_Toe_Ind_2_R,
Operator_Toe_Ind_3_R,
Operator_Toe_Ind_4_R,
Operator_Toe_Ind_IK_R,
Operator_Toe_Mid_Ctrl_R,
Operator_Toe_Mid_2_R,
Operator_Toe_Mid_3_R,
Operator_Toe_Mid_4_R,
Operator_Toe_Mid_IK_R,
Operator_Toe_Fourth_Ctrl_R,
Operator_Toe_Fourth_2_R,
Operator_Toe_Fourth_3_R,
Operator_Toe_Fourth_4_R,
Operator_Toe_Fourth_IK_R,
Operator_Toe_Lit_Ctrl_R,
Operator_Toe_Lit_2_R,
Operator_Toe_Lit_3_R,
Operator_Toe_Lit_IK_R,
Operator_Toes_Spread_R,
Operator_Toes_IK_Ctrl_Mid_R,
Operator_Toes_IK_Ctrl_R,
Operator_Sole_Ctrl_R,
Operator_Sole_Pivot_Point_R,
Operator_Master,
Operator_Master_Pivot_Point,
Operator_Look,
Operator_Look_L,
Operator_Look_R,
Operator_Zoom_Selected
)
#Quadruped
from .ops_picker_body import (
Operator_Ankle_Toon_L,
Operator_Carpal_FK_L,
Operator_Carpal_IK_L,
Operator_Carpal_Toon_L,
Operator_Ankle_Toon_R,
Operator_Carpal_FK_R,
Operator_Carpal_IK_R,
Operator_Carpal_Toon_R,
Operator_Hock_Toon_L,
Operator_Tarsal_FK_L,
Operator_Tarsal_IK_L,
Operator_Tarsal_Toon_L,
Operator_Hock_Toon_R,
Operator_Tarsal_FK_R,
Operator_Tarsal_IK_R,
Operator_Tarsal_Toon_R,
Operator_Fing_2_FK_L,
Operator_Fing_1_FK_L,
Operator_Fing_Roll_2_L,
Operator_Fing_Roll_1_L,
Operator_Hand_L,
Operator_Hand_Roll_Ctrl_L,
Operator_Hand_Sole_Ctrl_L,
Operator_Hand_Sole_Pivot_Point_L,
Operator_Fing_2_FK_R,
Operator_Fing_1_FK_R,
Operator_Fing_Roll_2_R,
Operator_Fing_Roll_1_R,
Operator_Hand_R,
Operator_Hand_Roll_Ctrl_R,
Operator_Hand_Sole_Ctrl_R,
Operator_Hand_Sole_Pivot_Point_R
)
####### Load BlenRig 5 Face Picker Operators
from .ops_picker_face import (
Operator_Ear_Up_R,
Operator_Ear_R,
Operator_Ear_Low_R,
Operator_Brow_Ctrl_1_R,
Operator_Brow_Ctrl_2_R,
Operator_Brow_Ctrl_3_R,
Operator_Brow_Ctrl_4_R,
Operator_Brow_Ctrl_R,
Operator_Toon_Brow_R,
Operator_Ear_Up_L,
Operator_Ear_L,
Operator_Ear_Low_L,
Operator_Brow_Ctrl_1_L,
Operator_Brow_Ctrl_2_L,
Operator_Brow_Ctrl_3_L,
Operator_Brow_Ctrl_4_L,
Operator_Brow_Ctrl_L,
Operator_Toon_Brow_L,
Operator_Frown_Ctrl,
Operator_Nose_Bridge_1_Ctrl,
Operator_Eyelid_Up_Ctrl_R,
Operator_Eyelid_Up_Ctrl_3_R,
Operator_Eyelid_Up_Ctrl_2_R,
Operator_Eyelid_Up_Ctrl_1_R,
Operator_Toon_Eye_Out_R,
Operator_Toon_Eye_Up_R,
Operator_Pupil_Ctrl_R,
Operator_Eye_Ctrl_R,
Operator_Iris_Ctrl_R,
Operator_Toon_Eye_In_R,
Operator_Toon_Eye_Low_R,
Operator_Eyelid_Ctrl_Out_R,
Operator_Eyelid_Low_Ctrl_3_R,
Operator_Eyelid_Low_Ctrl_2_R,
Operator_Eyelid_Low_Ctrl_1_R,
Operator_Eyelid_Ctrl_In_R,
Operator_Eyelid_Low_Ctrl_R,
Operator_Eyelid_Up_Ctrl_L,
Operator_Eyelid_Up_Ctrl_3_L,
Operator_Eyelid_Up_Ctrl_2_L,
Operator_Eyelid_Up_Ctrl_1_L,
Operator_Toon_Eye_Out_L,
Operator_Toon_Eye_Up_L,
Operator_Pupil_Ctrl_L,
Operator_Eye_Ctrl_L,
Operator_Iris_Ctrl_L,
Operator_Toon_Eye_In_L,
Operator_Toon_Eye_Low_L,
Operator_Eyelid_Ctrl_Out_L,
Operator_Eyelid_Low_Ctrl_3_L,
Operator_Eyelid_Low_Ctrl_2_L,
Operator_Eyelid_Low_Ctrl_1_L,
Operator_Eyelid_Ctrl_In_L,
Operator_Eyelid_Low_Ctrl_L,
Operator_Nose_Bridge_2_Ctrl,
Operator_Nose_Frown_Ctrl_R,
Operator_Nose_Frown_Ctrl_L,
Operator_Cheek_Ctrl_R,
Operator_Cheek_Ctrl_3_R,
Operator_Cheek_Ctrl_2_R,
Operator_Cheek_Ctrl_1_R,
Operator_Cheek2_Ctrl_3_R,
Operator_Cheek2_Ctrl_2_R,
Operator_Cheek2_Ctrl_1_R,
Operator_Lip_Up3_Ctrl_3_R,
Operator_Lip_Up3_Ctrl_2_R,
Operator_Lip_Up3_Ctrl_1_R,
Operator_Lip_Up2_Ctrl_3_R,
Operator_Lip_Up2_Ctrl_2_R,
Operator_Lip_Up2_Ctrl_1_R,
Operator_Cheek_Ctrl_L,
Operator_Cheek_Ctrl_3_L,
Operator_Cheek_Ctrl_2_L,
Operator_Cheek_Ctrl_1_L,
Operator_Cheek2_Ctrl_3_L,
Operator_Cheek2_Ctrl_2_L,
Operator_Cheek2_Ctrl_1_L,
Operator_Lip_Up3_Ctrl_3_L,
Operator_Lip_Up3_Ctrl_2_L,
Operator_Lip_Up3_Ctrl_1_L,
Operator_Lip_Up2_Ctrl_3_L,
Operator_Lip_Up2_Ctrl_2_L,
Operator_Lip_Up2_Ctrl_1_L,
Operator_Nostril_Ctrl_R,
Operator_Nose_Ctrl,
Operator_Nostril_Ctrl_L,
Operator_Lip_Up3_Ctrl_Mid,
Operator_Lip_Up3_Ctrl,
Operator_Lip_Up2_Ctrl_Mid,
Operator_lip_up2_ctrl,
Operator_Cheek_Ctrl_4_R,
Operator_Cheek2_Ctrl_4_R,
Operator_Lip_Up3_Ctrl_4_R,
Operator_Lip_Up2_Ctrl_4_R,
Operator_Cheek_Ctrl_4_L,
Operator_Cheek2_Ctrl_4_L,
Operator_Lip_Up3_Ctrl_4_L,
Operator_Lip_Up2_Ctrl_4_L,
Operator_Mouth_Mstr_Up,
Operator_Mouth_Corner_R,
Operator_Mouth_Corner_L,
Operator_Lip_Up_Ctrl,
Operator_Lip_Up_Ctrl_Collision,
Operator_Lip_Up_Ctrl_3_R,
Operator_Lip_Up_Ctrl_2_R,
Operator_Lip_Up_Ctrl_1_R,
Operator_Lip_Up_Ctrl_Mid,
Operator_Lip_Up_Ctrl_3_L,
Operator_Lip_Up_Ctrl_2_L,
Operator_Lip_Up_Ctrl_1_L,
Operator_Mouth_Up_Ctrl,
Operator_Lip_Up_Ctrl_4_R,
Operator_Lip_Up_Ctrl_4_L,
Operator_Mouth_Ctrl,
Operator_Mouth_Low_Ctrl,
Operator_Lip_Low_Ctrl_3_R,
Operator_Lip_Low_Ctrl_2_R,
Operator_Lip_Low_Ctrl_1_R,
Operator_Lip_Low_Ctrl_Mid,
Operator_Lip_Low_Ctrl_1_L,
Operator_Lip_Low_Ctrl_2_L,
Operator_Lip_Low_Ctrl_3_L,
Operator_Lip_Low_Ctrl_Collision,
Operator_Lip_Low_Ctrl,
Operator_Mouth_Mstr_Low,
Operator_Mouth_Mstr_Ctrl,
Operator_Mouth_Frown_Ctrl_R,
Operator_Lip_Low2_Ctrl_3_R,
Operator_Lip_Low2_Ctrl_2_R,
Operator_Lip_Low2_Ctrl_1_R,
Operator_Lip_Low3_Ctrl_3_R,
Operator_Lip_Low3_Ctrl_2_R,
Operator_Lip_Low3_Ctrl_1_R,
Operator_Cheek_Ctrl_5_R,
Operator_Chin_Ctrl_3_R,
Operator_Chin_Ctrl_2_R,
Operator_Chin_Ctrl_1_R,
Operator_Mouth_Frown_Ctrl_L,
Operator_Lip_Low2_Ctrl_3_L,
Operator_Lip_Low2_Ctrl_2_L,
Operator_Lip_Low2_Ctrl_1_L,
Operator_Lip_Low3_Ctrl_3_L,
Operator_Lip_Low3_Ctrl_2_L,
Operator_Lip_Low3_Ctrl_1_L,
Operator_Cheek_Ctrl_5_L,
Operator_Chin_Ctrl_3_L,
Operator_Chin_Ctrl_2_L,
Operator_Chin_Ctrl_1_L,
Operator_Lip_Low2_Ctrl_Mid,
Operator_Lip_Low2_Ctrl,
Operator_Lip_Low3_Ctrl_Mid,
Operator_Lip_Low3_Ctrl,
Operator_Chin_Ctrl_Mid,
Operator_Chin_Ctrl,
Operator_Maxi,
Operator_Head_Mid_Stretch,
Operator_Head_Low_Stretch,
Operator_Teeth_Up_Ctrl_R,
Operator_Teeth_Up_Ctrl_L,
Operator_Teeth_Up_Ctrl_Mid_R,
Operator_Teeth_Up_Ctrl_Mid_L,
Operator_Teeth_Up_Ctrl_Mid,
Operator_Teeth_Up,
Operator_Teeth_Low_Ctrl_R,
Operator_Teeth_Low_Ctrl_L,
Operator_Teeth_Low_Ctrl_Mid_R,
Operator_Teeth_Low_Ctrl_Mid_L,
Operator_Teeth_Low_Ctrl_Mid,
Operator_Teeth_Low,
Operator_Uvula_1,
Operator_Uvula_2,
Operator_Tongue_1_FK,
Operator_Tongue_2_FK,
Operator_Tongue_1_IK,
Operator_Tongue_2_IK,
Operator_Tongue_3_IK,
Operator_Tongue_Mstr
)
####### Load BlenRig 5 Layers Schemes Operators
from .blenrig_biped.ops_biped_layers_scheme import (
Operator_BlenRig_Layers_Scheme_Compact,
Operator_BlenRig_Layers_Scheme_Expanded
)
####### Load BlenRig 5 Rig Updater Operators
from .ops_rig_updater import (
Operator_Biped_Updater
)
####### Load BlenRig 5 Rig Presets Operators
from .blenrig_biped.ops_blenrig_biped_add import (
Operator_BlenRig5_Add_Biped
)
#################### Blenrig Object Add Menu ###############
class INFO_MT_blenrig5_add_rig(bpy.types.Menu):
# Define the menu
bl_idname = "BlenRig 5 add rigs"
bl_label = "BlenRig 5 add rigs"
def draw(self, context):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
layout.operator("blenrig5.add_biped_rig", text="BlenRig 5 Biped Rig", icon='POSE_HLT')
# Define menu
def blenrig5_add_menu_func(self, context):
self.layout.operator("blenrig5.add_biped_rig", text="BlenRig 5 Biped Rig", icon='POSE_HLT')
######### GUI OPERATORS ###########################################
# Display or hide tabs (sets the appropriate id-property)
class ARMATURE_OT_blenrig_5_gui(bpy.types.Operator):
"Display tab"
bl_label = ""
bl_idname = "gui.blenrig_5_tabs"
tab: bpy.props.StringProperty(name="Tab", description="Tab of the gui to expand")
def invoke(self, context, event):
arm = bpy.context.active_object.data
if self.properties.tab in arm:
arm[self.properties.tab] = not arm[self.properties.tab]
return{'FINISHED'}
####### REGISTRATION ##############################################
# Needed for property registration
class Blenrig_5_Props(bpy.types.PropertyGroup):
gui_picker_body_props: bpy.props.BoolProperty(default=True, description="Toggle properties display")
gui_snap_all: bpy.props.BoolProperty(default=False, description="Display ALL Snapping Buttons")
gui_snap: bpy.props.BoolProperty(default=False, description="Display Snapping Buttons")
gui_cust_props_all: bpy.props.BoolProperty(default=False, description="Show ALL Custom Properties")
gui_extra_props_head: bpy.props.BoolProperty(default=False, description="Tweak head extra options")
gui_extra_props_arms: bpy.props.BoolProperty(default=False, description="Tweak arms extra options")
gui_extra_props_fingers: bpy.props.BoolProperty(default=False, description="Tweak fingers extra options")
gui_extra_props_legs: bpy.props.BoolProperty(default=False, description="Tweak legs extra options")
gui_extra_props_accessories: bpy.props.BoolProperty(default=False, description="Tweak accessories options")
gui_face_movement_ranges: bpy.props.BoolProperty(default=False, description="Set limits to facial movement")
gui_face_lip_shaping: bpy.props.BoolProperty(default=False, description="Parameters to define lips curvature")
gui_face_action_toggles: bpy.props.BoolProperty(default=False, description="Toggle facial actions off for editing")
gui_body_ik_rot: bpy.props.BoolProperty(default=False, description="Set the initial rotation of IK bones")
gui_body_auto_move: bpy.props.BoolProperty(default=False, description="Parameters for automated movement")
gui_body_rj: bpy.props.BoolProperty(default=False, description="Simulate how bone thickness affects joint rotation")
gui_body_toggles: bpy.props.BoolProperty(default=False, description="Toggle body parts")
bake_to_shape: bpy.props.BoolProperty(name="Bake to Shape Key", default=False, description="Bake the mesh into a separate Shape Key")
align_selected_only: bpy.props.BoolProperty(name="Selected Bones Only", default=False, description="Perform aligning only on selected bones")
# BlenRig Armature Tools Operator
armature_classes = [
ARMATURE_OT_reset_constraints,
ARMATURE_OT_armature_baker,
ARMATURE_OT_mesh_pose_baker,
ARMATURE_OT_reset_hooks,
ARMATURE_OT_reset_deformers,
ARMATURE_OT_blenrig_5_gui,
BLENRIG_PT_BlenRig_5_Interface,
Blenrig_5_Props,
BLENRIG_PT_BlenRig_5_rigging_panel,
BLENRIG_PT_BlenRig_5_mesh_panel,
BLENRIG_PT_BlenRig_5_lattice_panel
]
# BlenRig Align Operators
alignment_classes = [
Operator_BlenRig_Fix_Misaligned_Bones,
Operator_BlenRig_Auto_Bone_Roll,
Operator_BlenRig_Custom_Bone_Roll,
Operator_BlenRig_Store_Roll_Angles,
Operator_BlenRig_Restore_Roll_Angles,
Operator_BlenRig_Reset_Dynamic
]
# BlenRig Layers Schemes Operators
schemes_classes = [
Operator_BlenRig_Layers_Scheme_Compact,
Operator_BlenRig_Layers_Scheme_Expanded
]
# BlenRig Rig Updater Operators
rig_updater_classes = [
Operator_Biped_Updater
]
# BlenRig IK/FK Snapping Operators
snapping_classes = [
Operator_Torso_Snap_FK_IK,
Operator_Torso_Snap_IK_FK,
Operator_Head_Snap_FK_IK,
Operator_Head_Snap_IK_FK,
Operator_Torso_Snap_UP_INV,
Operator_Torso_Snap_INV_UP,
Operator_Arm_L_Snap_FK_IK,
Operator_Arm_L_Snap_IK_FK,
Operator_Arm_R_Snap_FK_IK,
Operator_Arm_R_Snap_IK_FK,
Operator_Leg_L_Snap_FK_IK,
Operator_Leg_L_Snap_IK_FK,
Operator_Leg_R_Snap_FK_IK,
Operator_Leg_R_Snap_IK_FK
]
# BlenRig Picker Operators
body_picker_biped_classes = [
Operator_Head_Stretch,
Operator_Head_Toon,
Operator_Head_Top_Ctrl,
Operator_Head_Mid_Ctrl,
Operator_Head_Mid_Curve,
Operator_Mouth_Str_Ctrl,
Operator_Head_FK,
Operator_Head_IK,
Operator_Neck_4_Toon,
Operator_Face_Toon_Up,
Operator_Face_Toon_Mid,
Operator_Face_Toon_Low,
Operator_Neck_3,
Operator_Neck_2,
Operator_Neck_1,
Operator_Neck_3_Toon,
Operator_Neck_2_Toon,
Operator_Neck_Ctrl,
Operator_Shoulder_L,
Operator_Shoulder_R,
Operator_Shoulder_Rot_L,
Operator_Shoulder_Rot_R,
Operator_Clavi_Toon_L,
Operator_Clavi_Toon_R,
Operator_Head_Scale,
Operator_Arm_Toon_L,
Operator_Elbow_Pole_L,
Operator_Forearm_Toon_L,
Operator_Arm_Scale_L,
Operator_Arm_FK_L,
Operator_Arm_IK_L,
Operator_Elbow_Toon_L,
Operator_Forearm_FK_L,
Operator_Forearm_IK_L,
Operator_Hand_Toon_L,
Operator_Arm_Toon_R,
Operator_Elbow_Pole_R,
Operator_Forearm_Toon_R,
Operator_Arm_Scale_R,
Operator_Arm_FK_R,
Operator_Arm_IK_R,
Operator_Elbow_Toon_R,
Operator_Forearm_FK_R,
Operator_Forearm_IK_R,
Operator_Hand_Toon_R,
Operator_Torso_Ctrl,
Operator_Spine_3,
Operator_Spine_2,
Operator_Spine_1,
Operator_Master_Torso_Pivot_Point,
Operator_Master_Torso,
Operator_Pelvis_Ctrl,
Operator_Spine_4_Toon,
Operator_Spine_3_Toon,
Operator_Spine_2_Toon,
Operator_Spine_1_Toon,
Operator_Pelvis_Toon,
Operator_Spine_3_Inv_Ctrl,
Operator_Hand_Roll_L,
Operator_Fing_Spread_L,
Operator_Hand_IK_Pivot_Point_L,
Operator_Hand_IK_Ctrl_L,
Operator_Hand_FK_L,
Operator_Fing_Lit_Ctrl_L,
Operator_Fing_Lit_2_L,
Operator_Fing_Lit_3_L,
Operator_Fing_Lit_4_L,
Operator_Fing_Ring_Ctrl_L,
Operator_Fing_Ring_2_L,
Operator_Fing_Ring_3_L,
Operator_Fing_Ring_4_L,
Operator_Fing_Mid_Ctrl_L,
Operator_Fing_Mid_2_L,
Operator_Fing_Mid_3_L,
Operator_Fing_Mid_4_L,
Operator_Fing_Ind_Ctrl_L,
Operator_Fing_Ind_2_L,
Operator_Fing_Ind_3_L,
Operator_Fing_Ind_4_L,
Operator_Fing_Thumb_Ctrl_L,
Operator_Fing_Thumb_2_L,
Operator_Fing_Thumb_3_L,
Operator_Fing_Thumb_1_L,
Operator_Fing_Lit_IK_L,
Operator_Fing_Ring_IK_L,
Operator_Fing_Mid_IK_L,
Operator_Fing_Ind_IK_L,
Operator_Fing_Thumb_IK_L,
Operator_Hand_Close_L,
Operator_Hand_Roll_R,
Operator_Fing_Spread_R,
Operator_Hand_IK_Pivot_Point_R,
Operator_Hand_IK_Ctrl_R,
Operator_Hand_FK_R,
Operator_Fing_Lit_Ctrl_R,
Operator_Fing_Lit_2_R,
Operator_Fing_Lit_3_R,
Operator_Fing_Lit_4_R,
Operator_Fing_Ring_Ctrl_R,
Operator_Fing_Ring_2_R,
Operator_Fing_Ring_3_R,
Operator_Fing_Ring_4_R,
Operator_Fing_Mid_Ctrl_R,
Operator_Fing_Mid_2_R,
Operator_Fing_Mid_3_R,
Operator_Fing_Mid_4_R,
Operator_Fing_Ind_Ctrl_R,
Operator_Fing_Ind_2_R,
Operator_Fing_Ind_3_R,
Operator_Fing_Ind_4_R,
Operator_Fing_Thumb_Ctrl_R,
Operator_Fing_Thumb_2_R,
Operator_Fing_Thumb_3_R,
Operator_Fing_Thumb_1_R,
Operator_Fing_Lit_IK_R,
Operator_Fing_Ring_IK_R,
Operator_Fing_Mid_IK_R,
Operator_Fing_Ind_IK_R,
Operator_Fing_Thumb_IK_R,
Operator_Hand_Close_R,
Operator_Thigh_Toon_L,
Operator_Knee_Pole_L,
Operator_Shin_Toon_L,
Operator_Pelvis_Toon_L,
Operator_Leg_Scale_L,
Operator_Thigh_FK_L,
Operator_Thigh_IK_L,
Operator_Knee_Toon_L,
Operator_Shin_FK_L,
Operator_Shin_IK_L,
Operator_Foot_Toon_L,
Operator_Thigh_Toon_R,
Operator_Knee_Pole_R,
Operator_Shin_Toon_R,
Operator_Pelvis_Toon_R,
Operator_Leg_Scale_R,
Operator_Thigh_FK_R,
Operator_Thigh_IK_R,
Operator_Knee_Toon_R,
Operator_Shin_FK_R,
Operator_Shin_IK_R,
Operator_Foot_Toon_R,
Operator_Toe_2_FK_L,
Operator_Toe_Roll_1_L,
Operator_Toe_1_FK_L,
Operator_Toe_Roll_2_L,
Operator_Foot_L,
Operator_Foot_Roll_Ctrl_L,
Operator_Toe_Big_Ctrl_L,
Operator_Toe_Big_2_L,
Operator_Toe_Big_3_L,
Operator_Toe_Big_IK_L,
Operator_Toe_Ind_Ctrl_L,
Operator_Toe_Ind_2_L,
Operator_Toe_Ind_3_L,
Operator_Toe_Ind_4_L,
Operator_Toe_Ind_IK_L,
Operator_Toe_Mid_Ctrl_L,
Operator_Toe_Mid_2_L,
Operator_Toe_Mid_3_L,
Operator_Toe_Mid_4_L,
Operator_Toe_Mid_IK_L,
Operator_Toe_Fourth_Ctrl_L,
Operator_Toe_Fourth_2_L,
Operator_Toe_Fourth_3_L,
Operator_Toe_Fourth_4_L,
Operator_Toe_Fourth_IK_L,
Operator_Toe_Lit_Ctrl_L,
Operator_Toe_Lit_2_L,
Operator_Toe_Lit_3_L,
Operator_Toe_Lit_IK_L,
Operator_Toes_Spread_L,
Operator_Toes_IK_Ctrl_Mid_L,
Operator_Toes_IK_Ctrl_L,
Operator_Sole_Ctrl_L,
Operator_Sole_Pivot_Point_L,
Operator_Toe_2_FK_R,
Operator_Toe_Roll_1_R,
Operator_Toe_1_FK_R,
Operator_Toe_Roll_2_R,
Operator_Foot_R,
Operator_Foot_Roll_Ctrl_R,
Operator_Toe_Big_Ctrl_R,
Operator_Toe_Big_2_R,
Operator_Toe_Big_3_R,
Operator_Toe_Big_IK_R,
Operator_Toe_Ind_Ctrl_R,
Operator_Toe_Ind_2_R,
Operator_Toe_Ind_3_R,
Operator_Toe_Ind_4_R,
Operator_Toe_Ind_IK_R,
Operator_Toe_Mid_Ctrl_R,
Operator_Toe_Mid_2_R,
Operator_Toe_Mid_3_R,
Operator_Toe_Mid_4_R,
Operator_Toe_Mid_IK_R,
Operator_Toe_Fourth_Ctrl_R,
Operator_Toe_Fourth_2_R,
Operator_Toe_Fourth_3_R,
Operator_Toe_Fourth_4_R,
Operator_Toe_Fourth_IK_R,
Operator_Toe_Lit_Ctrl_R,
Operator_Toe_Lit_2_R,
Operator_Toe_Lit_3_R,
Operator_Toe_Lit_IK_R,
Operator_Toes_Spread_R,
Operator_Toes_IK_Ctrl_Mid_R,
Operator_Toes_IK_Ctrl_R,
Operator_Sole_Ctrl_R,
Operator_Sole_Pivot_Point_R,
Operator_Master,
Operator_Master_Pivot_Point,
Operator_Look,
Operator_Look_L,
Operator_Look_R,
Operator_Zoom_Selected
]
body_picker_quadruped_classes = [
Operator_Ankle_Toon_L,
Operator_Carpal_FK_L,
Operator_Carpal_IK_L,
Operator_Carpal_Toon_L,
Operator_Ankle_Toon_R,
Operator_Carpal_FK_R,
Operator_Carpal_IK_R,
Operator_Carpal_Toon_R,
Operator_Hock_Toon_L,
Operator_Tarsal_FK_L,
Operator_Tarsal_IK_L,
Operator_Tarsal_Toon_L,
Operator_Hock_Toon_R,
Operator_Tarsal_FK_R,
Operator_Tarsal_IK_R,
Operator_Tarsal_Toon_R,
Operator_Fing_2_FK_L,
Operator_Fing_1_FK_L,
Operator_Fing_Roll_2_L,
Operator_Fing_Roll_1_L,
Operator_Hand_L,
Operator_Hand_Roll_Ctrl_L,
Operator_Hand_Sole_Ctrl_L,
Operator_Hand_Sole_Pivot_Point_L,
Operator_Fing_2_FK_R,
Operator_Fing_1_FK_R,
Operator_Fing_Roll_2_R,
Operator_Fing_Roll_1_R,
Operator_Hand_R,
Operator_Hand_Roll_Ctrl_R,
Operator_Hand_Sole_Ctrl_R,
Operator_Hand_Sole_Pivot_Point_R
]
face_picker_classes = [
Operator_Ear_Up_R,
Operator_Ear_R,
Operator_Ear_Low_R,
Operator_Brow_Ctrl_1_R,
Operator_Brow_Ctrl_2_R,
Operator_Brow_Ctrl_3_R,
Operator_Brow_Ctrl_4_R,
Operator_Brow_Ctrl_R,
Operator_Toon_Brow_R,
Operator_Ear_Up_L,
Operator_Ear_L,
Operator_Ear_Low_L,
Operator_Brow_Ctrl_1_L,
Operator_Brow_Ctrl_2_L,
Operator_Brow_Ctrl_3_L,
Operator_Brow_Ctrl_4_L,
Operator_Brow_Ctrl_L,
Operator_Toon_Brow_L,
Operator_Frown_Ctrl,
Operator_Nose_Bridge_1_Ctrl,
Operator_Eyelid_Up_Ctrl_R,
Operator_Eyelid_Up_Ctrl_3_R,
Operator_Eyelid_Up_Ctrl_2_R,
Operator_Eyelid_Up_Ctrl_1_R,
Operator_Toon_Eye_Out_R,
Operator_Toon_Eye_Up_R,
Operator_Pupil_Ctrl_R,
Operator_Eye_Ctrl_R,
Operator_Iris_Ctrl_R,
Operator_Toon_Eye_In_R,
Operator_Toon_Eye_Low_R,
Operator_Eyelid_Ctrl_Out_R,
Operator_Eyelid_Low_Ctrl_3_R,
Operator_Eyelid_Low_Ctrl_2_R,
Operator_Eyelid_Low_Ctrl_1_R,
Operator_Eyelid_Ctrl_In_R,
Operator_Eyelid_Low_Ctrl_R,
Operator_Eyelid_Up_Ctrl_L,
Operator_Eyelid_Up_Ctrl_3_L,
Operator_Eyelid_Up_Ctrl_2_L,
Operator_Eyelid_Up_Ctrl_1_L,
Operator_Toon_Eye_Out_L,
Operator_Toon_Eye_Up_L,
Operator_Pupil_Ctrl_L,
Operator_Eye_Ctrl_L,
Operator_Iris_Ctrl_L,
Operator_Toon_Eye_In_L,
Operator_Toon_Eye_Low_L,
Operator_Eyelid_Ctrl_Out_L,
Operator_Eyelid_Low_Ctrl_3_L,
Operator_Eyelid_Low_Ctrl_2_L,
Operator_Eyelid_Low_Ctrl_1_L,
Operator_Eyelid_Ctrl_In_L,
Operator_Eyelid_Low_Ctrl_L,
Operator_Nose_Bridge_2_Ctrl,
Operator_Nose_Frown_Ctrl_R,
Operator_Nose_Frown_Ctrl_L,
Operator_Cheek_Ctrl_R,
Operator_Cheek_Ctrl_3_R,
Operator_Cheek_Ctrl_2_R,
Operator_Cheek_Ctrl_1_R,
Operator_Cheek2_Ctrl_3_R,
Operator_Cheek2_Ctrl_2_R,
Operator_Cheek2_Ctrl_1_R,
Operator_Lip_Up3_Ctrl_3_R,
Operator_Lip_Up3_Ctrl_2_R,
Operator_Lip_Up3_Ctrl_1_R,
Operator_Lip_Up2_Ctrl_3_R,
Operator_Lip_Up2_Ctrl_2_R,
Operator_Lip_Up2_Ctrl_1_R,
Operator_Cheek_Ctrl_L,
Operator_Cheek_Ctrl_3_L,
Operator_Cheek_Ctrl_2_L,
Operator_Cheek_Ctrl_1_L,
Operator_Cheek2_Ctrl_3_L,
Operator_Cheek2_Ctrl_2_L,
Operator_Cheek2_Ctrl_1_L,
Operator_Lip_Up3_Ctrl_3_L,
Operator_Lip_Up3_Ctrl_2_L,
Operator_Lip_Up3_Ctrl_1_L,
Operator_Lip_Up2_Ctrl_3_L,
Operator_Lip_Up2_Ctrl_2_L,
Operator_Lip_Up2_Ctrl_1_L,
Operator_Nostril_Ctrl_R,
Operator_Nose_Ctrl,
Operator_Nostril_Ctrl_L,
Operator_Lip_Up3_Ctrl_Mid,
Operator_Lip_Up3_Ctrl,
Operator_Lip_Up2_Ctrl_Mid,
Operator_lip_up2_ctrl,
Operator_Cheek_Ctrl_4_R,
Operator_Cheek2_Ctrl_4_R,
Operator_Lip_Up3_Ctrl_4_R,
Operator_Lip_Up2_Ctrl_4_R,
Operator_Cheek_Ctrl_4_L,
Operator_Cheek2_Ctrl_4_L,
Operator_Lip_Up3_Ctrl_4_L,
Operator_Lip_Up2_Ctrl_4_L,
Operator_Mouth_Mstr_Up,
Operator_Mouth_Corner_R,
Operator_Mouth_Corner_L,
Operator_Lip_Up_Ctrl,
Operator_Lip_Up_Ctrl_Collision,
Operator_Lip_Up_Ctrl_3_R,
Operator_Lip_Up_Ctrl_2_R,
Operator_Lip_Up_Ctrl_1_R,
Operator_Lip_Up_Ctrl_Mid,
Operator_Lip_Up_Ctrl_3_L,
Operator_Lip_Up_Ctrl_2_L,
Operator_Lip_Up_Ctrl_1_L,
Operator_Mouth_Up_Ctrl,
Operator_Lip_Up_Ctrl_4_R,
Operator_Lip_Up_Ctrl_4_L,
Operator_Mouth_Ctrl,
Operator_Mouth_Low_Ctrl,
Operator_Lip_Low_Ctrl_3_R,
Operator_Lip_Low_Ctrl_2_R,
Operator_Lip_Low_Ctrl_1_R,
Operator_Lip_Low_Ctrl_Mid,
Operator_Lip_Low_Ctrl_1_L,
Operator_Lip_Low_Ctrl_2_L,
Operator_Lip_Low_Ctrl_3_L,
Operator_Lip_Low_Ctrl_Collision,
Operator_Lip_Low_Ctrl,
Operator_Mouth_Mstr_Low,
Operator_Mouth_Mstr_Ctrl,
Operator_Mouth_Frown_Ctrl_R,
Operator_Lip_Low2_Ctrl_3_R,
Operator_Lip_Low2_Ctrl_2_R,
Operator_Lip_Low2_Ctrl_1_R,
Operator_Lip_Low3_Ctrl_3_R,
Operator_Lip_Low3_Ctrl_2_R,
Operator_Lip_Low3_Ctrl_1_R,
Operator_Cheek_Ctrl_5_R,
Operator_Chin_Ctrl_3_R,
Operator_Chin_Ctrl_2_R,
Operator_Chin_Ctrl_1_R,
Operator_Mouth_Frown_Ctrl_L,
Operator_Lip_Low2_Ctrl_3_L,
Operator_Lip_Low2_Ctrl_2_L,
Operator_Lip_Low2_Ctrl_1_L,
Operator_Lip_Low3_Ctrl_3_L,
Operator_Lip_Low3_Ctrl_2_L,
Operator_Lip_Low3_Ctrl_1_L,
Operator_Cheek_Ctrl_5_L,
Operator_Chin_Ctrl_3_L,
Operator_Chin_Ctrl_2_L,
Operator_Chin_Ctrl_1_L,
Operator_Lip_Low2_Ctrl_Mid,
Operator_Lip_Low2_Ctrl,
Operator_Lip_Low3_Ctrl_Mid,
Operator_Lip_Low3_Ctrl,
Operator_Chin_Ctrl_Mid,
Operator_Chin_Ctrl,
Operator_Maxi,
Operator_Head_Mid_Stretch,
Operator_Head_Low_Stretch,
Operator_Teeth_Up_Ctrl_R,
Operator_Teeth_Up_Ctrl_L,
Operator_Teeth_Up_Ctrl_Mid_R,
Operator_Teeth_Up_Ctrl_Mid_L,
Operator_Teeth_Up_Ctrl_Mid,
Operator_Teeth_Up,
Operator_Teeth_Low_Ctrl_R,
Operator_Teeth_Low_Ctrl_L,
Operator_Teeth_Low_Ctrl_Mid_R,
Operator_Teeth_Low_Ctrl_Mid_L,
Operator_Teeth_Low_Ctrl_Mid,
Operator_Teeth_Low,
Operator_Uvula_1,
Operator_Uvula_2,
Operator_Tongue_1_FK,
Operator_Tongue_2_FK,
Operator_Tongue_1_IK,
Operator_Tongue_2_IK,
Operator_Tongue_3_IK,
Operator_Tongue_Mstr
]
blenrig_rigs_classes = [
Operator_BlenRig5_Add_Biped
]
addon_dependencies = ["space_view3d_copy_attributes"]
def register():
# load dependency add-ons
import addon_utils
for addon_id in addon_dependencies:
default_state, loaded_state = addon_utils.check(addon_id)
if not loaded_state:
addon_utils.enable(addon_id, default_set=False, persistent=True)
# load BlenRig internal classes
for c in armature_classes:
bpy.utils.register_class(c)
for c in alignment_classes:
bpy.utils.register_class(c)
for c in schemes_classes:
bpy.utils.register_class(c)
for c in rig_updater_classes:
bpy.utils.register_class(c)
for c in snapping_classes:
bpy.utils.register_class(c)
for c in body_picker_biped_classes:
bpy.utils.register_class(c)
for c in body_picker_quadruped_classes:
bpy.utils.register_class(c)
for c in face_picker_classes:
bpy.utils.register_class(c)
for c in blenrig_rigs_classes:
bpy.utils.register_class(c)
# BlenRig Props
bpy.types.WindowManager.blenrig_5_props = bpy.props.PointerProperty(type = Blenrig_5_Props)
# BlenRig Object Add Panel
bpy.types.VIEW3D_MT_armature_add.append(blenrig5_add_menu_func)
def unregister():
# BlenRig Props
del bpy.types.WindowManager.blenrig_5_props
# BlenRig Object Add Panel
bpy.types.VIEW3D_MT_armature_add.remove(blenrig5_add_menu_func)
# unload BlenRig internal classes
for c in armature_classes:
bpy.utils.unregister_class(c)
for c in alignment_classes:
bpy.utils.unregister_class(c)
for c in schemes_classes:
bpy.utils.unregister_class(c)
for c in rig_updater_classes:
bpy.utils.unregister_class(c)
for c in snapping_classes:
bpy.utils.unregister_class(c)
for c in body_picker_biped_classes:
bpy.utils.unregister_class(c)
for c in body_picker_quadruped_classes:
bpy.utils.unregister_class(c)
for c in face_picker_classes:
bpy.utils.unregister_class(c)
for c in blenrig_rigs_classes:
bpy.utils.unregister_class(c)
# unload add-on dependencies
import addon_utils
for addon_id in addon_dependencies:
addon_utils.disable(addon_id, default_set=False)
if __name__ == "__main__":
register()