[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4656] trunk/py/scripts/addons/ io_scene_fbx/import_fbx.py: fix for object translation being applied incorrectly

Campbell Barton ideasman42 at gmail.com
Fri Aug 9 02:19:05 CEST 2013


Revision: 4656
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4656
Author:   campbellbarton
Date:     2013-08-09 00:19:04 +0000 (Fri, 09 Aug 2013)
Log Message:
-----------
fix for object translation being applied incorrectly

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_fbx/import_fbx.py

Modified: trunk/py/scripts/addons/io_scene_fbx/import_fbx.py
===================================================================
--- trunk/py/scripts/addons/io_scene_fbx/import_fbx.py	2013-08-08 16:55:32 UTC (rev 4655)
+++ trunk/py/scripts/addons/io_scene_fbx/import_fbx.py	2013-08-09 00:19:04 UTC (rev 4656)
@@ -113,6 +113,14 @@
     return default
 
 
+def elem_props_get_vector_3d(elem, elem_prop_id, default=None):
+    elem_prop = elem_props_find_first(elem, elem_prop_id)
+    if elem_prop is not None:
+        assert(elem_prop.props_type[4:7] == bytes((data_types.FLOAT64,)) * 3)
+        return elem_prop.props[4:7]
+    return default
+
+
 def elem_props_get_number(elem, elem_prop_id, default=None):
     elem_prop = elem_props_find_first(elem, elem_prop_id)
     if elem_prop is not None:
@@ -138,7 +146,7 @@
 # ------
 # Object
 
-def blen_read_object(fbx_obj, object_data):
+def blen_read_object(fbx_obj, object_data, global_matrix):
     elem_name, elem_class = elem_split_name_class(fbx_obj)
     elem_name_utf8 = elem_name.decode('utf-8')
 
@@ -151,14 +159,16 @@
     fbx_props = elem_find_first(fbx_obj, b'Properties70')
     assert(fbx_props is not None)
 
-    loc = elem_props_get_color_rgb(fbx_props, b'Lcl Translation', const_vector_zero_3d)
-    rot = elem_props_get_color_rgb(fbx_props, b'Lcl Rotation', const_vector_zero_3d)
-    sca = elem_props_get_color_rgb(fbx_props, b'Lcl Scaling', const_vector_one_3d)
+    loc = elem_props_get_vector_3d(fbx_props, b'Lcl Translation', const_vector_zero_3d)
+    rot = elem_props_get_vector_3d(fbx_props, b'Lcl Rotation', const_vector_zero_3d)
+    sca = elem_props_get_vector_3d(fbx_props, b'Lcl Scaling', const_vector_one_3d)
 
     obj.location = loc
     obj.rotation_euler = tuple_deg_to_rad(rot)
     obj.scale = sca
 
+    obj.matrix_basis = global_matrix * obj.matrix_basis
+
     return obj
 
 
@@ -469,11 +479,10 @@
             for fbx_lnk, fbx_lnk_item, fbx_lnk_type in connection_filter_forward(fbx_uuid, b'Model'):
 
                 # create when linking since we need object data
-                obj = blen_read_object(fbx_lnk, mesh)
+                obj = blen_read_object(fbx_lnk, mesh, global_matrix)
                 # fbx_lnk_item[1] = obj
 
                 # instance in scene
-                # obj.matrix_world = global_matrix * obj.matrix_world
                 obj_base = scene.objects.link(obj)
                 obj_base.select = True
 



More information about the Bf-extensions-cvs mailing list