According to a book Physically Based Rendering: From Theory to Implementation. By Matt Pharr, Greg Humphreys (link, p. 86-87),
surface tangent vectors are transformed as common vectors, using transformation matrix M, but
surface normal vectors are transformed using .
I wonder why scaling does make a normal incorrect, but doesn't touch a tangent vector? Why are normals so special?
See the figure from the book.
I have read that such transformation for normal is needed to maintain orthogonality of the normal and tangent. But I'd like to get some intuitive explanation.
For me, the intuition would be that for rotations (and in general all transformation that can be described by an orthogonal matrix) satisfy . That means that , so for those kinds of transformations the treatment is not special at all.
A simple example with a non-orthogonal, symmetric matrix that illustrates that it is not sufficient to use to transform the normal is
Here see that you need to transform the normal using , which in the symmetric case is equal to .
Notice that this covers already quite a lot of transformations. Personally, I find that transformations that are not orthogonal and not symmetric are themselves not very intuitive, so I resort to the mathematical explanation that it is required to maintain orthogonality. Since this is the defining property of a surface normal I find this argument quite plausible. Maybe writing it out makes things a bit clearer:
So the advantage of the transformation rule from the book is that it gives you the right normal for all transformation you can think of.
Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With