[Bf-blender-cvs] [3fb230d6fe7] soc-2020-io-performance: Resize deform group only upto total groups present.

Ankit Meel noreply at git.blender.org
Wed Jul 1 18:04:37 CEST 2020


Commit: 3fb230d6fe7e477b77e3fb9e3390b24c0875b780
Author: Ankit Meel
Date:   Wed Jul 1 14:23:22 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rB3fb230d6fe7e477b77e3fb9e3390b24c0875b780

Resize deform group only upto total groups present.

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

M	source/blender/io/wavefront_obj/intern/wavefront_obj_exporter_mesh.cc

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

diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter_mesh.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter_mesh.cc
index e932f8e0806..c378bb360ad 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter_mesh.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter_mesh.cc
@@ -273,9 +273,13 @@ void OBJMesh::calc_poly_normal_indices(Vector<uint> &r_normal_indices, uint poly
 const char *OBJMesh::get_object_deform_vert(const MPoly &mpoly)
 {
   const MLoop *mloop = &_export_mesh_eval->mloop[mpoly.loopstart];
+  /* Indices index into deform groups; values are the number of vertices in one deform group. */
   Vector<int> deform_group_indices;
-  deform_group_indices.resize(mpoly.totloop, 0);
-  bool has_group = false;
+  int tot_deform_groups = BLI_listbase_count(&_export_object_eval->defbase);
+  deform_group_indices.resize(tot_deform_groups, 0);
+  /* Whether at least one vertex in the polygon belongs to any group. */
+  bool found_group = false;
+
   for (uint loop_index = 0; loop_index < mpoly.totloop; loop_index++) {
     const MDeformVert dvert = _export_mesh_eval->dvert[(mloop + loop_index)->v];
     const MDeformWeight *curr_weight = dvert.dw;
@@ -284,13 +288,14 @@ const char *OBJMesh::get_object_deform_vert(const MPoly &mpoly)
           (ListBase *)(&_export_object_eval->defbase), curr_weight->def_nr);
       if (vertex_group) {
         deform_group_indices[curr_weight->def_nr] += 1;
-        has_group = true;
+        found_group = true;
       }
     }
   }
-  if (!has_group) {
+  if (!found_group) {
     return "off";
   }
+  /* Index to the group with maximum vertices. */
   int max_idx = *std::max_element(deform_group_indices.begin(), deform_group_indices.end());
   bDeformGroup *vertex_group = (bDeformGroup *)BLI_findlink(
       (ListBase *)(&_export_object_eval->defbase), deform_group_indices[max_idx]);



More information about the Bf-blender-cvs mailing list