[Bf-blender-cvs] [495df255251] refactor-mesh-remove-pointers: Use C++ methods to retrieve geometry data

Hans Goudey noreply at git.blender.org
Wed Aug 31 21:17:37 CEST 2022


Commit: 495df255251137e5ea9c72d63cae49074c83e695
Author: Hans Goudey
Date:   Wed Aug 31 14:17:29 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB495df255251137e5ea9c72d63cae49074c83e695

Use C++ methods to retrieve geometry data

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

M	source/blender/blenkernel/BKE_mesh.h
M	source/blender/blenkernel/intern/DerivedMesh.cc
M	source/blender/blenkernel/intern/bvhutils.cc
M	source/blender/blenkernel/intern/crazyspace.cc
M	source/blender/blenkernel/intern/curve_to_mesh_convert.cc
M	source/blender/blenkernel/intern/geometry_component_mesh.cc
M	source/blender/blenkernel/intern/gpencil_geom.cc
M	source/blender/blenkernel/intern/mesh.cc
M	source/blender/blenkernel/intern/mesh_boolean_convert.cc
M	source/blender/blenkernel/intern/mesh_calc_edges.cc
M	source/blender/blenkernel/intern/mesh_convert.cc
M	source/blender/blenkernel/intern/mesh_evaluate.cc
M	source/blender/blenkernel/intern/mesh_fair.cc
M	source/blender/blenkernel/intern/mesh_legacy_convert.cc
M	source/blender/blenkernel/intern/mesh_normals.cc
M	source/blender/blenkernel/intern/mesh_remesh_voxel.cc
M	source/blender/blenkernel/intern/mesh_runtime.cc
M	source/blender/blenkernel/intern/mesh_sample.cc
M	source/blender/blenkernel/intern/mesh_validate.cc
M	source/blender/blenkernel/intern/mesh_wrapper.cc
M	source/blender/blenkernel/intern/object.cc
M	source/blender/blenkernel/intern/object_dupli.cc
M	source/blender/blenkernel/intern/paint.cc
M	source/blender/blenkernel/intern/pbvh_pixels.cc
M	source/blender/blenkernel/intern/subdiv_mesh.cc
M	source/blender/blenkernel/intern/volume_to_mesh.cc
M	source/blender/bmesh/intern/bmesh_mesh_convert.cc
M	source/blender/compositor/nodes/COM_ConvertColorSpaceNode.cc
M	source/blender/compositor/nodes/COM_GlareNode.cc
M	source/blender/compositor/nodes/COM_SunBeamsNode.cc
M	source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M	source/blender/draw/intern/draw_cache_impl_subdivision.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_sculpt_data.cc
M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_weights.cc
M	source/blender/editors/curves/intern/curves_ops.cc
M	source/blender/editors/mesh/editface.cc
M	source/blender/editors/mesh/mesh_data.cc
M	source/blender/editors/mesh/meshtools.cc
M	source/blender/editors/object/object_modifier.cc
M	source/blender/editors/object/object_remesh.cc
M	source/blender/editors/object/object_vgroup.cc
M	source/blender/editors/sculpt_paint/curves_sculpt_add.cc
M	source/blender/editors/sculpt_paint/curves_sculpt_puff.cc
M	source/blender/editors/sculpt_paint/curves_sculpt_slide.cc
M	source/blender/editors/sculpt_paint/paint_vertex.cc
M	source/blender/editors/sculpt_paint/paint_vertex_color_ops.cc
M	source/blender/editors/space_spreadsheet/spreadsheet_data_source_geometry.cc
M	source/blender/editors/transform/transform_snap_object.cc
M	source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
M	source/blender/geometry/intern/add_curves_on_mesh.cc
M	source/blender/geometry/intern/mesh_merge_by_distance.cc
M	source/blender/geometry/intern/mesh_primitive_cuboid.cc
M	source/blender/geometry/intern/mesh_to_curve_convert.cc
M	source/blender/geometry/intern/mesh_to_volume.cc
M	source/blender/geometry/intern/realize_instances.cc
M	source/blender/io/alembic/exporter/abc_writer_mesh.cc
M	source/blender/io/alembic/intern/abc_reader_mesh.cc
M	source/blender/io/collada/GeometryExporter.cpp
M	source/blender/io/collada/MeshImporter.cpp
M	source/blender/io/stl/importer/stl_import_mesh.cc
M	source/blender/io/usd/intern/usd_reader_mesh.cc
M	source/blender/io/usd/intern/usd_writer_mesh.cc
M	source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc
M	source/blender/io/wavefront_obj/importer/obj_import_mesh.cc
M	source/blender/io/wavefront_obj/tests/obj_importer_tests.cc
M	source/blender/makesdna/DNA_mesh_types.h
M	source/blender/modifiers/intern/MOD_boolean.cc
M	source/blender/modifiers/intern/MOD_mask.cc
M	source/blender/modifiers/intern/MOD_meshsequencecache.cc
M	source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc
M	source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc
M	source/blender/nodes/geometry/nodes/node_geo_deform_curves_on_surface.cc
M	source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
M	source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc
M	source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc
M	source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
M	source/blender/nodes/geometry/nodes/node_geo_edge_paths_to_selection.cc
M	source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
M	source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc
M	source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_angle.cc
M	source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_neighbors.cc
M	source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_vertices.cc
M	source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_area.cc
M	source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_is_planar.cc
M	source/blender/nodes/geometry/nodes/node_geo_input_mesh_face_neighbors.cc
M	source/blender/nodes/geometry/nodes/node_geo_input_mesh_island.cc
M	source/blender/nodes/geometry/nodes/node_geo_input_mesh_vertex_neighbors.cc
M	source/blender/nodes/geometry/nodes/node_geo_input_shortest_edge_paths.cc
M	source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_circle.cc
M	source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc
M	source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_grid.cc
M	source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_line.cc
M	source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc
M	source/blender/nodes/geometry/nodes/node_geo_scale_elements.cc
M	source/blender/nodes/geometry/nodes/node_geo_set_position.cc
M	source/blender/nodes/geometry/nodes/node_geo_transfer_attribute.cc
M	source/blender/nodes/geometry/nodes/node_geo_uv_pack_islands.cc
M	source/blender/nodes/geometry/nodes/node_geo_uv_unwrap.cc
M	source/blender/nodes/geometry/nodes/node_geo_volume_to_mesh.cc
M	source/blender/render/intern/texture_margin.cc

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

diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 0adcbd74e31..a6dcc3f5139 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -1113,44 +1113,40 @@ BLI_INLINE MDeformVert *BKE_mesh_deform_verts_for_write(Mesh *mesh)
 
 #  include "BLI_span.hh"
 
-namespace blender::bke {
-
-inline Span<MVert> mesh_vertices(const Mesh &mesh)
+inline blender::Span<MVert> Mesh::vertices() const
 {
-  return {BKE_mesh_vertices(&mesh), mesh.totvert};
+  return {BKE_mesh_vertices(this), this->totvert};
 }
-inline MutableSpan<MVert> mesh_vertices_for_write(Mesh &mesh)
+inline blender::MutableSpan<MVert> Mesh::vertices_for_write()
 {
-  return {BKE_mesh_vertices_for_write(&mesh), mesh.totvert};
+  return {BKE_mesh_vertices_for_write(this), this->totvert};
 }
 
-inline Span<MEdge> mesh_edges(const Mesh &mesh)
+inline blender::Span<MEdge> Mesh::edges() const
 {
-  return {BKE_mesh_edges(&mesh), mesh.totedge};
+  return {BKE_mesh_edges(this), this->totedge};
 }
-inline MutableSpan<MEdge> mesh_edges_for_write(Mesh &mesh)
+inline blender::MutableSpan<MEdge> Mesh::edges_for_write()
 {
-  return {BKE_mesh_edges_for_write(&mesh), mesh.totedge};
+  return {BKE_mesh_edges_for_write(this), this->totedge};
 }
 
-inline Span<MPoly> mesh_polygons(const Mesh &mesh)
+inline blender::Span<MPoly> Mesh::polygons() const
 {
-  return {BKE_mesh_polygons(&mesh), mesh.totpoly};
+  return {BKE_mesh_polygons(this), this->totpoly};
 }
-inline MutableSpan<MPoly> mesh_polygons_for_write(Mesh &mesh)
+inline blender::MutableSpan<MPoly> Mesh::polygons_for_write()
 {
-  return {BKE_mesh_polygons_for_write(&mesh), mesh.totpoly};
+  return {BKE_mesh_polygons_for_write(this), this->totpoly};
 }
 
-inline Span<MLoop> mesh_loops(const Mesh &mesh)
+inline blender::Span<MLoop> Mesh::loops() const
 {
-  return {BKE_mesh_loops(&mesh), mesh.totloop};
+  return {BKE_mesh_loops(this), this->totloop};
 }
-inline MutableSpan<MLoop> mesh_loops_for_write(Mesh &mesh)
+inline blender::MutableSpan<MLoop> Mesh::loops_for_write()
 {
-  return {BKE_mesh_loops_for_write(&mesh), mesh.totloop};
+  return {BKE_mesh_loops_for_write(this), this->totloop};
 }
 
-}  // namespace blender::bke
-
 #endif
diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc b/source/blender/blenkernel/intern/DerivedMesh.cc
index cb3f9113747..46a8caafa70 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.cc
+++ b/source/blender/blenkernel/intern/DerivedMesh.cc
@@ -2003,7 +2003,7 @@ void mesh_get_mapped_verts_coords(Mesh *me_eval, float (*r_cos)[3], const int to
     MEM_freeN(userData.vertex_visit);
   }
   else {
-    const Span<MVert> verts = blender::bke::mesh_vertices(*me_eval);
+    const Span<MVert> verts = me_eval->vertices();
     for (int i = 0; i < totcos; i++) {
       copy_v3_v3(r_cos[i], verts[i].co);
     }
@@ -2018,9 +2018,9 @@ static void mesh_init_origspace(Mesh *mesh)
                                                                    CD_ORIGSPACE_MLOOP);
   const int numpoly = mesh->totpoly;
   // const int numloop = mesh->totloop;
-  const Span<MVert> verts = blender::bke::mesh_vertices(*mesh);
-  const Span<MPoly> polys = blender::bke::mesh_polygons(*mesh);
-  const Span<MLoop> loops = blender::bke::mesh_loops(*mesh);
+  const Span<MVert> verts = mesh->vertices();
+  const Span<MPoly> polys = mesh->polygons();
+  const Span<MLoop> loops = mesh->loops();
 
   const MPoly *mp = polys.data();
   int i, j, k;
diff --git a/source/blender/blenkernel/intern/bvhutils.cc b/source/blender/blenkernel/intern/bvhutils.cc
index 023bdef6051..ba72a924f6d 100644
--- a/source/blender/blenkernel/intern/bvhutils.cc
+++ b/source/blender/blenkernel/intern/bvhutils.cc
@@ -1249,10 +1249,10 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
     looptri = BKE_mesh_runtime_looptri_ensure(mesh);
     looptri_len = BKE_mesh_runtime_looptri_len(mesh);
   }
