[Bf-blender-cvs] [d0e91f78faa] soc-2020-io-performance: Rename vert_treplet to vert_index_mlen; add comments

Ankit Meel noreply at git.blender.org
Thu Sep 3 12:42:52 CEST 2020


Commit: d0e91f78faae505857bb4d68945e6ede1773cbe1
Author: Ankit Meel
Date:   Thu Sep 3 16:09:31 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rBd0e91f78faae505857bb4d68945e6ede1773cbe1

Rename vert_treplet to vert_index_mlen; add comments

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

M	source/blender/io/wavefront_obj/intern/mesh_utils.cc
M	source/blender/io/wavefront_obj/intern/obj_import_mtl.hh

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

diff --git a/source/blender/io/wavefront_obj/intern/mesh_utils.cc b/source/blender/io/wavefront_obj/intern/mesh_utils.cc
index 8e23c5c0d8a..1a2c2dc8ba2 100644
--- a/source/blender/io/wavefront_obj/intern/mesh_utils.cc
+++ b/source/blender/io/wavefront_obj/intern/mesh_utils.cc
@@ -41,25 +41,31 @@ static float manhatten_len(const float3 coord)
   return std::abs(coord[0]) + std::abs(coord[1]) + std::abs(coord[2]);
 }
 
-struct vert_treplet {
+/**
+ * Keeps original index of the vertex as well as manhatten length for future use.
+ */
+struct vert_index_mlen {
   const float3 v;
   const int i;
   const float mlen;
 
-  vert_treplet(float3 v, int i) : v(v), i(i), mlen(manhatten_len(v))
+  vert_index_mlen(float3 v, int i) : v(v), i(i), mlen(manhatten_len(v))
   {
   }
-  friend bool operator==(const vert_treplet &one, const vert_treplet &other)
+  friend bool operator==(const vert_index_mlen &one, const vert_index_mlen &other)
   {
     return other.v == one.v;
   }
-  friend bool operator!=(const vert_treplet &one, const vert_treplet &other)
+  friend bool operator!=(const vert_index_mlen &one, const vert_index_mlen &other)
   {
     return !(one == other);
   }
 };
 
-static std::pair<float3, float3> ed_key_mlen(const vert_treplet &v1, const vert_treplet &v2)
+/**
+ * Reorder vertices `v1` and `v2` so that edges like (v1,v2) and (v2,v2) are processed as the same.
+ */
+static std::pair<float3, float3> ed_key_mlen(const vert_index_mlen &v1, const vert_index_mlen &v2)
 {
   if (v2.mlen < v1.mlen) {
     return {v2.v, v1.v};
@@ -67,10 +73,14 @@ static std::pair<float3, float3> ed_key_mlen(const vert_treplet &v1, const vert_
   return {v1.v, v2.v};
 }
 
-static bool join_segments(Vector<vert_treplet> *r_seg1, Vector<vert_treplet> *r_seg2)
+/**
+ * Join segments which have same starting or ending points.
+ * Caller should ensure non-empty segments.
+ */
+static bool join_segments(Vector<vert_index_mlen> *r_seg1, Vector<vert_index_mlen> *r_seg2)
 {
   if ((*r_seg1)[0].v == r_seg2->last().v) {
-    Vector<vert_treplet> *temp = r_seg1;
+    Vector<vert_index_mlen> *temp = r_seg1;
     r_seg1 = r_seg2;
     r_seg2 = temp;
   }
@@ -152,7 +162,7 @@ Vector<Vector<int>> ngon_tessellate(Span<float3> vertex_coords, Span<int> face_v
   if (face_vertex_indices.is_empty()) {
     return {};
   }
-  Vector<vert_treplet> verts;
+  Vector<vert_index_mlen> verts;
   verts.reserve(face_vertex_indices.size());
 
   for (int i = 0; i < face_vertex_indices.size(); i++) {
@@ -179,12 +189,12 @@ Vector<Vector<int>> ngon_tessellate(Span<float3> vertex_coords, Span<int> face_v
     }
   }
 
-  Vector<Vector<vert_treplet>> loop_segments;
+  Vector<Vector<vert_index_mlen>> loop_segments;
   {
-    const vert_treplet *vert_prev = &verts[0];
-    Vector<vert_treplet> context_loop{1, *vert_prev};
+    const vert_index_mlen *vert_prev = &verts[0];
+    Vector<vert_index_mlen> context_loop{1, *vert_prev};
     loop_segments.append(context_loop);
-    for (const vert_treplet &vertex : verts) {
+    for (const vert_index_mlen &vertex : verts) {
       if (vertex == *vert_prev) {
         continue;
       }
@@ -208,7 +218,7 @@ Vector<Vector<int>> ngon_tessellate(Span<float3> vertex_coords, Span<int> face_v
   while (joining_segements) {
     joining_segements = false;
     for (int j = loop_segments.size() - 1; j >= 0; j--) {
-      Vector<vert_treplet> &seg_j = loop_segments[j];
+      Vector<vert_index_mlen> &seg_j = loop_segments[j];
       if (seg_j.is_empty()) {
         continue;
       }
@@ -216,7 +226,7 @@ Vector<Vector<int>> ngon_tessellate(Span<float3> vertex_coords, Span<int> face_v
         if (seg_j.is_empty()) {
           break;
         }
-        Vector<vert_treplet> &seg_k = loop_segments[k];
+        Vector<vert_index_mlen> &seg_k = loop_segments[k];
         if (!seg_k.is_empty() && join_segments(&seg_j, &seg_k)) {
           joining_segements = true;
         }
@@ -224,14 +234,14 @@ Vector<Vector<int>> ngon_tessellate(Span<float3> vertex_coords, Span<int> face_v
     }
   }
 
-  for (Vector<vert_treplet> &loop : loop_segments) {
+  for (Vector<vert_index_mlen> &loop : loop_segments) {
     while (!loop.is_empty() && loop[0].v == loop.last().v) {
       loop.remove_last();
     }
   }
 
-  Vector<Vector<vert_treplet>> loop_list;
-  for (Vector<vert_treplet> &loop : loop_segments) {
+  Vector<Vector<vert_index_mlen>> loop_list;
+  for (Vector<vert_index_mlen> &loop : loop_segments) {
     if (loop.size() > 2) {
       loop_list.append(loop);
     }
@@ -240,7 +250,7 @@ Vector<Vector<int>> ngon_tessellate(Span<float3> vertex_coords, Span<int> face_v
 
   Vector<int> vert_map(face_vertex_indices.size(), 0);
   int ii = 0;
-  for (Span<vert_treplet> verts : loop_list) {
+  for (Span<vert_index_mlen> verts : loop_list) {
     if (verts.size() <= 2) {
       continue;
     }
@@ -253,9 +263,9 @@ Vector<Vector<int>> ngon_tessellate(Span<float3> vertex_coords, Span<int> face_v
   Vector<Vector<int>> fill;
   {
     Vector<Vector<float3>> coord_list;
-    for (Span<vert_treplet> loop : loop_list) {
+    for (Span<vert_index_mlen> loop : loop_list) {
       Vector<float3> coord;
-      for (const vert_treplet &vert : loop) {
+      for (const vert_index_mlen &vert : loop) {
         coord.append(vert.v);
       }
       coord_list.append(coord);
diff --git a/source/blender/io/wavefront_obj/intern/obj_import_mtl.hh b/source/blender/io/wavefront_obj/intern/obj_import_mtl.hh
index 2765e07c2a4..8698b334303 100644
--- a/source/blender/io/wavefront_obj/intern/obj_import_mtl.hh
+++ b/source/blender/io/wavefront_obj/intern/obj_import_mtl.hh
@@ -23,16 +23,17 @@
 
 #pragma once
 
-#include "MEM_guardedalloc.h"
-
-#include "DNA_node_types.h"
-
 #include <array>
+
 #include "BLI_float3.hh"
 #include "BLI_map.hh"
 #include "BLI_string_ref.hh"
 #include "BLI_vector.hh"
 
+#include "DNA_node_types.h"
+
+#include "MEM_guardedalloc.h"
+
 namespace blender::io::obj {
 /**
  * Used for storing parameters for all kinds of texture maps from MTL file.
@@ -119,7 +120,7 @@ class ShaderNodetreeWrap {
 
   /* List of all locations occupied by nodes. */
   Vector<std::array<int, 2>> node_locations;
-  const float node_size{300.f};
+  const float node_size_{300.f};
 
  public:
   ShaderNodetreeWrap(Main *bmain, const MTLMaterial &mtl_mat);



More information about the Bf-blender-cvs mailing list