[Bf-blender-cvs] [10e3f23ba36] soc-2020-io-performance: Edit FaceElem list outside polygon creating code.

Ankit Meel noreply at git.blender.org
Fri Aug 21 19:21:17 CEST 2020


Commit: 10e3f23ba36082a1ae224fc9aaf3d5361692368b
Author: Ankit Meel
Date:   Fri Aug 21 21:06:40 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rB10e3f23ba36082a1ae224fc9aaf3d5361692368b

Edit FaceElem list outside polygon creating code.

`new_faces` was a lie after it was extended. Better is all_faces.

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

M	source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.cc
M	source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.hh

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

diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.cc
index ef3d28fcdd1..3ce965ac493 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.cc
@@ -75,6 +75,7 @@ MeshFromGeometry::MeshFromGeometry(Main *bmain,
   blender_object_->data = BKE_object_obdata_add_from_type(bmain, OB_MESH, ob_name.c_str());
 
   create_vertices();
+  new_faces.extend(mesh_geometry_.face_elements());
   create_polys_loops(new_faces);
   create_edges();
   create_uv_verts();
@@ -204,7 +205,7 @@ void MeshFromGeometry::create_vertices()
   }
 }
 
-void MeshFromGeometry::create_polys_loops(Vector<FaceElement> new_faces)
+void MeshFromGeometry::create_polys_loops(Span<FaceElement> all_faces)
 {
   /* May not be used conditionally. */
   blender_mesh_->dvert = nullptr;
@@ -223,10 +224,9 @@ void MeshFromGeometry::create_polys_loops(Vector<FaceElement> new_faces)
   VectorSet<StringRef> group_names;
   const int64_t tot_face_elems{blender_mesh_->totpoly};
   int tot_loop_idx = 0;
-  new_faces.extend(mesh_geometry_.face_elements());
 
   for (int poly_idx = 0; poly_idx < tot_face_elems; ++poly_idx) {
-    const FaceElement &curr_face = new_faces[poly_idx];
+    const FaceElement &curr_face = all_faces[poly_idx];
     if (curr_face.face_corners.size() < 3) {
       /* Don't add single vertex face, or edges. */
       std::cerr << "Face with less than 3 vertices found, skipping." << std::endl;
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.hh b/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.hh
index 90965976031..37437ba4b72 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.hh
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_im_mesh.hh
@@ -74,7 +74,7 @@ class MeshFromGeometry : NonMovable, NonCopyable {
   std::pair<int64_t, int64_t> tessellate_polygons(Vector<FaceElement> &new_faces,
                                                   Set<std::pair<int, int>> &fgon_edges);
   void create_vertices();
-  void create_polys_loops(Vector<FaceElement> new_faces);
+  void create_polys_loops(Span<FaceElement> all_faces);
   void create_edges();
   void create_uv_verts();
   void create_materials(Main *bmain, const Map<std::string, MTLMaterial> &materials);



More information about the Bf-blender-cvs mailing list