[Bf-blender-cvs] [37074c26df2] soc-2020-io-performance: Comment about mvert normals memory allocation.

Ankit Meel noreply at git.blender.org
Thu Jun 11 17:46:38 CEST 2020


Commit: 37074c26df24bdfa44b3adb88cde3fdd2883cf12
Author: Ankit Meel
Date:   Thu Jun 11 00:14:50 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rB37074c26df24bdfa44b3adb88cde3fdd2883cf12

Comment about mvert normals memory allocation.

Readability: Replace integers to indicate axes with AXIS_{X,Y,Z}.

Consistency: Use uint with indices, like the vectors of the indices
themselves.

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

M	source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
M	source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc

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

diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
index 588c8d9d280..a764f369740 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
@@ -66,6 +66,7 @@ static void get_transformed_mesh_vertices(Mesh *me_eval,
 
 /**
  * Store the mesh vertex normals in data_to_export, in world coordinates.
+ * Memory for data_to_export->mvert pre-allocated in get_transformed_mesh_vertices.
  */
 static void get_transformed_vertex_normals(Mesh *me_eval,
                                            Object *ob_eval,
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc
index 6d4b3be8e32..291b14a6bd6 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc
@@ -32,15 +32,18 @@
 namespace io {
 namespace obj {
 
+#define AXIS_X 0
+#define AXIS_Y 1
+#define AXIS_Z 2
 /**
  * Calculate a face normal's axis component by averaging over its vertex normals.
  */
 MALWAYS_INLINE short face_normal_axis_component(const Polygon &poly_to_write,
-                                                int axis,
+                                                short axis,
                                                 MVert *vertex_list)
 {
   float sum = 0;
-  for (int i = 0; i < poly_to_write.total_vertices_per_poly; i++) {
+  for (uint i = 0; i < poly_to_write.total_vertices_per_poly; i++) {
     sum += vertex_list[poly_to_write.vertex_index[i] - 1].no[axis];
   }
   return short(sum / poly_to_write.total_vertices_per_poly);
@@ -63,19 +66,19 @@ void write_obj_data(const char *filepath, OBJ_data_to_export *data_to_export)
   outfile << "o " << data_to_export->ob_eval->id.name + 2 << "\n";
 
   /** Write v x y z for all vertices. */
-  for (int i = 0; i < data_to_export->tot_vertices; i++) {
+  for (uint i = 0; i < data_to_export->tot_vertices; i++) {
     MVert *vertex = &data_to_export->mvert[i];
     outfile << "v ";
     outfile << vertex->co[0] << " " << vertex->co[1] << " " << vertex->co[2] << "\n";
   }
 
   /** Write vn nx ny nz for all face normals. */
-  for (int i = 0; i < data_to_export->tot_poly; i++) {
+  for (uint i = 0; i < data_to_export->tot_poly; i++) {
     MVert *vertex_list = data_to_export->mvert;
     const Polygon &polygon = data_to_export->polygon_list[i];
-    outfile << "vn " << face_normal_axis_component(polygon, 0, vertex_list) << " "
-            << face_normal_axis_component(polygon, 1, vertex_list) << " "
-            << face_normal_axis_component(polygon, 2, vertex_list) << "\n";
+    outfile << "vn " << face_normal_axis_component(polygon, AXIS_X, vertex_list) << " "
+            << face_normal_axis_component(polygon, AXIS_Y, vertex_list) << " "
+            << face_normal_axis_component(polygon, AXIS_Z, vertex_list) << "\n";
   }
 
   /**
@@ -83,7 +86,7 @@ void write_obj_data(const char *filepath, OBJ_data_to_export *data_to_export)
    * i-th vn is always i + 1, guaranteed by face normal loop above.
    * Both loop over the same polygon list.
    */
-  for (int i = 0; i < data_to_export->tot_poly; i++) {
+  for (uint i = 0; i < data_to_export->tot_poly; i++) {
     const Polygon &polygon = data_to_export->polygon_list[i];
     outfile << "f ";
     for (int j = 0; j < polygon.total_vertices_per_poly; j++) {
@@ -108,7 +111,7 @@ void write_obj_data_fprintf(const char *filepath, OBJ_data_to_export *data_to_ex
   fprintf(outfile, "# Blender 2.90\n");
   fprintf(outfile, "o %s\n", data_to_export->ob_eval->id.name + 2);
 
-  for (int i = 0; i < data_to_export->tot_vertices; i++) {
+  for (uint i = 0; i < data_to_export->tot_vertices; i++) {
     MVert *vertex = &data_to_export->mvert[i];
     fprintf(outfile, "v ");
     fprintf(outfile, "%f ", vertex->co[0]);
@@ -116,16 +119,16 @@ void write_obj_data_fprintf(const char *filepath, OBJ_data_to_export *data_to_ex
     fprintf(outfile, "%f\n", vertex->co[2]);
   }
 
-  for (int i = 0; i < data_to_export->tot_poly; i++) {
+  for (uint i = 0; i < data_to_export->tot_poly; i++) {
     MVert *vertex_list = data_to_export->mvert;
     const Polygon &polygon = data_to_export->polygon_list[i];
     fprintf(outfile, "vn ");
-    fprintf(outfile, "%hd ", face_normal_axis_component(polygon, 0, vertex_list));
-    fprintf(outfile, "%hd ", face_normal_axis_component(polygon, 1, vertex_list));
-    fprintf(outfile, "%hd \n", face_normal_axis_component(polygon, 2, vertex_list));
+    fprintf(outfile, "%hd ", face_normal_axis_component(polygon, AXIS_X, vertex_list));
+    fprintf(outfile, "%hd ", face_normal_axis_component(polygon, AXIS_Y, vertex_list));
+    fprintf(outfile, "%hd\n", face_normal_axis_component(polygon, AXIS_Z, vertex_list));
   }
 
-  for (int i = 0; i < data_to_export->tot_poly; i++) {
+  for (uint i = 0; i < data_to_export->tot_poly; i++) {
     const Polygon &polygon = data_to_export->polygon_list[i];
     fprintf(outfile, "f ");
     for (int j = 0; j < polygon.total_vertices_per_poly; j++) {



More information about the Bf-blender-cvs mailing list