[Bf-extensions-cvs] [3fc5b82] master: Fix T43954: New FBX Importer resets UVs of imported model.

Bastien Montagne noreply at git.blender.org
Tue Mar 10 19:44:36 CET 2015


Commit: 3fc5b82c6bdba2f9c954fbf497621b9bb794a1bc
Author: Bastien Montagne
Date:   Tue Mar 10 19:42:22 2015 +0100
Branches: master
https://developer.blender.org/rBA3fc5b82c6bdba2f9c954fbf497621b9bb794a1bc

Fix T43954: New FBX Importer resets UVs of imported model.

Pretty stupid, UV/VCols were passed as a copied list instead of direct blend data.

Not sure there was a reason for that, but now it was seriously conflicting with
new advanced behavior of that code (to allow complex per vert/face/loop normal import
into clnors)...

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

M	io_scene_fbx/import_fbx.py

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

diff --git a/io_scene_fbx/import_fbx.py b/io_scene_fbx/import_fbx.py
index bee5c0e..dbf64ee 100644
--- a/io_scene_fbx/import_fbx.py
+++ b/io_scene_fbx/import_fbx.py
@@ -719,38 +719,38 @@ def blen_read_geom_array_setattr(generator, blen_data, blen_attr, fbx_data, stri
     if xform is not None:
         if isinstance(blen_data, list):
             if item_size == 1:
-                def _process(blend_data, blen_attr, xform, item_size, blen_idx, fbx_idx):
+                def _process(blend_data, blen_attr, fbx_data, xform, item_size, blen_idx, fbx_idx):
                     blen_data[blen_idx] = xform(fbx_data[fbx_idx])
             else:
-                def _process(blend_data, blen_attr, xform, item_size, blen_idx, fbx_idx):
+                def _process(blend_data, blen_attr, fbx_data, xform, item_size, blen_idx, fbx_idx):
                     blen_data[blen_idx] = xform(fbx_data[fbx_idx:fbx_idx + item_size])
         else:
             if item_size == 1:
-                def _process(blend_data, blen_attr, xform, item_size, blen_idx, fbx_idx):
+                def _process(blend_data, blen_attr, fbx_data, xform, item_size, blen_idx, fbx_idx):
                     setattr(blen_data[blen_idx], blen_attr, xform(fbx_data[fbx_idx]))
             else:
-                def _process(blend_data, blen_attr, xform, item_size, blen_idx, fbx_idx):
+                def _process(blend_data, blen_attr, fbx_data, xform, item_size, blen_idx, fbx_idx):
                     setattr(blen_data[blen_idx], blen_attr, xform(fbx_data[fbx_idx:fbx_idx + item_size]))
     else:
         if isinstance(blen_data, list):
             if item_size == 1:
-                def _process(blend_data, blen_attr, xform, item_size, blen_idx, fbx_idx):
+                def _process(blend_data, blen_attr, fbx_data, xform, item_size, blen_idx, fbx_idx):
                     blen_data[blen_idx] = fbx_data[fbx_idx]
             else:
-                def _process(blend_data, blen_attr, xform, item_size, blen_idx, fbx_idx):
+                def _process(blend_data, blen_attr, fbx_data, xform, item_size, blen_idx, fbx_idx):
                     blen_data[blen_idx] = fbx_data[fbx_idx:fbx_idx + item_size]
         else:
             if item_size == 1:
-                def _process(blend_data, blen_attr, xform, item_size, blen_idx, fbx_idx):
+                def _process(blend_data, blen_attr, fbx_data, xform, item_size, blen_idx, fbx_idx):
                     setattr(blen_data[blen_idx], blen_attr, fbx_data[fbx_idx])
             else:
-                def _process(blend_data, blen_attr, xform, item_size, blen_idx, fbx_idx):
+                def _process(blend_data, blen_attr, fbx_data, xform, item_size, blen_idx, fbx_idx):
                     setattr(blen_data[blen_idx], blen_attr, fbx_data[fbx_idx:fbx_idx + item_size])
 
     for blen_idx, fbx_idx in generator:
         if check_skip(blen_idx, fbx_idx):
             continue
-        _process(blen_data, blen_attr, xform, item_size, blen_idx, fbx_idx)
+        _process(blen_data, blen_attr, fbx_data, xform, item_size, blen_idx, fbx_idx)
 
 
 # generic generators.
@@ -957,7 +957,7 @@ def blen_read_geom_layer_uv(fbx_obj, mesh):
 
             uv_tex = mesh.uv_textures.new(name=fbx_layer_name)
             uv_lay = mesh.uv_layers[-1]
-            blen_data = uv_lay.data[:]
+            blen_data = uv_lay.data
 
             # some valid files omit this data
             if fbx_layer_data is None:
@@ -986,7 +986,7 @@ def blen_read_geom_layer_color(fbx_obj, mesh):
             fbx_layer_index = elem_prop_first(elem_find_first(fbx_layer, b'ColorIndex'))
 
             color_lay = mesh.vertex_colors.new(name=fbx_layer_name)
-            blen_data = color_lay.data[:]
+            blen_data = color_lay.data
 
             # some valid files omit this data
             if fbx_layer_data is None:



More information about the Bf-extensions-cvs mailing list