From 3fc5b82c6bdba2f9c954fbf497621b9bb794a1bc Mon Sep 17 00:00:00 2001
From: Bastien Montagne <montagne29@wanadoo.fr>
Date: Tue, 10 Mar 2015 19:42:22 +0100
Subject: [PATCH] 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)...
---
 io_scene_fbx/import_fbx.py | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/io_scene_fbx/import_fbx.py b/io_scene_fbx/import_fbx.py
index bee5c0e34..dbf64ee69 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:
-- 
GitLab