[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