[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