[Bf-blender-cvs] [2e8fb95e7c6] master: SubDiv: Incorrect normals loose edges

Jeroen Bakker noreply at git.blender.org
Thu Mar 26 14:35:50 CET 2020


Commit: 2e8fb95e7c69274944ecb44b2b51f8b4307f88ae
Author: Jeroen Bakker
Date:   Thu Mar 26 14:32:13 2020 +0100
Branches: master
https://developer.blender.org/rB2e8fb95e7c69274944ecb44b2b51f8b4307f88ae

SubDiv: Incorrect normals loose edges

The normals of loose edges can be non uniform as they aren't normalized.
Checked with what happens with edit loose edges and synchronized the
implementation.

Reviewed By: Brecht van Lommel

Differential Revision: https://developer.blender.org/D7127

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

M	source/blender/blenkernel/intern/subdiv_mesh.c

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

diff --git a/source/blender/blenkernel/intern/subdiv_mesh.c b/source/blender/blenkernel/intern/subdiv_mesh.c
index 0bd6fc259c6..cdb766f2507 100644
--- a/source/blender/blenkernel/intern/subdiv_mesh.c
+++ b/source/blender/blenkernel/intern/subdiv_mesh.c
@@ -1120,8 +1120,11 @@ static void subdiv_mesh_vertex_of_loose_edge(const struct SubdivForeachContext *
    * it. Maybe even using vertex varying attributes. */
   subdiv_vertex->bweight = 0.0f;
   /* Reset normal, initialize it in a similar way as edit mode does for a
-   * vertices adjacent to a loose edges. */
-  normal_float_to_short_v3(subdiv_vertex->no, subdiv_vertex->co);
+   * vertices adjacent to a loose edges.
+   * See `mesh_evaluate#mesh_calc_normals_vert_fallback` */
+  float no[3];
+  normalize_v3_v3(no, subdiv_vertex->co);
+  normal_float_to_short_v3(subdiv_vertex->no, no);
 }
 
 /* =============================================================================



More information about the Bf-blender-cvs mailing list