[Bf-blender-cvs] [3f30c1c042b] blender-v3.3-release: Fix T101487: New OBJ importer handles UVs incorrectly when some faces of an object don't have UVs

Aras Pranckevicius noreply at git.blender.org
Mon Oct 3 13:21:18 CEST 2022


Commit: 3f30c1c042b3852882139d7cabe0c223da1e0e14
Author: Aras Pranckevicius
Date:   Mon Oct 3 11:07:35 2022 +0300
Branches: blender-v3.3-release
https://developer.blender.org/rB3f30c1c042b3852882139d7cabe0c223da1e0e14

Fix T101487: New OBJ importer handles UVs incorrectly when some faces of an object don't have UVs

The UV data filling logic was incorrectly just skipping over loop
entries that don't have a UV coordinate, instead of assigning
the default zero UV for them. This was a problem only for meshes
where some faces did have UVs, but some other faces did not (T101487).

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

M	source/blender/io/wavefront_obj/importer/obj_import_mesh.cc

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

diff --git a/source/blender/io/wavefront_obj/importer/obj_import_mesh.cc b/source/blender/io/wavefront_obj/importer/obj_import_mesh.cc
index 6b19d6573af..ab6c81f798b 100644
--- a/source/blender/io/wavefront_obj/importer/obj_import_mesh.cc
+++ b/source/blender/io/wavefront_obj/importer/obj_import_mesh.cc
@@ -268,12 +268,13 @@ void MeshFromGeometry::create_uv_verts(Mesh *mesh)
   for (const PolyElem &curr_face : mesh_geometry_.face_elements_) {
     for (int idx = 0; idx < curr_face.corner_count_; ++idx) {
       const PolyCorner &curr_corner = mesh_geometry_.face_corners_[curr_face.start_index_ + idx];
-      if (curr_corner.uv_vert_index >= 0 &&
-          curr_corner.uv_vert_index < global_vertices_.uv_vertices.size()) {
-        const float2 &mluv_src = global_vertices_.uv_vertices[curr_corner.uv_vert_index];
-        copy_v2_v2(mluv_dst[tot_loop_idx].uv, mluv_src);
-        tot_loop_idx++;
+      const int uv_index = curr_corner.uv_vert_index;
+      float2 uv(0, 0);
+      if (uv_index >= 0 && uv_index < global_vertices_.uv_vertices.size()) {
+        uv = global_vertices_.uv_vertices[uv_index];
       }
+      copy_v2_v2(mluv_dst[tot_loop_idx].uv, uv);
+      tot_loop_idx++;
     }
   }
 }



More information about the Bf-blender-cvs mailing list