diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2019-02-07 17:07:09 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-02-07 17:08:45 +0300 |
commit | 9c7fb7e2ca052ca18fe24b69c040832882c00535 (patch) | |
tree | 1046c1f5c584532dd395ec7d1b432e9dff478b99 /io_scene_obj | |
parent | 829154dd125ef84c59ebfad92031368853e18b7f (diff) |
Fix T61254: Import OBJ error:
We cannot clear a face's vnors/uvs indices in case none are defined in
the OBJ file, we need indices for all loops when defining them in
Blender's mesh...
Diffstat (limited to 'io_scene_obj')
-rw-r--r-- | io_scene_obj/__init__.py | 2 | ||||
-rw-r--r-- | io_scene_obj/import_obj.py | 13 |
2 files changed, 4 insertions, 11 deletions
diff --git a/io_scene_obj/__init__.py b/io_scene_obj/__init__.py index 1ae4a8bf..e52035e8 100644 --- a/io_scene_obj/__init__.py +++ b/io_scene_obj/__init__.py @@ -21,7 +21,7 @@ bl_info = { "name": "Wavefront OBJ format", "author": "Campbell Barton, Bastien Montagne", - "version": (3, 5, 8), + "version": (3, 5, 9), "blender": (2, 80, 0), "location": "File > Import-Export", "description": "Import-Export OBJ, Import OBJ mesh, UV's, materials and textures", diff --git a/io_scene_obj/import_obj.py b/io_scene_obj/import_obj.py index 34d97146..d31d290d 100644 --- a/io_scene_obj/import_obj.py +++ b/io_scene_obj/import_obj.py @@ -678,6 +678,9 @@ def create_mesh(new_objects, if verts_tex and me.polygons: me.uv_layers.new() loops_uv = tuple(uv for (_, _, face_vert_tex_indices, _, _, _, _) in faces for face_uvidx in face_vert_tex_indices for uv in verts_tex[face_uvidx]) + print(sum((len(face_vert_tex_indices) for (face_vert_loc_indices, _, face_vert_tex_indices, _, _, _, _) in faces))) + print(sum((len(face_vert_loc_indices) for (face_vert_loc_indices, _, face_vert_tex_indices, _, _, _, _) in faces))) + print(len(loops_uv), len(me.uv_layers[0].data)) me.uv_layers[0].data.foreach_set("uv", loops_uv) use_edges = use_edges and bool(edges) @@ -947,7 +950,6 @@ def load(context, face_vert_loc_indices = None face_vert_nor_indices = None face_vert_tex_indices = None - face_vert_nor_valid = face_vert_tex_valid = False verts_loc_len = verts_nor_len = verts_tex_len = 0 face_items_usage = set() face_invalid_blenpoly = None @@ -1043,25 +1045,16 @@ def load(context, if len(obj_vert) > 1 and obj_vert[1] and obj_vert[1] != b'0': idx = int(obj_vert[1]) face_vert_tex_indices.append((idx + verts_tex_len) if (idx < 1) else idx - 1) - face_vert_tex_valid = True else: face_vert_tex_indices.append(0) if len(obj_vert) > 2 and obj_vert[2] and obj_vert[2] != b'0': idx = int(obj_vert[2]) face_vert_nor_indices.append((idx + verts_nor_len) if (idx < 1) else idx - 1) - face_vert_nor_valid = True else: face_vert_nor_indices.append(0) if not context_multi_line: - # Clear nor/tex indices in case we had none defined for this face. - if not face_vert_nor_valid: - face_vert_nor_indices.clear() - if not face_vert_tex_valid: - face_vert_tex_indices.clear() - face_vert_nor_valid = face_vert_tex_valid = False - # Means we have finished a face, we have to do final check if ngon is suspected to be blender-invalid... if face_invalid_blenpoly: face_invalid_blenpoly.clear() |