[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33982] trunk/blender/release/scripts/op/ io_anim_bvh/export_bvh.py: bvh export now works correctly with matrix multiplications and rad -> deg.

Campbell Barton ideasman42 at gmail.com
Sat Jan 1 09:57:10 CET 2011


Revision: 33982
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33982
Author:   campbellbarton
Date:     2011-01-01 09:57:09 +0100 (Sat, 01 Jan 2011)

Log Message:
-----------
bvh export now works correctly with matrix multiplications and rad -> deg.

Modified Paths:
--------------
    trunk/blender/release/scripts/op/io_anim_bvh/export_bvh.py

Modified: trunk/blender/release/scripts/op/io_anim_bvh/export_bvh.py
===================================================================
--- trunk/blender/release/scripts/op/io_anim_bvh/export_bvh.py	2011-01-01 08:44:17 UTC (rev 33981)
+++ trunk/blender/release/scripts/op/io_anim_bvh/export_bvh.py	2011-01-01 08:57:09 UTC (rev 33982)
@@ -23,8 +23,8 @@
 
 import bpy
 from mathutils import Matrix, Vector
+from math import degrees
 
-
 def bvh_export(filepath, obj, pref_startframe, pref_endframe, pref_scale=1.0):
 
     # Window.EditMode(0)
@@ -197,26 +197,36 @@
     triple = "%.6f %.6f %.6f "
     for frame in range(pref_startframe, pref_endframe + 1):
         scene.frame_set(frame)
+        obj.update(scene, 1,1,1)
+        scene.update()
         for dbone in bones_decorated:
             dbone.update_posedata()
         for dbone in bones_decorated:
             if  dbone.parent:
                 trans = Matrix.Translation(dbone.rest_bone.head_local)
                 itrans = Matrix.Translation(-dbone.rest_bone.head_local)
-                mat2 = dbone.rest_arm_imat * dbone.pose_mat * dbone.parent.pose_imat * dbone.parent.rest_arm_mat
-                mat2 = trans * mat2 * itrans
+                
+                # mat2 = dbone.rest_arm_imat * dbone.pose_mat * dbone.parent.pose_imat * dbone.parent.rest_arm_mat
+                # mat2 = trans * mat2 * itrans
+                mat2 = dbone.parent.rest_arm_mat * dbone.parent.pose_imat * dbone.pose_mat * dbone.rest_arm_imat
+                mat2 = itrans * mat2 * trans
+                
                 myloc = mat2.translation_part() + (dbone.rest_bone.head_local - dbone.parent.rest_bone.head_local)
                 rot = mat2.copy().transpose().to_euler()
             else:
                 trans = Matrix.Translation(dbone.rest_bone.head_local)
                 itrans = Matrix.Translation(-dbone.rest_bone.head_local)
-                mat2 = dbone.rest_arm_imat * dbone.pose_mat
-                mat2 = trans * mat2 * itrans
+
+                # mat2 = dbone.rest_arm_imat * dbone.pose_mat
+                # mat2 = trans * mat2 * itrans
+                mat2 = dbone.pose_mat * dbone.rest_arm_imat
+                mat2 = itrans * mat2 * trans
+                
                 myloc = mat2.translation_part() + dbone.rest_bone.head_local
                 rot = mat2.copy().transpose().to_euler()
 
             file.write(triple % (myloc[0] * pref_scale, myloc[1] * pref_scale, myloc[2] * pref_scale))
-            file.write(triple % (-rot[0], -rot[1], -rot[2]))
+            file.write(triple % (-degrees(rot[0]), -degrees(rot[1]), -degrees(rot[2])))
 
         file.write("\n")
 





More information about the Bf-blender-cvs mailing list