[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