diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-01-10 22:20:48 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-01-10 22:20:48 +0300 |
commit | 20df075e38efe9f1cbf538b3e5b5791aac01a483 (patch) | |
tree | c43c5a74d412f657fde53d33a04d8a5c3e480ec0 /release/scripts/modules/rigify/track_dual.py | |
parent | 8fedb7d65f8076ae713529fe93dcd447ec2746a0 (diff) |
new rig types from Cessen
Diffstat (limited to 'release/scripts/modules/rigify/track_dual.py')
-rw-r--r-- | release/scripts/modules/rigify/track_dual.py | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/release/scripts/modules/rigify/track_dual.py b/release/scripts/modules/rigify/track_dual.py new file mode 100644 index 00000000000..3a1197b95bf --- /dev/null +++ b/release/scripts/modules/rigify/track_dual.py @@ -0,0 +1,113 @@ +# ##### 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> + +import bpy +from rigify import get_layer_dict +from rigify_utils import bone_class_instance, copy_bone_simple + +METARIG_NAMES = tuple() +RIG_TYPE = "track_dual" + +# TODO +#def metarig_template(): +# # generated by rigify.write_meta_rig +# bpy.ops.object.mode_set(mode='EDIT') +# obj = bpy.context.active_object +# arm = obj.data +# bone = arm.edit_bones.new('Bone') +# bone.head[:] = 0.0000, 0.0000, 0.0000 +# bone.tail[:] = 0.0000, 0.0000, 1.0000 +# bone.roll = 0.0000 +# bone.connected = False +# +# bpy.ops.object.mode_set(mode='OBJECT') +# pbone = obj.pose.bones['Bone'] +# pbone['type'] = 'copy' + +bool_map = {0:False, 1:True, + 0.0:False, 1.0:True, + "false":False, "true":True, + "False":False, "True":True, + "no":False, "yes":True, + "No":False, "Yes":True} + +def metarig_definition(obj, orig_bone_name): + return (orig_bone_name,) + + + + +def main(obj, bone_definition, base_names, options): + """ A dual-bone track setup. + Deformation only (no controls). + """ + # Verify required parameter + if "to" not in options: + raise RigifyError("'%s' rig type requires a 'to' parameter (bone: %s)" % (RIG_TYPE, base_names[0])) + if type(options["to"]) is not str: + raise RigifyError("'%s' rig type 'to' parameter must be a string (bone: %s)" % (RIG_TYPE, base_names[0])) + if ("ORG-" + options["to"]) not in obj.data.bones: + raise RigifyError("'%s' rig type 'to' parameter must name a bone in the metarig (bone: %s)" % (RIG_TYPE, base_names[0])) + + eb = obj.data.edit_bones + bb = obj.data.bones + pb = obj.pose.bones + + bpy.ops.object.mode_set(mode='EDIT') + arm = obj.data + + mbone1 = bone_definition[0] + mbone2 = "ORG-" + options["to"] + + bone_e = copy_bone_simple(obj.data, mbone1, "DEF-%s.01" % base_names[bone_definition[0]]) + bone_e.connected = False + bone_e.parent = eb[mbone1] + bone_e.tail = (eb[mbone1].head + eb[mbone2].head) / 2 + bone1 = bone_e.name + + bone_e = copy_bone_simple(obj.data, mbone2, "DEF-%s.02" % base_names[bone_definition[0]]) + bone_e.connected = False + bone_e.parent = eb[mbone1] + bone_e.tail = (eb[mbone1].head + eb[mbone2].head) / 2 + bone2 = bone_e.name + + + + bpy.ops.object.mode_set(mode='OBJECT') + + # Constraints + # Bone 1 + con = pb[bone1].constraints.new('DAMPED_TRACK') + con.target = obj + con.subtarget = mbone2 + + + # Bone 2 + con = pb[bone2].constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = mbone2 + + con = pb[bone2].constraints.new('DAMPED_TRACK') + con.target = obj + con.subtarget = mbone1 + + + return tuple() + |