[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38942] branches/soc-2011-pepper/release/ scripts/modules/mocap_constraints.py: Other bone functionality coded for point post retarget fix.

Benjy Cook benjycook at hotmail.com
Tue Aug 2 19:08:49 CEST 2011


Revision: 38942
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38942
Author:   benjycook
Date:     2011-08-02 17:08:49 +0000 (Tue, 02 Aug 2011)
Log Message:
-----------
Other bone functionality coded for point post retarget fix. You can now set the point to be offset from a second bone, i.e. follow other bone's path

Modified Paths:
--------------
    branches/soc-2011-pepper/release/scripts/modules/mocap_constraints.py

Modified: branches/soc-2011-pepper/release/scripts/modules/mocap_constraints.py
===================================================================
--- branches/soc-2011-pepper/release/scripts/modules/mocap_constraints.py	2011-08-02 17:06:06 UTC (rev 38941)
+++ branches/soc-2011-pepper/release/scripts/modules/mocap_constraints.py	2011-08-02 17:08:49 UTC (rev 38942)
@@ -189,11 +189,17 @@
 
     #frame changing section
     setConstraintFraming(m_constraint, context)
-
+    s, e = m_constraint.s_frame, m_constraint.e_frame
+    s_in, s_out = m_constraint.smooth_in, m_constraint.smooth_out
+    s -= s_in
+    e += s_out
     #Set the blender constraint parameters
     if m_constraint.type == "point":
-        constraint_settings = False
-        real_constraint.owner_space = m_constraint.targetSpace
+        constraint_settings = False # are fix settings keyframed?
+        if not m_constraint.targetSpace == "constrained_boneB":
+            real_constraint.owner_space = m_constraint.targetSpace
+        else:
+            real_constraint.owner_space = "LOCAL"
         if obj.data.animation_data:
             if obj.data.animation_data.action:
                 path = m_constraint.path_from_id("targetPoint")
@@ -207,6 +213,27 @@
                         copyFCurve(curve, m_fcurves[1])
                     for curve in zCurves:
                         copyFCurve(curve, m_fcurves[2])
+        if m_constraint.targetSpace == "constrained_boneB" and m_constraint.constrained_boneB:
+            c_frame = context.scene.frame_current
+            bakedPos = {}
+            src_bone = bones[m_constraint.constrained_boneB]
+            if not constraint_settings:
+                xCurves, yCurves, zCurves = createConstraintFCurves(cons_obj, obj, real_constraint)
+            print("please wait a moment, calculating fix")
+            for t in range(s, e):
+                context.scene.frame_set(t)
+                src_bone_pos = src_bone.matrix.to_translation()
+                bakedPos[t] = src_bone_pos + m_constraint.targetPoint # final position for constrained bone in object space
+            context.scene.frame_set(c_frame)
+            for frame in bakedPos.keys():
+                pos = bakedPos[frame]
+                for xCurve in xCurves:
+                    xCurve.keyframe_points.insert(frame=frame, value=pos.x)
+                for yCurve in yCurves:
+                    yCurve.keyframe_points.insert(frame=frame, value=pos.y)
+                for zCurve in zCurves:
+                    zCurve.keyframe_points.insert(frame=frame, value=pos.z)
+                
         if not constraint_settings:
             x, y, z = m_constraint.targetPoint
             real_constraint.max_x = x
@@ -260,6 +287,7 @@
         bakedPos = {}
         floor = bpy.data.objects[m_constraint.targetMesh]
         c_frame = context.scene.frame_current
+        print("please wait a moment, calculating fix")
         for t in range(s, e):
             context.scene.frame_set(t)
             axis = Vector((0, 0, 100)) * obj.matrix_world.to_3x3()




More information about the Bf-blender-cvs mailing list