[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4752] trunk/py/scripts/addons/ io_scene_fbx/import_fbx.py: fix [#36714] FBX Importer fails to import binary FBX out of 3DS MAX
Campbell Barton
ideasman42 at gmail.com
Fri Sep 13 02:48:12 CEST 2013
Revision: 4752
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4752
Author: campbellbarton
Date: 2013-09-13 00:48:12 +0000 (Fri, 13 Sep 2013)
Log Message:
-----------
fix [#36714] FBX Importer fails to import binary FBX out of 3DS MAX
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-09-12 23:48:10 UTC (rev 4751)
+++ trunk/py/scripts/addons/io_scene_fbx/import_fbx.py 2013-09-13 00:48:12 UTC (rev 4752)
@@ -351,18 +351,29 @@
fbx_layer_data, fbx_layer_index,
fbx_layer_mapping, fbx_layer_ref,
stride, item_size, descr,
+ xform=None,
):
if fbx_layer_mapping == b'ByEdge':
if fbx_layer_ref == b'Direct':
if stride == 1:
- for i, blen_data_item in enumerate(blen_data):
- setattr(blen_data_item, blend_attr,
- fbx_layer_data[i])
+ if xform is None:
+ for i, blen_data_item in enumerate(blen_data):
+ setattr(blen_data_item, blend_attr,
+ fbx_layer_data[i])
+ else:
+ for i, blen_data_item in enumerate(blen_data):
+ setattr(blen_data_item, blend_attr,
+ xform(fbx_layer_data[i]))
else:
- for i, blen_data_item in enumerate(blen_data):
- setattr(blen_data_item, blend_attr,
- fbx_layer_data[(i * stride): (i * stride) + item_size])
+ if xform is None:
+ for i, blen_data_item in enumerate(blen_data):
+ setattr(blen_data_item, blend_attr,
+ fbx_layer_data[(i * stride): (i * stride) + item_size])
+ else:
+ for i, blen_data_item in enumerate(blen_data):
+ setattr(blen_data_item, blend_attr,
+ xform(fbx_layer_data[(i * stride): (i * stride) + item_size]))
return True
else:
print("warning layer %r ref type unsupported: %r" % (descr, fbx_layer_ref))
@@ -377,6 +388,7 @@
fbx_layer_data, fbx_layer_index,
fbx_layer_mapping, fbx_layer_ref,
stride, item_size, descr,
+ xform=None,
):
if fbx_layer_mapping == b'ByPolygon':
@@ -393,8 +405,12 @@
elif fbx_layer_ref == b'Direct':
# looks like direct may have different meanings!
assert(stride == 1)
- for i in fbx_layer_data:
- setattr(blen_data[i - 1], blend_attr, True)
+ if xform is None:
+ for i in range(len(fbx_layer_data)):
+ setattr(blen_data[i], blend_attr, fbx_layer_data[i])
+ else:
+ for i in range(len(fbx_layer_data)):
+ setattr(blen_data[i], blend_attr, xform(fbx_layer_data[i]))
return True
else:
print("warning layer %r ref type unsupported: %r" % (descr, fbx_layer_ref))
@@ -543,11 +559,8 @@
fbx_layer_data, None,
fbx_layer_mapping, fbx_layer_ref,
1, 1, layer_id,
+ xform=lambda s: not s,
)
- if ok_smooth:
- # ugh, need to negate
- for e in mesh.edges:
- e.use_edge_sharp = not e.use_edge_sharp
return ok_smooth
elif fbx_layer_mapping == b'ByPolygon':
blen_data = mesh.polygons
@@ -556,6 +569,7 @@
fbx_layer_data, None,
fbx_layer_mapping, fbx_layer_ref,
1, 1, layer_id,
+ xform=lambda s: (s != 0), # smoothgroup bitflags, treat as booleans for now
)
else:
print("warning layer %r mapping type unsupported: %r" % (fbx_layer.id, fbx_layer_mapping))
More information about the Bf-extensions-cvs
mailing list