diff options
author | Benjy Cook <benjycook@hotmail.com> | 2011-07-05 14:56:34 +0400 |
---|---|---|
committer | Benjy Cook <benjycook@hotmail.com> | 2011-07-05 14:56:34 +0400 |
commit | 04c03db6af7fbcd3a574021d759917778deb7dc9 (patch) | |
tree | c9ad586a2a816eccccb38768828ec91e1421e302 /release/scripts | |
parent | 90e8b83b45893619e4a666913afe6ea871a7d9d4 (diff) |
Added One-Sided distance constraint. Also fixed some bugs and syntax in constraint and retarget scripts
Diffstat (limited to 'release/scripts')
-rw-r--r-- | release/scripts/modules/mocap_constraints.py | 19 | ||||
-rw-r--r-- | release/scripts/modules/retarget.py | 6 |
2 files changed, 17 insertions, 8 deletions
diff --git a/release/scripts/modules/mocap_constraints.py b/release/scripts/modules/mocap_constraints.py index e12d510a6f9..4a7c22eb771 100644 --- a/release/scripts/modules/mocap_constraints.py +++ b/release/scripts/modules/mocap_constraints.py @@ -23,6 +23,7 @@ from mathutils import * ### Utility Functions + def hasIKConstraint(pose_bone): #utility function / predicate, returns True if given bone has IK constraint return ("IK" in [constraint.type for constraint in pose_bone.constraints]) @@ -40,6 +41,7 @@ def getConsObj(bone): cons_obj = bone return cons_obj + def consObjToBone(cons_obj): if cons_obj.name[-3:] == "Org": return cons_obj.name[:-3] @@ -74,6 +76,7 @@ def removeConstraint(m_constraint, cons_obj): def updateConstraint(self, context): setConstraint(self) + def updateConstraintBoneType(m_constraint, context): #If the constraint exists, we need to remove it #from the old bone @@ -106,7 +109,7 @@ def setConstraint(m_constraint): fcurves = obj.animation_data.action.fcurves else: fcurves = cons_obj.animation_data.action.fcurves - + influence_RNA = real_constraint.path_from_id("influence") fcurve = [fcurve for fcurve in fcurves if fcurve.data_path == influence_RNA] #clear the fcurve and set the frames. @@ -121,7 +124,7 @@ def setConstraint(m_constraint): real_constraint.keyframe_insert(data_path="influence", frame=e) real_constraint.influence = 0 real_constraint.keyframe_insert(data_path="influence", frame=s - s_in) - real_constraint.keyframe_insert(data_path="influence", frame=e + s_out) + real_constraint.keyframe_insert(data_path="influence", frame=e + s_out) #Set the blender constraint parameters if m_constraint.type == "point": real_constraint.owner_space = m_constraint.targetSpace @@ -140,7 +143,7 @@ def setConstraint(m_constraint): real_constraint.use_min_z = True if m_constraint.type == "freeze": - real_constraint.owner_space = m_constraint.targetSpace + real_constraint.owner_space = m_constraint.targetSpace bpy.context.scene.frame_set(s) if isinstance(cons_obj, bpy.types.PoseBone): x, y, z = cons_obj.center + (cons_obj.vector / 2) @@ -159,6 +162,12 @@ def setConstraint(m_constraint): real_constraint.use_min_x = True real_constraint.use_min_y = True real_constraint.use_min_z = True - + + if m_constraint.type == "distance" and m_constraint.constrained_boneB: + real_constraint.owner_space = "WORLD" + real_constraint.target = getConsObj(bones[m_constraint.constrained_boneB]) + real_constraint.limit_mode = "LIMITDIST_ONSURFACE" + real_constraint.distance = m_constraint.targetDist + # active check - real_constraint.mute = not m_constraint.active
\ No newline at end of file + real_constraint.mute = not m_constraint.active diff --git a/release/scripts/modules/retarget.py b/release/scripts/modules/retarget.py index 9a3ed4b70cb..b875b15e6e5 100644 --- a/release/scripts/modules/retarget.py +++ b/release/scripts/modules/retarget.py @@ -200,7 +200,7 @@ def retargetEnduser(inter_obj, enduser_obj, root, s_frame, e_frame, scene): for t in range(s_frame, e_frame): scene.frame_set(t) end_bone = end_bones[root] - end_bone.location = Vector((0,0,0)) + end_bone.location = Vector((0, 0, 0)) end_bone.keyframe_insert("location") bakeTransform(end_bone) @@ -369,7 +369,7 @@ def totalRetarget(): turnOffIK(enduser_obj) inter_obj, inter_arm = createIntermediate(performer_obj, enduser_obj, bonemap, bonemapr, root, s_frame, e_frame, scene) retargetEnduser(inter_obj, enduser_obj, root, s_frame, e_frame, scene) - stride_bone = copyTranslation(performer_obj, enduser_obj, ["RightFoot", "LeftFoot"], bonemap, bonemapr, root, s_frame, e_frame, scene,enduser_obj_mat) + stride_bone = copyTranslation(performer_obj, enduser_obj, ["RightFoot", "LeftFoot"], bonemap, bonemapr, root, s_frame, e_frame, scene, enduser_obj_mat) IKRetarget(bonemap, bonemapr, performer_obj, enduser_obj, s_frame, e_frame, scene) restoreObjMat(performer_obj, enduser_obj, perf_obj_mat, enduser_obj_mat, stride_bone) bpy.ops.object.mode_set(mode='OBJECT') @@ -377,4 +377,4 @@ def totalRetarget(): bpy.ops.object.delete() if __name__ == "__main__": - totalRetarget()
\ No newline at end of file + totalRetarget() |