[Bf-blender-cvs] [1f4aa3c40f1] refactor-mesh-face-generic: 83 remaining uses of MPoly
Hans Goudey
noreply at git.blender.org
Sun Feb 5 04:59:05 CET 2023
Commit: 1f4aa3c40f19a01464927963a13c32014782b9e7
Author: Hans Goudey
Date: Sat Feb 4 22:58:45 2023 -0500
Branches: refactor-mesh-face-generic
https://developer.blender.org/rB1f4aa3c40f19a01464927963a13c32014782b9e7
83 remaining uses of MPoly
===================================================================
M source/blender/blenkernel/BKE_DerivedMesh.h
M source/blender/blenkernel/BKE_mesh.h
M source/blender/blenkernel/BKE_multires.h
M source/blender/blenkernel/BKE_subdiv_ccg.h
M source/blender/blenkernel/intern/DerivedMesh.cc
M source/blender/blenkernel/intern/cdderivedmesh.cc
M source/blender/blenkernel/intern/mesh.cc
M source/blender/blenkernel/intern/mesh_boolean_convert.cc
M source/blender/blenkernel/intern/mesh_evaluate.cc
M source/blender/blenkernel/intern/mesh_mirror.cc
M source/blender/blenkernel/intern/mesh_remap.cc
M source/blender/blenkernel/intern/mesh_validate.cc
M source/blender/blenkernel/intern/mesh_wrapper.cc
M source/blender/blenkernel/intern/multires.cc
M source/blender/blenkernel/intern/multires_reshape.hh
M source/blender/blenkernel/intern/multires_reshape_apply_base.cc
M source/blender/blenkernel/intern/multires_reshape_smooth.cc
M source/blender/blenkernel/intern/multires_reshape_subdivide.cc
M source/blender/blenkernel/intern/multires_reshape_util.cc
M source/blender/blenkernel/intern/multires_reshape_vertcos.cc
M source/blender/blenkernel/intern/multires_unsubdivide.cc
M source/blender/blenkernel/intern/subdiv_ccg.cc
M source/blender/blenkernel/intern/subdiv_displacement_multires.cc
M source/blender/blenkernel/intern/subdiv_foreach.cc
M source/blender/bmesh/intern/bmesh_mesh_convert.cc
M source/blender/editors/armature/meshlaplacian.cc
M source/blender/editors/mesh/meshtools.cc
M source/blender/editors/object/object_bake_api.cc
M source/blender/editors/sculpt_paint/paint_vertex_weight_ops.cc
M source/blender/editors/sculpt_paint/sculpt.cc
M source/blender/modifiers/intern/MOD_particleinstance.cc
M source/blender/modifiers/intern/MOD_solidify_extrude.cc
M source/blender/modifiers/intern/MOD_solidify_nonmanifold.cc
M source/blender/render/intern/multires_bake.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 7daf65375e3..418fb6524b6 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -90,6 +90,8 @@ struct DerivedMesh {
int needsFree; /* checked on ->release, is set to 0 for cached results */
int deformedOnly; /* set by modifier stack if only deformed from original */
DerivedMeshType type;
+ /* Owned data. */
+ int *poly_offsets;
/**
* \warning Typical access is done via #getLoopTriArray, #getNumLoopTri.
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 4c5bd8eac23..5eabf3c62fd 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -920,7 +920,7 @@ bool BKE_mesh_validate_arrays(struct Mesh *me,
int *corner_verts,
int *corner_edges,
unsigned int totloop,
- const int *poly_offsets,
+ int *poly_offsets,
unsigned int totpoly,
struct MDeformVert *dverts, /* assume totvert length */
bool do_verbose,
diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h
index 7a91d9fe5c7..db6d594cd64 100644
--- a/source/blender/blenkernel/BKE_multires.h
+++ b/source/blender/blenkernel/BKE_multires.h
@@ -153,8 +153,7 @@ void old_mdisps_bilinear(float out[3], float (*disps)[3], int st, float u, float
/**
* Find per-corner coordinate with given per-face UV coord.
*/
-int mdisp_rot_face_to_crn(
- struct MPoly *mpoly, int face_side, float u, float v, float *x, float *y);
+int mdisp_rot_face_to_crn(int face_size, int face_side, float u, float v, float *x, float *y);
/* Reshaping, define in multires_reshape.cc */
diff --git a/source/blender/blenkernel/BKE_subdiv_ccg.h b/source/blender/blenkernel/BKE_subdiv_ccg.h
index ddb9d8e462f..3ad5a0d89be 100644
--- a/source/blender/blenkernel/BKE_subdiv_ccg.h
+++ b/source/blender/blenkernel/BKE_subdiv_ccg.h
@@ -303,15 +303,20 @@ typedef enum SubdivCCGAdjacencyType {
SUBDIV_CCG_ADJACENT_EDGE,
} SubdivCCGAdjacencyType;
+#ifdef __cplusplus
+
/* Returns if a grid coordinates is adjacent to a coarse mesh edge, vertex or nothing. If it is
* adjacent to an edge, r_v1 and r_v2 will be set to the two vertices of that edge. If it is
* adjacent to a vertex, r_v1 and r_v2 will be the index of that vertex. */
-SubdivCCGAdjacencyType BKE_subdiv_ccg_coarse_mesh_adjacency_info_get(const SubdivCCG *subdiv_ccg,
- const SubdivCCGCoord *coord,
- const int *corner_verts,
- const int *poly_offsets,
- int *r_v1,
- int *r_v2);
+SubdivCCGAdjacencyType BKE_subdiv_ccg_coarse_mesh_adjacency_info_get(
+ const SubdivCCG *subdiv_ccg,
+ const SubdivCCGCoord *coord,
+ const int *corner_verts,
+ const blender::OffsetIndices<int> polys,
+ int *r_v1,
+ int *r_v2);
+
+#endif
/* Get array which is indexed by face index and contains index of a first grid of the face.
*
diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc b/source/blender/blenkernel/intern/DerivedMesh.cc
index 225a1e776e6..5eb2e050637 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.cc
+++ b/source/blender/blenkernel/intern/DerivedMesh.cc
@@ -160,17 +160,10 @@ static int *dm_getCornerEdgeArray(DerivedMesh *dm)
static int *dm_getPolyArray(DerivedMesh *dm)
{
- MPoly *mpoly = (MPoly *)CustomData_get_layer_for_write(
- &dm->polyData, CD_MPOLY, dm->getNumPolys(dm));
-
- if (!mpoly) {
- mpoly = (MPoly *)CustomData_add_layer(
- &dm->polyData, CD_MPOLY, CD_SET_DEFAULT, nullptr, dm->getNumPolys(dm));
- CustomData_set_layer_flag(&dm->polyData, CD_MPOLY, CD_FLAG_TEMPORARY);
- dm->copyPolyArray(dm, mpoly);
+ if (!dm->poly_offsets) {
+ dm->poly_offsets = MEM_cnew_array<int>(dm->getNumPolys(dm) + 1, __func__);
}
-
- return mpoly;
+ return dm->poly_offsets;
}
static int dm_getNumLoopTri(DerivedMesh *dm)
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.cc b/source/blender/blenkernel/intern/cdderivedmesh.cc
index 9a44c9392ad..2ce8363d1cb 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.cc
+++ b/source/blender/blenkernel/intern/cdderivedmesh.cc
@@ -237,8 +237,7 @@ static DerivedMesh *cdDM_from_mesh_ex(Mesh *mesh,
&dm->loopData, CD_PROP_INT32, ".corner_vert", mesh->totloop));
cddm->corner_edges = static_cast<int *>(CustomData_get_layer_named_for_write(
&dm->loopData, CD_PROP_INT32, ".corner_edge", mesh->totloop));
- cddm->mpoly = static_cast<MPoly *>(
- CustomData_get_layer_for_write(&dm->polyData, CD_MPOLY, mesh->totpoly));
+ cddm->poly_offsets = static_cast<MPoly *>(nullptr) /* TODO. */;
#if 0
cddm->mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
#else
diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index 733254495a2..1ff8f918c61 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -268,7 +268,7 @@ static void mesh_blend_write(BlendWriter *writer, ID *id, const void *id_address
mesh, temp_arrays_for_legacy_format, vert_layers);
mesh->mloop = BKE_mesh_legacy_convert_corners_to_loops(
mesh, temp_arrays_for_legacy_format, loop_layers);
- mesh->mpoly = BKE_mesh_legacy_convert_offsets_to_polys(
+ mesh->mpoly = BKE_mesh_legacy_convert_offsets_to_mpolys(
mesh, temp_arrays_for_legacy_format, mesh.polys());
BKE_mesh_legacy_convert_hide_layers_to_flags(mesh);
BKE_mesh_legacy_convert_selection_layers_to_flags(mesh);
@@ -955,6 +955,7 @@ static void mesh_ensure_cdlayers_primary(Mesh *mesh, bool do_tessface)
mesh->poly_offsets_data = static_cast<int *>(
MEM_malloc_arrayN(mesh->totpoly + 1, sizeof(int), __func__));
}
+ mesh->poly_offsets_for_write().last() = mesh->totloop;
}
if (do_tessface && !CustomData_get_layer(&mesh->fdata, CD_MFACE)) {
CustomData_add_layer(&mesh->fdata, CD_MFACE, CD_SET_DEFAULT, nullptr, mesh->totface);
@@ -1518,8 +1519,8 @@ int poly_get_adj_loops_from_vert(const blender::Span<int> poly_verts, int vert,
if (corner != -1) {
/* vertex was found */
- r_adj[0] = corner_verts[ME_POLY_LOOP_PREV(poly, corner)];
- r_adj[1] = corner_verts[ME_POLY_LOOP_NEXT(poly, corner)];
+ r_adj[0] = poly_verts[mod_i(corner - 1, poly_verts.size())];
+ r_adj[1] = poly_verts[mod_i(corner + 1, poly_verts.size())];
}
return corner;
@@ -1840,7 +1841,7 @@ void BKE_mesh_calc_normals_split_ex(Mesh *mesh,
CustomData_get_layer_named(&mesh->pdata, CD_PROP_BOOL, "sharp_face"));
const Span<float3> positions = mesh->vert_positions();
const Span<MEdge> edges = mesh->edges();
- const OffsetIndices polys = mesh->polys();
+ const blender::OffsetIndices polys = mesh->polys();
BKE_mesh_normals_loop_split(reinterpret_cast<const float(*)[3]>(positions.data()),
BKE_mesh_vertex_normals_ensure(mesh),
@@ -1853,7 +1854,6 @@ void BKE_mesh_calc_normals_split_ex(Mesh *mesh,
mesh->totloop,
polys,
BKE_mesh_poly_normals_ensure(mesh),
- polys.size(),
use_split_normals,
split_angle,
sharp_edges,
diff --git a/source/blender/blenkernel/intern/mesh_boolean_convert.cc b/source/blender/blenkernel/intern/mesh_boolean_convert.cc
index ad7817e9f8a..32163f8bbfc 100644
--- a/source/blender/blenkernel/intern/mesh_boolean_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_boolean_convert.cc
@@ -98,10 +98,10 @@ class MeshesToIMeshInfo {
int input_mesh_for_imesh_vert(int imesh_v) const;
int input_mesh_for_imesh_edge(int imesh_e) const;
int input_mesh_for_imesh_face(int imesh_f) const;
- const MPoly *input_mpoly_for_orig_index(int orig_index,
- const Mesh **r_orig_mesh,
- int *r_orig_mesh_index,
- int *r_index_in_orig_mesh) const;
+ const IndexRange input_mpoly_for_orig_index(int orig_index,
+ const Mesh **r_orig_mesh,
+ int *r_orig_mesh_index,
+ int *r_index_in_orig_mesh) const;
void input_mvert_for_orig_index(int orig_index,
const Mesh **r_orig_mesh,
int *r_index_in_orig_mesh) const;
@@ -137,7 +137,7 @@ int MeshesToIMeshInfo::input_mesh_for_imesh_edge(int imesh_e) const
}
/* Given an index `imesh_f` in the `IMesh`, return the index of the
- * input `Mesh` that contained the `MPoly` that it came from. */
+ * input `Mesh` that contained the polygon that it came from. */
int MeshesToIMeshInfo::input_mesh_for_imesh_face(int imesh_f) const
{
int n = int(mesh_poly_offset.size());
@@ -152,12 +152,12 @@ int MeshesToIMeshInfo::input_mesh_for_imesh_face(int imesh_f) const
/* Given an index of an original face in the `IMesh`, find out the input
* `Mesh` that it came from and return it in `*r_orig_mesh`,
* and also return the index of that `Mesh` in `*r_orig_mesh_index`.
- * Finally, return the index of the corresponding `MPoly` in that `Mesh`
+ * Finally, return the index of the corresponding polygon in that `Mesh`
* in `*r_index_in_orig_mesh`. */
-const MPoly *MeshesToIMeshInfo::input_mpoly_for_orig_index(int orig_index,
- const Mesh **r_orig_mesh,
-
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list