[Bf-blender-cvs] [1e193a0b564] blender-v2.92-release: Fix T84757: feedback loop with when modifying vertex group with nodes

Jacques Lucke noreply at git.blender.org
Sat Jan 16 15:25:57 CET 2021


Commit: 1e193a0b564c72c006203a1e349269e4bb004d0e
Author: Jacques Lucke
Date:   Sat Jan 16 15:24:22 2021 +0100
Branches: blender-v2.92-release
https://developer.blender.org/rB1e193a0b564c72c006203a1e349269e4bb004d0e

Fix T84757: feedback loop with when modifying vertex group with nodes

The issue was that the mesh shared its vertex weights with the
original mesh (to reduce memory consumption). The solution is
to make a local copy of the vertex weights in this case.

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

M	source/blender/blenkernel/intern/attribute_access.cc

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

diff --git a/source/blender/blenkernel/intern/attribute_access.cc b/source/blender/blenkernel/intern/attribute_access.cc
index a7939beae90..2e1094364fd 100644
--- a/source/blender/blenkernel/intern/attribute_access.cc
+++ b/source/blender/blenkernel/intern/attribute_access.cc
@@ -1191,6 +1191,11 @@ WriteAttributePtr MeshComponent::attribute_try_get_for_write(const StringRef att
     if (mesh_->dvert == nullptr) {
       BKE_object_defgroup_data_create(&mesh_->id);
     }
+    else {
+      /* Copy the data layer if it is shared with some other mesh. */
+      mesh_->dvert = (MDeformVert *)CustomData_duplicate_referenced_layer(
+          &mesh_->vdata, CD_MDEFORMVERT, mesh_->totvert);
+    }
     return std::make_unique<blender::bke::VertexWeightWriteAttribute>(
         mesh_->dvert, mesh_->totvert, vertex_group_index);
   }



More information about the Bf-blender-cvs mailing list