[Bf-blender-cvs] [a9ea310d30d] master: Cleanup: Move remesh files to C++

Hans Goudey noreply at git.blender.org
Fri Jul 30 19:15:07 CEST 2021


Commit: a9ea310d30d63f735dbdc106a4515c6ae4bf7893
Author: Hans Goudey
Date:   Fri Jul 30 13:15:01 2021 -0400
Branches: master
https://developer.blender.org/rBa9ea310d30d63f735dbdc106a4515c6ae4bf7893

Cleanup: Move remesh files to C++

This will be helpful for some cleanups I'd like to do, including
removing the unecessary C API for OpenVDB and unifying some
attribute transfer code.

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

M	source/blender/blenkernel/BKE_mesh_remesh_voxel.h
M	source/blender/blenkernel/BKE_shrinkwrap.h
M	source/blender/blenkernel/CMakeLists.txt
R081	source/blender/blenkernel/intern/mesh_remesh_voxel.c	source/blender/blenkernel/intern/mesh_remesh_voxel.cc
M	source/blender/editors/object/CMakeLists.txt
M	source/blender/editors/object/object_intern.h
R093	source/blender/editors/object/object_remesh.c	source/blender/editors/object/object_remesh.cc

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

diff --git a/source/blender/blenkernel/BKE_mesh_remesh_voxel.h b/source/blender/blenkernel/BKE_mesh_remesh_voxel.h
index 2265fa6e105..3ada2eb6c6c 100644
--- a/source/blender/blenkernel/BKE_mesh_remesh_voxel.h
+++ b/source/blender/blenkernel/BKE_mesh_remesh_voxel.h
@@ -54,7 +54,9 @@ struct Mesh *BKE_mesh_remesh_quadriflow_to_mesh_nomain(struct Mesh *mesh,
                                                        bool preserve_sharp,
                                                        bool preserve_boundary,
                                                        bool adaptive_scale,
-                                                       void *update_cb,
+                                                       void (*update_cb)(void *,
+                                                                         float progress,
+                                                                         int *cancel),
                                                        void *update_cb_data);
 
 /* Data reprojection functions */
diff --git a/source/blender/blenkernel/BKE_shrinkwrap.h b/source/blender/blenkernel/BKE_shrinkwrap.h
index bcf702ea797..70aeb37d995 100644
--- a/source/blender/blenkernel/BKE_shrinkwrap.h
+++ b/source/blender/blenkernel/BKE_shrinkwrap.h
@@ -118,7 +118,7 @@ void BKE_shrinkwrap_mesh_nearest_surface_deform(struct bContext *C,
                                                 struct Object *ob_source,
                                                 struct Object *ob_target);
 
-/* Used in object_remesh.c to preserve the details and volume in the voxel remesher */
+/* Used in object_remesh.cc to preserve the details and volume in the voxel remesher */
 void BKE_shrinkwrap_remesh_target_project(struct Mesh *src_me,
                                           struct Mesh *target_me,
                                           struct Object *ob_target);
diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index e8f31ae72c0..78bfe8c9afb 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -194,7 +194,7 @@ set(SRC
   intern/mesh_mirror.c
   intern/mesh_normals.cc
   intern/mesh_remap.c
-  intern/mesh_remesh_voxel.c
+  intern/mesh_remesh_voxel.cc
   intern/mesh_runtime.c
   intern/mesh_sample.cc
   intern/mesh_tangent.c
diff --git a/source/blender/blenkernel/intern/mesh_remesh_voxel.c b/source/blender/blenkernel/intern/mesh_remesh_voxel.cc
similarity index 81%
rename from source/blender/blenkernel/intern/mesh_remesh_voxel.c
rename to source/blender/blenkernel/intern/mesh_remesh_voxel.cc
index 5a90d1f6ea5..bdb5a343644 100644
--- a/source/blender/blenkernel/intern/mesh_remesh_voxel.c
+++ b/source/blender/blenkernel/intern/mesh_remesh_voxel.cc
@@ -21,12 +21,12 @@
  * \ingroup bke
  */
 
-#include <ctype.h>
-#include <float.h>
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
+#include <cctype>
+#include <cfloat>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
 
 #include "MEM_guardedalloc.h"
 
@@ -62,8 +62,8 @@ struct OpenVDBLevelSet *BKE_mesh_remesh_voxel_ovdb_mesh_to_level_set_create(
 {
   BKE_mesh_runtime_looptri_recalc(mesh);
   const MLoopTri *looptri = BKE_mesh_runtime_looptri_ensure(mesh);
-  MVertTri *verttri = MEM_callocN(sizeof(*verttri) * BKE_mesh_runtime_looptri_len(mesh),
-                                  "remesh_looptri");
+  MVertTri *verttri = (MVertTri *)MEM_callocN(
+      sizeof(*verttri) * BKE_mesh_runtime_looptri_len(mesh), "remesh_looptri");
   BKE_mesh_runtime_verttri_from_looptri(
       verttri, mesh->mloop, looptri, BKE_mesh_runtime_looptri_len(mesh));
 
@@ -86,7 +86,7 @@ struct OpenVDBLevelSet *BKE_mesh_remesh_voxel_ovdb_mesh_to_level_set_create(
     faces[i * 3 + 2] = vt->tri[2];
   }
 
-  struct OpenVDBLevelSet *level_set = OpenVDBLevelSet_create(false, NULL);
+  struct OpenVDBLevelSet *level_set = OpenVDBLevelSet_create(false, nullptr);
   OpenVDBLevelSet_mesh_to_level_set(level_set, verts, faces, totverts, totfaces, transform);
 
   MEM_freeN(verts);
@@ -157,7 +157,7 @@ static Mesh *BKE_mesh_remesh_quadriflow(Mesh *input_mesh,
                                         bool preserve_sharp,
                                         bool preserve_boundary,
                                         bool adaptive_scale,
-                                        void *update_cb,
+                                        void (*update_cb)(void *, float progress, int *cancel),
                                         void *update_cb_data)
 {
   /* Ensure that the triangulated mesh data is up to data */
@@ -165,8 +165,8 @@ static Mesh *BKE_mesh_remesh_quadriflow(Mesh *input_mesh,
   const MLoopTri *looptri = BKE_mesh_runtime_looptri_ensure(input_mesh);
 
   /* Gather the required data for export to the internal quadiflow mesh format */
-  MVertTri *verttri = MEM_callocN(sizeof(*verttri) * BKE_mesh_runtime_looptri_len(input_mesh),
-                                  "remesh_looptri");
+  MVertTri *verttri = (MVertTri *)MEM_callocN(
+      sizeof(*verttri) * BKE_mesh_runtime_looptri_len(input_mesh), "remesh_looptri");
   BKE_mesh_runtime_verttri_from_looptri(
       verttri, input_mesh->mloop, looptri, BKE_mesh_runtime_looptri_len(input_mesh));
 
@@ -201,11 +201,11 @@ static Mesh *BKE_mesh_remesh_quadriflow(Mesh *input_mesh,
   qrd.preserve_sharp = preserve_sharp;
   qrd.preserve_boundary = preserve_boundary;
   qrd.adaptive_scale = adaptive_scale;
-  qrd.minimum_cost_flow = 0;
-  qrd.aggresive_sat = 0;
+  qrd.minimum_cost_flow = false;
+  qrd.aggresive_sat = false;
   qrd.rng_seed = seed;
 
-  qrd.out_faces = NULL;
+  qrd.out_faces = nullptr;
 
   /* Run the remesher */
   QFLOW_quadriflow_remesh(&qrd, update_cb, update_cb_data);
@@ -214,16 +214,16 @@ static Mesh *BKE_mesh_remesh_quadriflow(Mesh *input_mesh,
   MEM_freeN(faces);
   MEM_freeN(verttri);
 
-  if (qrd.out_faces == NULL) {
+  if (qrd.out_faces == nullptr) {
     /* The remeshing was canceled */
-    return NULL;
+    return nullptr;
   }
 
   if (qrd.out_totfaces == 0) {
     /* Meshing failed */
     MEM_freeN(qrd.out_faces);
     MEM_freeN(qrd.out_verts);
-    return NULL;
+    return nullptr;
   }
 
   /* Construct the new output mesh */
@@ -262,10 +262,12 @@ Mesh *BKE_mesh_remesh_quadriflow_to_mesh_nomain(Mesh *mesh,
                                                 bool preserve_sharp,
                                                 bool preserve_boundary,
                                                 bool adaptive_scale,
-                                                void *update_cb,
+                                                void (*update_cb)(void *,
+                                                                  float progress,
+                                                                  int *cancel),
                                                 void *update_cb_data)
 {
-  Mesh *new_mesh = NULL;
+  Mesh *new_mesh = nullptr;
 #ifdef WITH_QUADRIFLOW
   if (target_faces <= 0) {
     target_faces = -1;
@@ -296,7 +298,7 @@ Mesh *BKE_mesh_remesh_voxel_to_mesh_nomain(Mesh *mesh,
                                            float adaptivity,
                                            float isovalue)
 {
-  Mesh *new_mesh = NULL;
+  Mesh *new_mesh = nullptr;
 #ifdef WITH_OPENVDB
   struct OpenVDBLevelSet *level_set;
   struct OpenVDBTransform *xform = OpenVDBTransform_create();
@@ -314,28 +316,26 @@ Mesh *BKE_mesh_remesh_voxel_to_mesh_nomain(Mesh *mesh,
 
 void BKE_mesh_remesh_reproject_paint_mask(Mesh *target, Mesh *source)
 {
-  BVHTreeFromMesh bvhtree = {
-      .nearest_callback = NULL,
-  };
+  BVHTreeFromMesh bvhtree = {{nullptr}};
   BKE_bvhtree_from_mesh_get(&bvhtree, source, BVHTREE_FROM_VERTS, 2);
-  MVert *target_verts = CustomData_get_layer(&target->vdata, CD_MVERT);
+  MVert *target_verts = (MVert *)CustomData_get_layer(&target->vdata, CD_MVERT);
 
   float *target_mask;
   if (CustomData_has_layer(&target->vdata, CD_PAINT_MASK)) {
-    target_mask = CustomData_get_layer(&target->vdata, CD_PAINT_MASK);
+    target_mask = (float *)CustomData_get_layer(&target->vdata, CD_PAINT_MASK);
   }
   else {
-    target_mask = CustomData_add_layer(
-        &target->vdata, CD_PAINT_MASK, CD_CALLOC, NULL, target->totvert);
+    target_mask = (float *)CustomData_add_layer(
+        &target->vdata, CD_PAINT_MASK, CD_CALLOC, nullptr, target->totvert);
   }
 
   float *source_mask;
   if (CustomData_has_layer(&source->vdata, CD_PAINT_MASK)) {
-    source_mask = CustomData_get_layer(&source->vdata, CD_PAINT_MASK);
+    source_mask = (float *)CustomData_get_layer(&source->vdata, CD_PAINT_MASK);
   }
   else {
-    source_mask = CustomData_add_layer(
-        &source->vdata, CD_PAINT_MASK, CD_CALLOC, NULL, source->totvert);
+    source_mask = (float *)CustomData_add_layer(
+        &source->vdata, CD_PAINT_MASK, CD_CALLOC, nullptr, source->totvert);
   }
 
   for (int i = 0; i < target->totvert; i++) {
@@ -354,30 +354,28 @@ void BKE_mesh_remesh_reproject_paint_mask(Mesh *target, Mesh *source)
 
 void BKE_remesh_reproject_sculpt_face_sets(Mesh *target, Mesh *source)
 {
-  BVHTreeFromMesh bvhtree = {
-      .nearest_callback = NULL,
-  };
+  BVHTreeFromMesh bvhtree = {{nullptr}};
 
-  const MPoly *target_polys = CustomData_get_layer(&target->pdata, CD_MPOLY);
-  const MVert *target_verts = CustomData_get_layer(&target->vdata, CD_MVERT);
-  const MLoop *target_loops = CustomData_get_layer(&target->ldata, CD_MLOOP);
+  const MPoly *target_polys = (const MPoly *)CustomData_get_layer(&target->pdata, CD_MPOLY);
+  const MVert *target_verts = (const MVert *)CustomData_get_layer(&target->vdata, CD_MVERT);
+  const MLoop *target_loops = (const MLoop *)CustomData_get_layer(&target->ldata, CD_MLOOP);
 
   int *target_face_sets;
   if (CustomData_has_layer(&target->pdata, CD_SCULPT_FACE_SETS)) {
-    target_face_sets = CustomData_get_layer(&target->pdata, CD_SCULPT_FACE_SETS);
+    target_face_sets = (int *)CustomData_get_layer(&target->pdata, CD_SCULPT_FACE_SETS);
   }
   else {
-    target_face_sets = CustomData_add_layer(
-        &target->pdata, CD_SCULPT_FACE_SETS, CD_CALLOC, NULL, target->totpoly);
+   

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list