[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2056] trunk/py/scripts/addons/rigify: Rigify: constraints are now copied over from metarig.
Nathan Vegdahl
cessen at cessen.com
Wed Jun 22 04:06:20 CEST 2011
Revision: 2056
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2056
Author: cessen
Date: 2011-06-22 02:06:16 +0000 (Wed, 22 Jun 2011)
Log Message:
-----------
Rigify: constraints are now copied over from metarig.
This allows advanced users to do certain limited custom rigging work
in the metarig, and have it transfer to the generated rig.
Custom properties are also copied when using the copy_bone function
in utils.
TODO: transfer drivers from the metarig as well.
Modified Paths:
--------------
trunk/py/scripts/addons/rigify/generate.py
trunk/py/scripts/addons/rigify/utils.py
Modified: trunk/py/scripts/addons/rigify/generate.py
===================================================================
--- trunk/py/scripts/addons/rigify/generate.py 2011-06-21 17:18:40 UTC (rev 2055)
+++ trunk/py/scripts/addons/rigify/generate.py 2011-06-22 02:06:16 UTC (rev 2056)
@@ -130,6 +130,15 @@
obj.select = True
scene.objects.active = obj
+ # Copy over bone properties
+ for bone in metarig.data.bones:
+ bone_gen = obj.data.bones[bone.name]
+
+ # B-bone stuff
+ bone_gen.bbone_segments = bone.bbone_segments
+ bone_gen.bbone_in = bone.bbone_in
+ bone_gen.bbone_out = bone.bbone_out
+
# Copy over the pose_bone properties
for bone in metarig.pose.bones:
bone_gen = obj.pose.bones[bone.name]
@@ -146,15 +155,29 @@
for prop in bone.keys():
bone_gen[prop] = bone[prop]
- # Copy over bone properties
- for bone in metarig.data.bones:
- bone_gen = obj.data.bones[bone.name]
+ # Constraints
+ for con1 in bone.constraints:
+ con2 = bone_gen.constraints.new(type=con1.type)
- # B-bone stuff
- bone_gen.bbone_segments = bone.bbone_segments
- bone_gen.bbone_in = bone.bbone_in
- bone_gen.bbone_out = bone.bbone_out
+ # Copy attributes
+ keys = dir(con1)
+ for key in keys:
+ if not key.startswith("_") \
+ and not key.startswith("error_") \
+ and key != "is_valid" \
+ and key != "rna_type" \
+ and key != "type" \
+ and key != "bl_rna":
+ try:
+ setattr(con2, key, getattr(con1, key))
+ except AttributeError:
+ print("Could not write to constraint attribute '%s'" % key)
+ # Set metarig target to rig target
+ if "target" in keys:
+ if getattr(con2, "target") == metarig:
+ setattr(con2, "target", obj)
+
t.tick("Duplicate rig: ")
#----------------------------------
# Make a list of the original bones so we can keep track of them.
Modified: trunk/py/scripts/addons/rigify/utils.py
===================================================================
--- trunk/py/scripts/addons/rigify/utils.py 2011-06-21 17:18:40 UTC (rev 2055)
+++ trunk/py/scripts/addons/rigify/utils.py 2011-06-22 02:06:16 UTC (rev 2056)
@@ -185,6 +185,17 @@
pose_bone_2.lock_rotation_w = pose_bone_1.lock_rotation_w
pose_bone_2.lock_rotations_4d = pose_bone_1.lock_rotations_4d
+ # Copy custom properties
+ for key in pose_bone_1.keys():
+ if key != "_RNA_UI" \
+ and key != "rigify_parameters" \
+ and key != "rigify_type":
+ prop1 = rna_idprop_ui_prop_get(pose_bone_1, key, create=False)
+ prop2 = rna_idprop_ui_prop_get(pose_bone_2, key, create=True)
+ pose_bone_2[key] = pose_bone_1[key]
+ for key in prop1.keys():
+ prop2[key] = prop1[key]
+
bpy.ops.object.mode_set(mode='EDIT')
return bone_name_2
More information about the Bf-extensions-cvs
mailing list