[Bf-blender-cvs] [fca94c5e0d6] master: Fix: Incorrect dirty normal tag after mesh translation

Hans Goudey noreply at git.blender.org
Fri Jun 24 22:48:57 CEST 2022


Commit: fca94c5e0d6f8a98cb5fd3424141f5615f2445b2
Author: Hans Goudey
Date:   Fri Jun 24 15:48:48 2022 -0500
Branches: master
https://developer.blender.org/rBfca94c5e0d6f8a98cb5fd3424141f5615f2445b2

Fix: Incorrect dirty normal tag after mesh translation

Mistake in 54182e4925de4ee. The dirty flag was always cleared,
but we only want to clear it after translating a mesh if it normals
were already non-dirty.

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

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

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

diff --git a/source/blender/blenkernel/intern/mesh_runtime.cc b/source/blender/blenkernel/intern/mesh_runtime.cc
index d4bc47d5fd4..4521c519f45 100644
--- a/source/blender/blenkernel/intern/mesh_runtime.cc
+++ b/source/blender/blenkernel/intern/mesh_runtime.cc
@@ -268,10 +268,17 @@ void BKE_mesh_tag_coords_changed(Mesh *mesh)
 
 void BKE_mesh_tag_coords_changed_uniformly(Mesh *mesh)
 {
+  const bool vert_normals_were_dirty = BKE_mesh_vertex_normals_are_dirty(mesh);
+  const bool poly_normals_were_dirty = BKE_mesh_poly_normals_are_dirty(mesh);
+
   BKE_mesh_tag_coords_changed(mesh);
   /* The normals didn't change, since all vertices moved by the same amount. */
-  BKE_mesh_poly_normals_clear_dirty(mesh);
-  BKE_mesh_vertex_normals_clear_dirty(mesh);
+  if (!vert_normals_were_dirty) {
+    BKE_mesh_poly_normals_clear_dirty(mesh);
+  }
+  if (!poly_normals_were_dirty) {
+    BKE_mesh_vertex_normals_clear_dirty(mesh);
+  }
 }
 
 /** \} */



More information about the Bf-blender-cvs mailing list