[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