[Bf-blender-cvs] [a58670813f2] refactor-mesh-position-generic: Merge branch 'master' into refactor-mesh-position-generic
Hans Goudey
noreply at git.blender.org
Fri Sep 23 20:27:35 CEST 2022
Commit: a58670813f2124ead4e109efcc58175200797aa1
Author: Hans Goudey
Date: Fri Sep 23 11:18:22 2022 -0500
Branches: refactor-mesh-position-generic
https://developer.blender.org/rBa58670813f2124ead4e109efcc58175200797aa1
Merge branch 'master' into refactor-mesh-position-generic
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/mesh_legacy_convert.cc
index 795dc693738,506501ead2a..b2a288cf365
--- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
@@@ -1262,53 -1257,3 +1262,53 @@@ void BKE_mesh_legacy_convert_flags_to_s
}
/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name Vertex and Position Conversion
+ * \{ */
+
+MVert *BKE_mesh_legacy_convert_positions_to_verts(
+ Mesh *mesh,
+ blender::ResourceScope &temp_arrays_for_convert,
+ blender::Vector<CustomDataLayer, 16> &vert_layers_to_write)
+{
+ using namespace blender;
+
+ const Span<float3> positions = mesh->positions();
+
+ CustomDataLayer mvert_layer{};
+ mvert_layer.type = CD_MVERT;
+ MutableSpan<MVert> verts = temp_arrays_for_convert.construct<Array<MVert>>(mesh->totvert);
+ mvert_layer.data = verts.data();
+
+ threading::parallel_for(verts.index_range(), 2048, [&](IndexRange range) {
+ for (const int i : range) {
- copy_v3_v3(verts[i].co, positions[i]);
++ copy_v3_v3(verts[i].co_legacy, positions[i]);
+ }
+ });
+
+ vert_layers_to_write.append(mvert_layer);
+ return verts.data();
+}
+
+void BKE_mesh_legacy_convert_verts_to_positions(Mesh *mesh)
+{
+ using namespace blender;
+ using namespace blender::bke;
+
+ const Span<MVert> verts(static_cast<MVert *>(CustomData_get_layer(&mesh->vdata, CD_MVERT)),
+ mesh->totvert);
+ MutableSpan<float3> positions(
+ static_cast<float3 *>(CustomData_add_layer_named(
+ &mesh->vdata, CD_PROP_FLOAT3, CD_CONSTRUCT, nullptr, mesh->totvert, "position")),
+ mesh->totvert);
+ threading::parallel_for(verts.index_range(), 2048, [&](IndexRange range) {
+ for (const int i : range) {
- positions[i] = verts[i].co;
++ positions[i] = verts[i].co_legacy;
+ }
+ });
+
+ CustomData_free_layers(&mesh->vdata, CD_MVERT, mesh->totvert);
+}
+
+/** \} */
diff --cc source/blender/blenkernel/intern/mesh_runtime.cc
index bf841ccd336,782657428f5..e8076cb9947
--- a/source/blender/blenkernel/intern/mesh_runtime.cc
+++ b/source/blender/blenkernel/intern/mesh_runtime.cc
@@@ -155,10 -154,10 +155,10 @@@ void BKE_mesh_runtime_looptri_recalc(Me
const Span<MPoly> polys = mesh->polys();
const Span<MLoop> loops = mesh->loops();
- if (BKE_mesh_poly_normals_are_dirty(mesh)) {
+ if (!BKE_mesh_poly_normals_are_dirty(mesh)) {
BKE_mesh_recalc_looptri_with_normals(loops.data(),
polys.data(),
- verts.data(),
+ reinterpret_cast<const float(*)[3]>(positions.data()),
mesh->totloop,
mesh->totpoly,
mesh->runtime.looptris.array_wip,
diff --cc source/blender/blenloader/intern/versioning_250.c
index 5a342ef3a0d,9e5ef41892a..2ebb7563ab3
--- a/source/blender/blenloader/intern/versioning_250.c
+++ b/source/blender/blenloader/intern/versioning_250.c
@@@ -996,9 -996,9 +996,9 @@@ void blo_do_versions_250(FileData *fd,
if ((key = blo_do_versions_newlibadr(fd, lib, me->key)) && key->refkey) {
data = key->refkey->data;
tot = MIN2(me->totvert, key->refkey->totelem);
- MVert *verts = BKE_mesh_verts_for_write(me);
+ MVert *verts = (MVert *)CustomData_get_layer(&me->vdata, CD_MVERT);
for (a = 0; a < tot; a++, data += 3) {
-- copy_v3_v3(verts[a].co, data);
++ copy_v3_v3(verts[a].co_legacy, data);
}
}
}
diff --cc source/blender/editors/object/object_vgroup.cc
index e10cb88b4ad,44fea0b32f0..9a209cf9722
--- a/source/blender/editors/object/object_vgroup.cc
+++ b/source/blender/editors/object/object_vgroup.cc
@@@ -1531,15 -1531,15 +1531,14 @@@ static void vgroup_fix
int i;
Mesh *me = static_cast<Mesh *>(ob->data);
- float3 *positions = me->positions_for_write().data();
- MVert *mvert = me->verts_for_write().data();
if (!(me->editflag & ME_EDIT_PAINT_VERT_SEL)) {
return;
}
const bke::AttributeAccessor attributes = me->attributes();
- const VArray<bool> selection_vert = attributes.lookup_or_default<bool>(
- ".selection_vert", ATTR_DOMAIN_POINT, false);
+ const VArray<bool> select_vert = attributes.lookup_or_default<bool>(
+ ".select_vert", ATTR_DOMAIN_POINT, false);
- for (i = 0; i < me->totvert && mvert; i++, mvert++) {
+ for (i = 0; i < me->totvert; i++) {
- if (selection_vert[i]) {
+ if (select_vert[i]) {
blender::Vector<int> verts = getSurroundingVerts(me, i);
const int count = verts.size();
if (!verts.is_empty()) {
diff --cc source/blender/makesdna/DNA_meshdata_types.h
index a769b0f77d0,52e398ffff5..add03d87a0f
--- a/source/blender/makesdna/DNA_meshdata_types.h
+++ b/source/blender/makesdna/DNA_meshdata_types.h
@@@ -19,11 -19,12 +19,11 @@@ extern "C"
* \{ */
/**
- * Mesh Vertices.
- *
- * Typically accessed from #Mesh.mvert
+ * Deprecated mesh vertex data structure. Now stored with generic attributes.
*/
+#ifdef DNA_DEPRECATED_ALLOW
typedef struct MVert {
- float co[3] DNA_DEPRECATED;
- float co[3];
++ float co_legacy[3];
/**
* Deprecated flag for storing hide status and selection, which are now stored in separate
* generic attributes. Kept for file read and write.
More information about the Bf-blender-cvs
mailing list