Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjy Cook <benjycook@hotmail.com>2011-07-05 14:56:34 +0400
committerBenjy Cook <benjycook@hotmail.com>2011-07-05 14:56:34 +0400
commit04c03db6af7fbcd3a574021d759917778deb7dc9 (patch)
treec9ad586a2a816eccccb38768828ec91e1421e302 /release/scripts
parent90e8b83b45893619e4a666913afe6ea871a7d9d4 (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.py19
-rw-r--r--release/scripts/modules/retarget.py6
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()