[Bf-extensions-cvs] [b21415f] master: FBX import: Minor optimization.

Bastien Montagne noreply at git.blender.org
Tue Jul 22 08:51:55 CEST 2014


Commit: b21415fca89f71a1a4db69c3fd1a156d644347e7
Author: Bastien Montagne
Date:   Tue Jul 22 08:50:14 2014 +0200
Branches: master
https://developer.blender.org/rBAb21415fca89f71a1a4db69c3fd1a156d644347e7

FBX import: Minor optimization.

===================================================================

M	io_scene_fbx/import_fbx.py

===================================================================

diff --git a/io_scene_fbx/import_fbx.py b/io_scene_fbx/import_fbx.py
index 18f31a0..c12739b 100644
--- a/io_scene_fbx/import_fbx.py
+++ b/io_scene_fbx/import_fbx.py
@@ -690,6 +690,14 @@ def blen_read_animations_action_item(action, item, cnodes, global_matrix, force_
         transform_data = object_tdata_cache[item]
         rot_prev = item.rotation_euler.copy()
 
+        # Pre-compute inverted local rest matrix of the bone, if relevant.
+        if isinstance(item, PoseBone):
+            # First, get local (i.e. parentspace) rest pose matrix
+            restmat = item.bone.matrix_local
+            if item.parent:
+                restmat = item.parent.bone.matrix_local.inverted() * restmat
+            restmat_inv = restmat.inverted()
+
         # We assume for now blen init point is frame 1.0, while FBX ktime init point is 0.
         for frame, values in blen_read_animations_curves_iter(fbx_curves, 1.0, 0, fps):
             for v, (fbxprop, channel, _fbx_acdata) in values:
@@ -705,12 +713,8 @@ def blen_read_animations_action_item(action, item, cnodes, global_matrix, force_
                 if (not item.parent or force_global) and global_matrix is not None:
                     mat = global_matrix * mat
             else:  # PoseBone, Urg!
-                # First, get local (i.e. parentspace) rest pose matrix
-                restmat = item.bone.matrix_local
-                if item.parent:
-                    restmat = item.parent.bone.matrix_local.inverted() * restmat
                 # And now, remove that rest pose matrix from current mat (also in parent space).
-                mat = restmat.inverted() * mat
+                mat = restmat_inv * mat
 
             # Now we have a virtual matrix of transform from AnimCurves, we can insert keyframes!
             loc, rot, sca = mat.decompose()



More information about the Bf-extensions-cvs mailing list