[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