[Bf-blender-cvs] [acb9e211976] refactor-mesh-position-generic: Merge branch 'refactor-mesh-selection-generic' into refactor-mesh-position-generic

Hans Goudey noreply at git.blender.org
Wed Sep 21 05:39:26 CEST 2022


Commit: acb9e211976b8e72de2b9adbf77ce9e82c1e647e
Author: Hans Goudey
Date:   Tue Sep 20 22:39:18 2022 -0500
Branches: refactor-mesh-position-generic
https://developer.blender.org/rBacb9e211976b8e72de2b9adbf77ce9e82c1e647e

Merge branch 'refactor-mesh-selection-generic' into refactor-mesh-position-generic

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



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

diff --cc source/blender/blenkernel/intern/fluid.c
index d30cc78d689,349614b93dd..7f66c2d5f33
--- a/source/blender/blenkernel/intern/fluid.c
+++ b/source/blender/blenkernel/intern/fluid.c
@@@ -1006,7 -1005,8 +1005,8 @@@ static void obstacles_from_mesh(Object 
      float *vert_vel = NULL;
      bool has_velocity = false;
  
-     me = BKE_mesh_copy_for_eval(fes->mesh, true);
+     Mesh *me = BKE_mesh_copy_for_eval(fes->mesh, false);
 -    MVert *verts = BKE_mesh_verts_for_write(me);
++    float(*positions)[3] = BKE_mesh_positions_for_write(me);
  
      int min[3], max[3], res[3];
  
@@@ -2074,10 -2070,8 +2070,8 @@@ static void emit_from_mesh
  
      /* Copy mesh for thread safety as we modify it.
       * Main issue is its VertArray being modified, then replaced and freed. */
-     Mesh *me = BKE_mesh_copy_for_eval(ffs->mesh, true);
- 
-     /* Duplicate vertices to modify. */
-     float(*positions)[3] = MEM_dupallocN(BKE_mesh_positions(me));
+     Mesh *me = BKE_mesh_copy_for_eval(ffs->mesh, false);
 -    MVert *verts = BKE_mesh_verts_for_write(me);
++    float(*positions)[3] = BKE_mesh_positions_for_write(me);
  
      const MLoop *mloop = BKE_mesh_loops(me);
      const MLoopTri *mlooptri = BKE_mesh_runtime_looptri_ensure(me);
@@@ -2102,11 -2096,12 +2096,12 @@@
  
      /* Transform mesh vertices to domain grid space for fast lookups.
       * This is valid because the mesh is copied above. */
-     float(*vert_normals)[3] = MEM_dupallocN(BKE_mesh_vertex_normals_ensure(me));
+     BKE_mesh_vertex_normals_ensure(me);
+     float(*vert_normals)[3] = BKE_mesh_vertex_normals_for_write(me);
      for (i = 0; i < numverts; i++) {
        /* Vertex position. */
 -      mul_m4_v3(flow_ob->obmat, verts[i].co);
 -      manta_pos_to_cell(fds, verts[i].co);
 +      mul_m4_v3(flow_ob->obmat, positions[i]);
 +      manta_pos_to_cell(fds, positions[i]);
  
        /* Vertex normal. */
        mul_mat3_m4_v3(flow_ob->obmat, vert_normals[i]);
diff --cc source/blender/bmesh/intern/bmesh_mesh_convert.cc
index 780430b91d5,7164b837451..f8eddab11cf
--- a/source/blender/bmesh/intern/bmesh_mesh_convert.cc
+++ b/source/blender/bmesh/intern/bmesh_mesh_convert.cc
@@@ -1006,30 -1005,14 +1006,15 @@@ void BM_mesh_bm_to_me(Main *bmain, BMes
      CustomData_copy_mesh_to_bmesh(&bm->pdata, &me->pdata, mask.pmask, CD_SET_DEFAULT, me->totpoly);
    }
  
-   MutableSpan<float3> positions;
-   MutableSpan<MEdge> medge;
-   MutableSpan<MPoly> mpoly;
-   MutableSpan<MLoop> mloop;
-   if (me->totvert > 0) {
-     positions = {static_cast<float3 *>(CustomData_add_layer_named(
-                      &me->vdata, CD_PROP_FLOAT3, CD_CONSTRUCT, nullptr, me->totvert, "position")),
-                  me->totvert};
-   }
-   if (me->totedge > 0) {
-     medge = {static_cast<MEdge *>(
-                  CustomData_add_layer(&me->edata, CD_MEDGE, CD_SET_DEFAULT, nullptr, me->totedge)),
-              me->totedge};
-   }
-   if (me->totpoly > 0) {
-     mpoly = {static_cast<MPoly *>(
-                  CustomData_add_layer(&me->pdata, CD_MPOLY, CD_SET_DEFAULT, nullptr, me->totpoly)),
-              me->totpoly};
-   }
-   if (me->totloop > 0) {
-     mloop = {static_cast<MLoop *>(
-                  CustomData_add_layer(&me->ldata, CD_MLOOP, CD_SET_DEFAULT, nullptr, me->totloop)),
-              me->totloop};
-   }
 -  CustomData_add_layer(&me->vdata, CD_MVERT, CD_SET_DEFAULT, nullptr, me->totvert);
++  CustomData_add_layer_named(
++      &me->vdata, CD_PROP_FLOAT3, CD_CONSTRUCT, nullptr, me->totvert, "position");
+   CustomData_add_layer(&me->edata, CD_MEDGE, CD_SET_DEFAULT, nullptr, me->totedge);
+   CustomData_add_layer(&me->ldata, CD_MLOOP, CD_SET_DEFAULT, nullptr, me->totloop);
+   CustomData_add_layer(&me->pdata, CD_MPOLY, CD_SET_DEFAULT, nullptr, me->totpoly);
 -  MutableSpan<MVert> mvert = me->verts_for_write();
++  MutableSpan<float3> positions = me->positions_for_write();
+   MutableSpan<MEdge> medge = me->edges_for_write();
+   MutableSpan<MPoly> mpoly = me->polys_for_write();
+   MutableSpan<MLoop> mloop = me->loops_for_write();
  
    bool need_selection_vert = false;
    bool need_selection_edge = false;



More information about the Bf-blender-cvs mailing list