Commit: e608dca4949dc45edfeb29757637db18fb0426d8
Author: Hans Goudey
Date: Wed Dec 7 13:41:12 2022 -0600
Branches: refactor-mesh-corners-generic
https://developer.blender.org/rBe608dca4949dc45edfeb29757637db18fb0426d8
Fix BMesh mesh conversion
===================================================================
M source/blender/blenkernel/intern/customdata.cc
M source/blender/blenkernel/intern/mesh.cc
M source/blender/bmesh/intern/bmesh_mesh_convert.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/customdata.cc
b/source/blender/blenkernel/intern/customdata.cc
index cca4a126e11..7a9d44f022d 100644
--- a/source/blender/blenkernel/intern/customdata.cc
+++ b/source/blender/blenkernel/intern/customdata.cc
@@ -2380,7 +2380,7 @@ static bool attribute_stored_in_bmesh_flag(const
StringRef name)
".select_vert",
".select_edge",
".select_poly",
- "material_index"
+ "material_index",
".corner_vert",
".corner_edge");
}
diff --git a/source/blender/blenkernel/intern/mesh.cc
b/source/blender/blenkernel/intern/mesh.cc
index 9f3b476ac79..24d55d4d9ca 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -734,7 +734,7 @@ const char *BKE_mesh_cmp(Mesh *me1, Mesh *me2, float thresh)
bool BKE_mesh_attribute_required(const char *name)
{
- return StringRef(name) == "position";
+ return ELEM(StringRef(name), "position", ".corner_vert", ".corner_edge");
}
void BKE_mesh_ensure_skin_customdata(Mesh *me)
diff --git a/source/blender/bmesh/intern/bmesh_mesh_convert.cc
b/source/blender/bmesh/intern/bmesh_mesh_convert.cc
index c43b51518c3..5a4c63429c8 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_convert.cc
+++ b/source/blender/bmesh/intern/bmesh_mesh_convert.cc
@@ -854,6 +854,8 @@ static void assert_bmesh_has_no_mesh_only_attributes(const
BMesh &bm)
{
(void)bm; /* Unused in the release builds. */
BLI_assert(CustomData_get_layer_named(&bm.vdata, CD_PROP_FLOAT3, "position")
== nullptr);
+ BLI_assert(CustomData_get_layer_named(&bm.ldata, CD_PROP_FLOAT3,
".corner_vert") == nullptr);
+ BLI_assert(CustomData_get_layer_named(&bm.ldata, CD_PROP_FLOAT3,
".corner_edge") == nullptr);
/* The "hide" attributes are stored as flags on #BMesh. */
BLI_assert(CustomData_get_layer_named(&bm.vdata, CD_PROP_BOOL, ".hide_vert")
== nullptr);
@@ -1223,10 +1225,14 @@ void BM_mesh_bm_to_me_for_eval(BMesh *bm, Mesh *me,
const CustomData_MeshMasks *
&me->vdata, CD_PROP_FLOAT3, CD_CONSTRUCT, nullptr, bm->totvert,
"position");
}
CustomData_add_layer(&me->edata, CD_MEDGE, CD_SET_DEFAULT, nullptr,
bm->totedge);
- CustomData_add_layer_named(
- &me->ldata, CD_PROP_INT32, CD_SET_DEFAULT, nullptr, bm->totloop,
".corner_vert");
- CustomData_add_layer_named(
- &me->ldata, CD_PROP_INT32, CD_SET_DEFAULT, nullptr, bm->totloop,
".corner_edge");
+ if (!CustomData_get_layer_named(&me->ldata, CD_PROP_INT32, ".corner_vert")) {
+ CustomData_add_layer_named(
+ &me->ldata, CD_PROP_INT32, CD_SET_DEFAULT, nullptr, bm->totloop,
".corner_vert");
+ }
+ if (!CustomData_get_layer_named(&me->ldata, CD_PROP_INT32, ".corner_edge")) {
+ CustomData_add_layer_named(
+ &me->ldata, CD_PROP_INT32, CD_SET_DEFAULT, nullptr, bm->totloop,
".corner_edge");
+ }
CustomData_add_layer(&me->pdata, CD_MPOLY, CD_SET_DEFAULT, nullptr,
bm->totface);
/* Don't process shape-keys, we only feed them through the modifier stack as
needed,
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs