[Bf-blender-cvs] [d1cc8c47126] soc-2020-io-performance: Move vertex index Vector resize to OBJMesh.

Ankit Meel noreply at git.blender.org
Wed Sep 16 13:05:55 CEST 2020


Commit: d1cc8c47126473f7b952c161fc6e0fe213ebba13
Author: Ankit Meel
Date:   Wed Sep 16 15:17:59 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rBd1cc8c47126473f7b952c161fc6e0fe213ebba13

Move vertex index Vector resize to OBJMesh.

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

M	source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
M	source/blender/io/wavefront_obj/intern/obj_export_mesh.cc

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

diff --git a/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc b/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
index 1605b62db14..90e3268447e 100644
--- a/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
+++ b/source/blender/io/wavefront_obj/intern/obj_export_file_writer.cc
@@ -317,17 +317,16 @@ void OBJWriter::write_poly_elements(const OBJMesh &obj_mesh_data)
   short last_face_vertex_group = NEGATIVE_INIT;
   short last_face_mat_nr = NEGATIVE_INIT;
 
-  Vector<uint> vertex_indices;
-    const int totloop = obj_mesh_data.ith_poly_totloop(i);
-    vertex_indices.resize(totloop);
-    obj_mesh_data.calc_poly_vertex_indices(i, vertex_indices);
   func_vert_uv_normal_indices poly_element_writer = get_poly_element_writer(obj_mesh_data);
 
+  Vector<uint> face_vertex_indices;
   Vector<uint> face_normal_indices;
   /* Reset for every Object. */
   per_object_tot_normals_ = 0;
   const int tot_polygons = obj_mesh_data.tot_polygons();
   for (uint i = 0; i < tot_polygons; i++) {
+    const int totloop = obj_mesh_data.ith_poly_totloop(i);
+    obj_mesh_data.calc_poly_vertex_indices(i, face_vertex_indices);
     /* For an Object, a normal index depends on how many have been written before it.
      * This is unknown because of smooth shading. So pass "per object total normals"
      * and update it after each call. */
diff --git a/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc b/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
index 4452760911f..f30b0a7a3b5 100644
--- a/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
+++ b/source/blender/io/wavefront_obj/intern/obj_export_mesh.cc
@@ -304,6 +304,7 @@ void OBJMesh::calc_poly_vertex_indices(const uint poly_index,
   const MPoly &mpoly = export_mesh_eval_->mpoly[poly_index];
   const MLoop *mloop = &export_mesh_eval_->mloop[mpoly.loopstart];
   const int totloop = mpoly.totloop;
+  r_poly_vertex_indices.resize(totloop);
   for (uint loop_index = 0; loop_index < totloop; loop_index++) {
     r_poly_vertex_indices[loop_index] = mloop[loop_index].v;
   }



More information about the Bf-blender-cvs mailing list