-  const Span<MVert> verts = blender::bke::mesh_vertices(*mesh);
-  const Span<MEdge> edges = blender::bke::mesh_edges(*mesh);
-  const Span<MPoly> polys = blender::bke::mesh_polygons(*mesh);
-  const Span<MLoop> loops = blender::bke::mesh_loops(*mesh);
+  const Span<MVert> verts = mesh->vertices();
+  const Span<MEdge> edges = mesh->edges();
+  const Span<MPoly> polys = mesh->polygons();
+  const Span<MLoop> loops = mesh->loops();
 
   /* Setup BVHTreeFromMesh */
   bvhtree_from_mesh_setup_data(nullptr,
@@ -1316,7 +1316,7 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
     case BVHTREE_FROM_LOOPTRI_NO_HIDDEN: {
       blender::bke::AttributeAccessor attributes = blender::bke::mesh_attributes(*mesh);
       mask = looptri_no_hidden_map_get(
-          blender::bke::mesh_polygons(*mesh).data(),
+          mesh->polygons().data(),
           attributes.lookup_or_default(".hide_poly", ATTR_DOMAIN_FACE, false),
           looptri_len,
           &mask_bits_act_len);
diff --git a/source/blender/blenkernel/intern/crazyspace.cc b/source/blender/blenkernel/intern/crazyspace.cc
index 86cc93bb976..17fb9fdb03e 100644
--- a/source/blender/blenkernel/intern/crazyspace.cc
+++ b/source/blender/blenkernel/intern/crazyspace.cc
@@ -187,9 +187,9 @@ void BKE_crazyspace_set_quats_mesh(Mesh *me,
   BLI_bitmap *vert_tag = BLI_BITMAP_NEW(me->totvert, __func__);
 
   /* first store two sets of tangent vectors in vertices, we derive it just from the face-edges */
-  const Span<MVert> verts = mesh_vertices(*me);
-  const Span<MPoly> polys = mesh_polygons(*me);
-  const Span<MLoop> loops = mesh_loops(*me);
+  const Span<MVert> verts = me->vertices();
+  const Span<MPoly> polys = me->polygons();
+  const Span<MLoop> loops = me->loops();
 
   for (int i = 0; i < me->totpoly; i++) {
     const MPoly *poly = &polys[i];
diff --git a/source/blender/blenkernel/intern/curve_to_mesh_convert.cc b/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
index ce91a5a1c10..47cd8495b18 100644
--- a/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
+++ b/source/blender/blenkernel/intern/curve_to_mesh_convert.cc
@@ -640,10 +640,10 @@ Mesh *curve_to_mesh_sweep(const CurvesGeometry &main,
       offsets.vert.last(), offsets.edge.last(), 0, offsets.loop.last(), offsets.poly.last());
   mesh->flag |= ME_AUTOSMOOTH;
   mesh->smoothresh = DEG2RADF(180.0f);
-  MutableSpan<MVert> verts = mesh_vertices_for_write(*mesh);
-  MutableSpan<MEdge> edges = mesh_edges_for_write(*mesh);
-  MutableSpan<MPoly> polys = mesh_polygons_for_write(*mesh);
-  MutableSpan<MLoop> loops = mesh_loops_for_write(*mesh);
+  MutableSpan<MVert> verts = mesh->vertices_for_write();
+  MutableSpan<MEdge> edges = mesh->edges_for_write();
+  MutableSpan<MPoly> polys = mesh->polygons_for_write();
+  MutableSpan<MLoop> loops = mesh->loops_for_write();
 
   foreach_curve_combination(curves_info, offsets, [&](const CombinationInfo &info) {
     fill_mesh_topology(info.vert_range.start(),
diff --git a/source/blender/blenkernel/intern/geometry_component_mesh.cc b/source/blender/blenkernel/intern/geometry_component_mesh.cc
index 3052ab77185..11ca2ba2087 100644
--- a/source/blender/blenkernel/intern/geometry_component_mesh.cc
+++ b/source/blender/blenkernel/intern/geometry_component_mesh.cc
@@ -134,7 +134,7 @@ VArray<float3> mesh_normals_varray(const Mesh &mesh,
        * instead of the GeometryComponent API to avoid calculating unnecessary values and to
        * allow normalizing the result more simply. */
       Span<float3> vert_normals{(float3 *)BKE_mesh_vertex_normals_ensure(&mesh), mesh.totvert};
-      const Span<MEdge> edges = bke::mesh_edges(mesh);
+      const Span<MEdge> edges = mesh.edges();
       Array<float3> edge_normals(mask.min_array_size());
       for (const int i : mask) {
         const MEdge &edge = edges[i];
@@ -175,7 +175,7 @@ static void adapt_mesh_domain_corner_to_point_impl(const Mesh &mesh,
                                                    MutableSpan<T> r_values)
 {
   BLI_assert(r_values.size() == mesh.totvert);
-  const Span<MLoop> loops = mesh_loops(mesh);
+  const Span<MLoop> loops = mesh.loops();
 
   attribute_math::DefaultMixer<T> mixer(r_values);
 
@@ -195,7 +195,7 @@ void adapt_mesh_domain_corner_to_point_impl(const Mesh &mesh,
                                             MutableSpan<bool> r_values)
 {
   BLI_assert(r_values.size() == mesh.totvert);
-  const Span<MLoop> loops = mesh_loops(mesh);
+  const Span<MLoop> loops = mesh.loops();
 
   Array<bool> loose_verts(mesh.totvert, true);
 
@@ -239,7 +239,7 @@ static GVArray adapt_mesh_domain_corner_to_point(const Mesh &mesh, const GVArray
  */
 static GVArray adapt_mesh_domain_point_to_corner(const Mesh &mesh, const GVArray &varray)
 {
-  const Span<MLoop> loops = mesh_loops(mesh);
+  const Span<MLoop> loops = mesh.loops();
 
   GVArray new_varray;
   attribute_math::convert_to_static_type(varray.type(), [&](auto dummy) {
@@ -255,7 +255,7 @@ static GVArray adapt_mesh_domain_point_to_corner(const Mesh &mesh, const GVArray
 
 static GVArray adapt_mesh_domain_corner_to_face(const Mesh &mesh, const GVArray &varray)
 {
-  const Span<MPoly> polys = mesh_polygons(mesh);
+  const Span<MPoly> polys = mesh.polygons();
 
   GVArray new_varray;
   attribute_math::convert_to_static_type(varray.type(), [&](auto dummy) {
@@ -299,8 +299,8 @@ static void adapt_mesh_domain_corner_to_edge_impl(const Mesh &mesh,
                                                   MutableSpan<T> r_values)
 {
   BLI_assert(r_values.size() == mesh.totedge);
-  const Span<MPoly> polys = mesh_polygons(mesh);
-  const Span<MLoop> loops = mesh_loops(mesh);
+  const Span<MPoly> polys = mesh.polygons();
+  const Span<MLoop> loops = mesh.loops();
 
   attribute_math::DefaultMixer<T> mixer(r_values);
 
@@ -329,8 +329,8 @@ void adapt_mesh_domain_corner_to_edge_impl(const Mesh &mesh,
                                            MutableSpan<bool> r_values)
 {
   BLI_assert(r_values.size() == mesh.totedge);
-  const Span<MPoly> polys = mesh_polygons(mesh);
-  const Span<MLoop> loops = mesh_loops(mesh);
+  const Span<MPoly> polys = mesh.polygons();
+  const Span<MLoop> loops = mesh.loops();
 
   /* It may be possible to rely on the #ME_LOOSEEDGE flag, but that seems error-prone. */
   Array<bool> loose_edges(mesh

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list