[Bf-blender-cvs] [53daf2a0dbc] geometry-nodes-mesh-primitives: Use 3x3 matrix for normal transformation

Hans Goudey noreply at git.blender.org
Thu Mar 11 23:15:12 CET 2021


Commit: 53daf2a0dbc421798cd65147828f30583d883d9b
Author: Hans Goudey
Date:   Tue Mar 9 09:18:35 2021 -0500
Branches: geometry-nodes-mesh-primitives
https://developer.blender.org/rB53daf2a0dbc421798cd65147828f30583d883d9b

Use 3x3 matrix for normal transformation

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

M	source/blender/nodes/geometry/nodes/node_geo_transform.cc

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_transform.cc b/source/blender/nodes/geometry/nodes/node_geo_transform.cc
index 64cab50faf9..341bb4c0472 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_transform.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_transform.cc
@@ -75,11 +75,16 @@ void transform_mesh(Mesh *mesh,
 
     /* https://www.scratchapixel.com/lessons/mathematics-physics-for-computer-graphics/
      * geometry/transforming-normals */
-    const float4x4 normal_matrix = matrix.inverted().transposed();
+    float rot[3][3];
+    eul_to_mat3(rot, rotation);
+    if (!invert_m3(rot)) {
+      return;
+    }
+    transpose_m3(rot);
     for (MVert &vert : MutableSpan(mesh->mvert, mesh->totvert)) {
       float3 normal;
       normal_short_to_float_v3(normal, vert.no);
-      normal = normal_matrix * normal;
+      mul_m3_v3(rot, normal);
       normal_float_to_short_v3(vert.no, normal);
     }
   }



More information about the Bf-blender-cvs mailing list