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

Hans Goudey noreply at git.blender.org
Wed Sep 7 20:15:51 CEST 2022


Commit: acbe1e3774ace83d82fda0d39303a1c0e16f81f9
Author: Hans Goudey
Date:   Wed Sep 7 11:56:12 2022 -0500
Branches: refactor-mesh-bevel-weight-generic
https://developer.blender.org/rBacbe1e3774ace83d82fda0d39303a1c0e16f81f9

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

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



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

diff --cc source/blender/blenkernel/intern/mesh.cc
index caa29c559c0,1bf068fcd45..707518c0c34
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@@ -250,8 -251,7 +251,8 @@@ static void mesh_blend_write(BlendWrite
      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);
++      BKE_mesh_legacy_bevel_weight_from_layers(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"});
  
@@@ -345,6 -345,7 +346,8 @@@ static void mesh_blend_read_data(BlendD
  
    if (!BLO_read_data_is_undo(reader)) {
      BKE_mesh_legacy_convert_flags_to_hide_layers(mesh);
+     BKE_mesh_legacy_convert_mpoly_to_material_indices(mesh);
++    BKE_mesh_legacy_bevel_weight_to_layers(mesh);
    }
  
    /* We don't expect to load normals from files, since they are derived data. */
diff --cc source/blender/blenkernel/intern/mesh_legacy_convert.cc
index 6e615a6c88d,39b1ffb7cf4..31ae8478257
--- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
@@@ -917,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> verts = mesh->vertices_for_write();
++  MutableSpan<MVert> verts = mesh->verts_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 : 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 : verts.index_range()) {
 +      verts[i].bweight = 0;
 +    }
 +  }
 +  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> verts = mesh->vertices();
++  const Span<MVert> verts = mesh->verts();
 +  if (mesh->cd_flag & ME_CDFLAG_VERT_BWEIGHT) {
 +    float *weights = static_cast<float *>(
 +        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->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/bmesh/intern/bmesh_mesh_convert.cc
index ef621f77f37,fe9369fd652..8092fe55cc0
--- a/source/blender/bmesh/intern/bmesh_mesh_convert.cc
+++ b/source/blender/bmesh/intern/bmesh_mesh_convert.cc
@@@ -1020,8 -1073,11 +1030,7 @@@ void BM_mesh_bm_to_me(Main *bmain, BMes
      /* Copy over custom-data. */
      CustomData_from_bmesh_block(&bm->vdata, &me->vdata, v->head.data, i);
  
 -    if (cd_vert_bweight_offset != -1) {
 -      mvert[i].bweight = BM_ELEM_CD_GET_FLOAT_AS_UCHAR(v, cd_vert_bweight_offset);
 -    }
 -
      i++;
-     mvert++;
  
      BM_CHECK_ELEMENT(v);
    }
@@@ -1043,14 -1098,16 +1051,13 @@@
      /* Copy over custom-data. */
      CustomData_from_bmesh_block(&bm->edata, &me->edata, e->head.data, i);
  
-     bmesh_quick_edgedraw_flag(med, e);
+     bmesh_quick_edgedraw_flag(&medge[i], e);
  
      if (cd_edge_crease_offset != -1) {
-       med->crease = BM_ELEM_CD_GET_FLOAT_AS_UCHAR(e, cd_edge_crease_offset);
+       medge[i].crease = BM_ELEM_CD_GET_FLOAT_AS_UCHAR(e, cd_edge_crease_offset);
      }
 -    if (cd_edge_bweight_offset != -1) {
 -      medge[i].bweight = BM_ELEM_CD_GET_FLOAT_AS_UCHAR(e, cd_edge_bweight_offset);
 -    }
  
      i++;
-     med++;
      BM_CHECK_ELEMENT(e);
    }
    bm->elem_index_dirty &= ~BM_EDGE;
diff --cc source/blender/modifiers/intern/MOD_solidify_extrude.c
index ad2534db437,343aa3920d9..1456254c31f
--- a/source/blender/modifiers/intern/MOD_solidify_extrude.c
+++ b/source/blender/modifiers/intern/MOD_solidify_extrude.c
@@@ -335,11 -335,16 +335,11 @@@ Mesh *MOD_solidify_extrude_modifyMesh(M
                                               (int)((loops_num * stride) + newLoops),
                                               (int)((polys_num * stride) + newPolys));
  
-   MVert *mvert = BKE_mesh_vertices_for_write(result);
+   MVert *mvert = BKE_mesh_verts_for_write(result);
    MEdge *medge = BKE_mesh_edges_for_write(result);
-   MPoly *mpoly = BKE_mesh_polygons_for_write(result);
+   MPoly *mpoly = BKE_mesh_polys_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 cee565b30f4,e73df0d1c12..d3aff5c58c5
--- a/source/blender/modifiers/intern/MOD_solidify_nonmanifold.c
+++ b/source/blender/modifiers/intern/MOD_solidify_nonmanifold.c
@@@ -184,15 -184,11 +184,15 @@@ Mesh *MOD_solidify_nonmanifold_modifyMe
  
    const bool do_flat_faces = dvert && (smd->flag & MOD_SOLIDIFY_NONMANIFOLD_FLAT_FACES);
  
-   const MVert *orig_mvert = BKE_mesh_vertices(mesh);
+   const MVert *orig_mvert = BKE_mesh_verts(mesh);
    const MEdge *orig_medge = BKE_mesh_edges(mesh);
-   const MPoly *orig_mpoly = BKE_mesh_polygons(mesh);
+   const MPoly *orig_mpoly = BKE_mesh_polys(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