[Bf-blender-cvs] [8e4fb20c366] refactor-mesh-bevel-weight-generic: Merge branch 'master' into refactor-mesh-bevel-weight-generic

Hans Goudey noreply at git.blender.org
Mon Sep 5 20:18:52 CEST 2022


Commit: 8e4fb20c36635a9f9a3bf4cdfe792a6011d4f884
Author: Hans Goudey
Date:   Mon Sep 5 13:08:07 2022 -0500
Branches: refactor-mesh-bevel-weight-generic
https://developer.blender.org/rB8e4fb20c36635a9f9a3bf4cdfe792a6011d4f884

Merge branch 'master' into refactor-mesh-bevel-weight-generic

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



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

diff --cc source/blender/blenkernel/intern/mesh.cc
index af061a9daae,c0379c50de4..caa29c559c0
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@@ -253,8 -248,8 +248,9 @@@ static void mesh_blend_write(BlendWrite
    else {
      Set<std::string> names_to_skip;
      if (!BLO_write_is_undo(writer)) {
+ 
        BKE_mesh_legacy_convert_hide_layers_to_flags(mesh);
 +      BKE_mesh_legacy_bevel_weight_from_layers(mesh);
        BKE_mesh_legacy_convert_material_indices_to_mpoly(mesh);
        /* When converting to the old mesh format, don't save redundant attributes. */
        names_to_skip.add_multiple_new({".hide_vert", ".hide_edge", ".hide_poly"});
diff --cc source/blender/blenkernel/intern/mesh_legacy_convert.cc
index e0f33fb038e,c2a4b0176c6..6e615a6c88d
--- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
@@@ -878,67 -917,6 +917,67 @@@ void BKE_mesh_add_mface_layers(CustomDa
  
  /** \} */
  
 +/* -------------------------------------------------------------------- */
 +/** \name Bevel Weight Conversion
 + * \{ */
 +
 +void BKE_mesh_legacy_bevel_weight_from_layers(Mesh *mesh)
 +{
 +  using namespace blender;
-   MutableSpan<MVert> vertices(mesh->mvert, mesh->totvert);
++  MutableSpan<MVert> verts = mesh->vertices_for_write();
 +  if (const float *weights = static_cast<const float *>(
 +          CustomData_get_layer(&mesh->vdata, CD_BWEIGHT))) {
 +    mesh->cd_flag |= ME_CDFLAG_VERT_BWEIGHT;
-     for (const int i : vertices.index_range()) {
-       vertices[i].bweight = std::clamp(weights[i], 0.0f, 1.0f) * 255.0f;
++    for (const int i : verts.index_range()) {
++      verts[i].bweight = std::clamp(weights[i], 0.0f, 1.0f) * 255.0f;
 +    }
 +  }
 +  else {
 +    mesh->cd_flag &= ~ME_CDFLAG_VERT_BWEIGHT;
-     for (const int i : vertices.index_range()) {
-       vertices[i].bweight = 0;
++    for (const int i : verts.index_range()) {
++      verts[i].bweight = 0;
 +    }
 +  }
-   MutableSpan<MEdge> edges(mesh->medge, mesh->totedge);
++  MutableSpan<MEdge> edges = mesh->edges_for_write();
 +  if (const float *weights = static_cast<const float *>(
 +          CustomData_get_layer(&mesh->edata, CD_BWEIGHT))) {
 +    mesh->cd_flag |= ME_CDFLAG_EDGE_BWEIGHT;
 +    for (const int i : edges.index_range()) {
 +      edges[i].bweight = std::clamp(weights[i], 0.0f, 1.0f) * 255.0f;
 +    }
 +  }
 +  else {
 +    mesh->cd_flag &= ~ME_CDFLAG_EDGE_BWEIGHT;
 +    for (const int i : edges.index_range()) {
 +      edges[i].bweight = 0;
 +    }
 +  }
 +}
 +
 +void BKE_mesh_legacy_bevel_weight_to_layers(Mesh *mesh)
 +{
 +  using namespace blender;
-   const Span<MVert> vertices(mesh->mvert, mesh->totvert);
++  const Span<MVert> verts = mesh->vertices();
 +  if (mesh->cd_flag & ME_CDFLAG_VERT_BWEIGHT) {
 +    float *weights = static_cast<float *>(
-         CustomData_add_layer(&mesh->vdata, CD_BWEIGHT, CD_CONSTRUCT, nullptr, vertices.size()));
-     for (const int i : vertices.index_range()) {
-       weights[i] = vertices[i].bweight / 255.0f;
++        CustomData_add_layer(&mesh->vdata, CD_BWEIGHT, CD_CONSTRUCT, nullptr, verts.size()));
++    for (const int i : verts.index_range()) {
++      weights[i] = verts[i].bweight / 255.0f;
 +    }
 +  }
 +
-   const Span<MEdge> edges(mesh->medge, mesh->totedge);
++  const Span<MEdge> edges = mesh->edges();
 +  if (mesh->cd_flag & ME_CDFLAG_EDGE_BWEIGHT) {
 +    float *weights = static_cast<float *>(
 +        CustomData_add_layer(&mesh->edata, CD_BWEIGHT, CD_CONSTRUCT, nullptr, edges.size()));
 +    for (const int i : edges.index_range()) {
 +      weights[i] = edges[i].bweight / 255.0f;
 +    }
 +  }
 +}
 +
 +/** \} */
 +
  /* -------------------------------------------------------------------- */
  /** \name Hide Attribute and Legacy Flag Conversion
   * \{ */
diff --cc source/blender/blenkernel/intern/subdiv_mesh.cc
index fef222fe31e,c222fc46800..34bd3e5b3bd
--- a/source/blender/blenkernel/intern/subdiv_mesh.cc
+++ b/source/blender/blenkernel/intern/subdiv_mesh.cc
@@@ -778,9 -776,10 +776,9 @@@ static void subdiv_copy_edge_data(Subdi
                                    MEdge *subdiv_edge,
                                    const MEdge *coarse_edge)
  {
-   const int subdiv_edge_index = subdiv_edge - ctx->subdiv_mesh->medge;
+   const int subdiv_edge_index = subdiv_edge - ctx->subdiv_edges;
    if (coarse_edge == nullptr) {
      subdiv_edge->crease = 0;
 -    subdiv_edge->bweight = 0;
      subdiv_edge->flag = 0;
      if (!ctx->settings->use_optimal_display) {
        subdiv_edge->flag |= ME_EDGERENDER;
diff --cc source/blender/bmesh/intern/bmesh_mesh_convert.cc
index b36de36c2e2,0190f91250b..ef621f77f37
--- a/source/blender/bmesh/intern/bmesh_mesh_convert.cc
+++ b/source/blender/bmesh/intern/bmesh_mesh_convert.cc
@@@ -1259,12 -1302,15 +1252,13 @@@ void BM_mesh_bm_to_me_for_eval(BMesh *b
    BMVert *eve;
    BMEdge *eed;
    BMFace *efa;
-   MVert *mvert = me->mvert;
-   MEdge *medge = me->medge;
-   MLoop *mloop = me->mloop;
-   MPoly *mpoly = me->mpoly;
+   MutableSpan<MVert> mvert = me->vertices_for_write();
+   MutableSpan<MEdge> medge = me->edges_for_write();
+   MutableSpan<MPoly> mpoly = me->polygons_for_write();
+   MutableSpan<MLoop> loops = me->loops_for_write();
+   MLoop *mloop = loops.data();
    unsigned int i, j;
  
 -  const int cd_vert_bweight_offset = CustomData_get_offset(&bm->vdata, CD_BWEIGHT);
 -  const int cd_edge_bweight_offset = CustomData_get_offset(&bm->edata, CD_BWEIGHT);
    const int cd_edge_crease_offset = CustomData_get_offset(&bm->edata, CD_CREASE);
  
    bool need_hide_vert = false;
diff --cc source/blender/modifiers/intern/MOD_solidify_extrude.c
index f679769779b,d7b2db87a60..ad2534db437
--- a/source/blender/modifiers/intern/MOD_solidify_extrude.c
+++ b/source/blender/modifiers/intern/MOD_solidify_extrude.c
@@@ -348,11 -335,16 +335,11 @@@ Mesh *MOD_solidify_extrude_modifyMesh(M
                                               (int)((loops_num * stride) + newLoops),
                                               (int)((polys_num * stride) + newPolys));
  
-   mpoly = result->mpoly;
-   mloop = result->mloop;
-   medge = result->medge;
-   mvert = result->mvert;
+   MVert *mvert = BKE_mesh_vertices_for_write(result);
+   MEdge *medge = BKE_mesh_edges_for_write(result);
+   MPoly *mpoly = BKE_mesh_polygons_for_write(result);
+   MLoop *mloop = BKE_mesh_loops_for_write(result);
  
 -  if (do_bevel_convex) {
 -    /* Make sure bweight is enabled. */
 -    result->cd_flag |= ME_CDFLAG_EDGE_BWEIGHT;
 -  }
 -
    if (do_shell) {
      CustomData_copy_data(&mesh->vdata, &result->vdata, 0, 0, (int)verts_num);
      CustomData_copy_data(&mesh->vdata, &result->vdata, 0, (int)verts_num, (int)verts_num);
diff --cc source/blender/modifiers/intern/MOD_solidify_nonmanifold.c
index aa871e60bd8,0bce954a67a..cee565b30f4
--- a/source/blender/modifiers/intern/MOD_solidify_nonmanifold.c
+++ b/source/blender/modifiers/intern/MOD_solidify_nonmanifold.c
@@@ -188,15 -184,11 +184,15 @@@ Mesh *MOD_solidify_nonmanifold_modifyMe
  
    const bool do_flat_faces = dvert && (smd->flag & MOD_SOLIDIFY_NONMANIFOLD_FLAT_FACES);
  
-   orig_mvert = mesh->mvert;
-   orig_medge = mesh->medge;
-   orig_mloop = mesh->mloop;
-   orig_mpoly = mesh->mpoly;
+   const MVert *orig_mvert = BKE_mesh_vertices(mesh);
+   const MEdge *orig_medge = BKE_mesh_edges(mesh);
+   const MPoly *orig_mpoly = BKE_mesh_polygons(mesh);
+   const MLoop *orig_mloop = BKE_mesh_loops(mesh);
  
 +  /* These might be null. */
 +  const float *orig_vert_bweight = CustomData_get_layer(&mesh->vdata, CD_BWEIGHT);
 +  const float *orig_edge_bweight = CustomData_get_layer(&mesh->edata, CD_BWEIGHT);
 +
    uint new_verts_num = 0;
    uint new_edges_num = 0;
    uint new_loops_num = 0;



More information about the Bf-blender-cvs mailing list