Revision: 25366 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25366 Author: campbellbarton Date: 2009-12-14 15:21:06 +0100 (Mon, 14 Dec 2009)
Log Message: ----------- automatic layer placement, users can set the layers if they want. predefined layer types 'main', 'extra', 'ik', 'fk' Modified Paths: -------------- trunk/blender/release/scripts/modules/rigify/__init__.py trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py trunk/blender/release/scripts/modules/rigify/copy.py trunk/blender/release/scripts/modules/rigify/finger_curl.py trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py trunk/blender/release/scripts/modules/rigify/neck_flex.py trunk/blender/release/scripts/modules/rigify/palm_curl.py trunk/blender/release/scripts/modules/rigify/spine_pivot_flex.py trunk/blender/release/test/pep8.py Modified: trunk/blender/release/scripts/modules/rigify/__init__.py =================================================================== --- trunk/blender/release/scripts/modules/rigify/__init__.py 2009-12-14 14:16:39 UTC (rev 25365) +++ trunk/blender/release/scripts/modules/rigify/__init__.py 2009-12-14 14:21:06 UTC (rev 25366) @@ -24,6 +24,7 @@ # TODO, have these in a more general module from rna_prop_ui import rna_idprop_ui_prop_get SPECIAL_TYPES = "root", +LAYER_TYPES = "main", "extra", "ik", "fk" class RigifyError(Exception): @@ -81,6 +82,22 @@ return options +def get_layer_dict(options): + ''' + Extracts layer info from a bone options dict + defaulting to the layer index if not set. + ''' + layer_default = [False] * 32 + result = {} + for i, layer_type in enumerate(LAYER_TYPES): + # no matter if its not defined + layer_index = options.get("layer_" + layer_type, i + 2) + layer = layer_default[:] + layer[layer_index-1] = True + result[layer_type] = layer + return result + + def validate_rig(context, obj): ''' Makes no changes Modified: trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py =================================================================== --- trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py 2009-12-14 14:16:39 UTC (rev 25365) +++ trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py 2009-12-14 14:21:06 UTC (rev 25366) @@ -19,7 +19,7 @@ # <pep8 compliant> import bpy -from rigify import RigifyError +from rigify import RigifyError, get_layer_dict from rigify_utils import bone_class_instance, copy_bone_simple, add_pole_target_bone, add_stretch_to, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get from Mathutils import Vector @@ -170,8 +170,17 @@ prop["soft_min"] = 0.0 prop["soft_max"] = 1.0 + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["ik"] + for attr in ik_chain.attr_names: + getattr(ik_chain, attr + "_b").layer = lay + for attr in ik.attr_names: + getattr(ik, attr + "_b").layer = lay + + bpy.ops.object.mode_set(mode='EDIT') - # don't blend the shoulder return [None] + ik_chain.names() @@ -184,7 +193,7 @@ mt.shoulder, mt.arm, mt.forearm, mt.hand = definitions mt.update() - ex = bone_class_instance(obj, ["socket", "arm_hinge", "hand_delta"]) + ex = bone_class_instance(obj, ["socket", "hand_delta"]) fk_chain = mt.copy(base_names=base_names) # shoulder is used as a hinge @@ -263,8 +272,19 @@ hinge_setup() + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["fk"] + for attr in fk_chain.attr_names: + getattr(fk_chain, attr + "_b").layer = lay + + lay = layers["extra"] + for attr in ex.attr_names: + getattr(ex, attr + "_b").layer = lay + + bpy.ops.object.mode_set(mode='EDIT') - return None, fk_chain.arm, fk_chain.forearm, fk_chain.hand Modified: trunk/blender/release/scripts/modules/rigify/copy.py =================================================================== --- trunk/blender/release/scripts/modules/rigify/copy.py 2009-12-14 14:16:39 UTC (rev 25365) +++ trunk/blender/release/scripts/modules/rigify/copy.py 2009-12-14 14:21:06 UTC (rev 25366) @@ -19,6 +19,7 @@ # <pep8 compliant> import bpy +from rigify import get_layer_dict from rigify_utils import bone_class_instance METARIG_NAMES = ("cpy",) @@ -55,12 +56,17 @@ cp.update() mt.update() + if not cp.cpy_b.connected: + con = cp.cpy_p.constraints.new('COPY_LOCATION') + con.target = obj + con.subtarget = mt.cpy + con = cp.cpy_p.constraints.new('COPY_ROTATION') con.target = obj con.subtarget = mt.cpy - con = cp.cpy_p.constraints.new('COPY_LOCATION') - con.target = obj - con.subtarget = mt.cpy + # setup layers last + layers = get_layer_dict(options) + cp.cpy_b.layer = layers["main"] return [mt.cpy] Modified: trunk/blender/release/scripts/modules/rigify/finger_curl.py =================================================================== --- trunk/blender/release/scripts/modules/rigify/finger_curl.py 2009-12-14 14:16:39 UTC (rev 25365) +++ trunk/blender/release/scripts/modules/rigify/finger_curl.py 2009-12-14 14:21:06 UTC (rev 25366) @@ -19,7 +19,7 @@ # <pep8 compliant> import bpy -from rigify import RigifyError +from rigify import RigifyError, get_layer_dict from rigify_utils import copy_bone_simple, get_side_name from rna_prop_ui import rna_idprop_ui_prop_get from functools import reduce @@ -213,5 +213,15 @@ i += 1 + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["extra"] + for child_bone_name, driver_bone_name in driver_bone_pairs: + arm.bones[driver_bone_name].layer = lay + + lay = layers["main"] + arm.bones[control_bone_name].layer = lay + # no blending the result of this return None Modified: trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py =================================================================== --- trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py 2009-12-14 14:16:39 UTC (rev 25365) +++ trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py 2009-12-14 14:21:06 UTC (rev 25366) @@ -19,7 +19,7 @@ # <pep8 compliant> import bpy -from rigify import RigifyError +from rigify import RigifyError, get_layer_dict from rigify_utils import bone_class_instance, copy_bone_simple, blend_bone_list, get_side_name, get_base_name from rna_prop_ui import rna_idprop_ui_prop_get @@ -131,8 +131,6 @@ # setup the existing bones mt_chain = bone_class_instance(obj, ["thigh", "shin", "foot", "toe"]) mt = bone_class_instance(obj, ["hips", "heel"]) - #ex = bone_class_instance(obj, [""]) - ex = bone_class_instance(obj, ["thigh_socket", "thigh_hinge", "foot_roll_1", "foot_roll_2", "foot_roll_3"]) # children of ik_foot ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target"]) @@ -215,7 +213,6 @@ bpy.ops.object.mode_set(mode='OBJECT') ik.update() - ex.update() mt_chain.update() ik_chain.update() @@ -269,6 +266,15 @@ con.minimum_x = -180.0 # XXX -deg con.maximum_x = 0.0 + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["ik"] + for attr in ik_chain.attr_names: + getattr(ik_chain, attr + "_b").layer = lay + for attr in ik.attr_names: + getattr(ik, attr + "_b").layer = lay + bpy.ops.object.mode_set(mode='EDIT') return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None @@ -348,6 +354,19 @@ mod.coefficients[0] = 1.0 mod.coefficients[1] = -1.0 + + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["fk"] + for attr in fk_chain.attr_names: + getattr(fk_chain, attr + "_b").layer = lay + + lay = layers["extra"] + for attr in ex.attr_names: + getattr(ex, attr + "_b").layer = lay + + bpy.ops.object.mode_set(mode='EDIT') # dont blend the hips or heel Modified: trunk/blender/release/scripts/modules/rigify/neck_flex.py =================================================================== --- trunk/blender/release/scripts/modules/rigify/neck_flex.py 2009-12-14 14:16:39 UTC (rev 25365) +++ trunk/blender/release/scripts/modules/rigify/neck_flex.py 2009-12-14 14:21:06 UTC (rev 25366) @@ -19,7 +19,7 @@ # <pep8 compliant> import bpy -from rigify import RigifyError +from rigify import RigifyError, get_layer_dict from rigify_utils import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get @@ -121,7 +121,7 @@ neck_chain_basename = base_names[mt_chain.neck_01_e.name].split(".")[0] neck_chain_segment_length = mt_chain.neck_01_e.length - ex = bone_class_instance(obj, ["body", "head", "head_hinge", "neck_socket", "head_ctrl"]) # hinge & extras + ex = bone_class_instance(obj, ["head", "head_hinge", "neck_socket", "head_ctrl"]) # hinge & extras # Add the head hinge at the bodys location, becomes the parent of the original head @@ -296,5 +296,15 @@ con.target = obj con.subtarget = neck_p.name + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["extra"] + for attr in ex_chain.attr_names: + getattr(ex_chain, attr + "_b").layer = lay + for attr in ex.attr_names: + getattr(ex, attr + "_b").layer = lay + + # no blending the result of this return None Modified: trunk/blender/release/scripts/modules/rigify/palm_curl.py =================================================================== --- trunk/blender/release/scripts/modules/rigify/palm_curl.py 2009-12-14 14:16:39 UTC (rev 25365) +++ trunk/blender/release/scripts/modules/rigify/palm_curl.py 2009-12-14 14:21:06 UTC (rev 25366) @@ -19,6 +19,7 @@ # <pep8 compliant> import bpy +from rigify import get_layer_dict from rigify_utils import copy_bone_simple, get_side_name from rna_prop_ui import rna_idprop_ui_prop_get @@ -232,5 +233,11 @@ if x_direction(): # flip driver.expression = "-(%s)" % driver.expression + + # last step setup layers + layers = get_layer_dict(options) + arm.bones[control_name].layer = layers["extra"] + + # no blending the result of this return None Modified: trunk/blender/release/scripts/modules/rigify/spine_pivot_flex.py =================================================================== --- trunk/blender/release/scripts/modules/rigify/spine_pivot_flex.py 2009-12-14 14:16:39 UTC (rev 25365) +++ trunk/blender/release/scripts/modules/rigify/spine_pivot_flex.py 2009-12-14 14:21:06 UTC (rev 25366) @@ -19,6 +19,7 @@ # <pep8 compliant> import bpy +from rigify import get_layer_dict from rigify_utils import bone_class_instance, copy_bone_simple from rna_prop_ui import rna_idprop_ui_prop_get @@ -495,5 +496,20 @@ mod.coefficients[0] = - (i - 1) mod.coefficients[1] = spine_chain_len + + # last step setup layers + layers = get_layer_dict(options) + lay = layers["extra"] + for attr in ex.attr_names: + getattr(ex, attr + "_b").layer = lay + for attr in ex_chain.attr_names: + getattr(ex_chain, attr + "_b").layer = lay + + lay = layers["main"] @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs