만약 위의 첫번째 그림처럼 원을 표현하는 정점들이 있고 그 위에 법선벡터가 빨간색 화살표처럼 정의되었다고 치자.
가운데 그림처럼 우리가 원과 법선벡터를 y축기준으로 크기를 1/2을 줄이는 변환을 했다고 하자.
변환을했을때 우리가 원하는 법선벡터의 모양은 오른쪽과 같을것이다.
하지만 우리가 변환을 행했을때 법선벡터가 가운데처럼 될 것이다.
분명 표면의 수직인 법선벡터여야 하는데 원과 같이 방향도 1/2크기가 되었다.
우리가 원하는 것은 방향의 크기가 2배가 되는것이다.
어짜피 PRS에서 회전은 그대로 먹이고 크기만 Inverse하면 되는것이다.
그렇다면 그 행렬을 만들어보자
일단 모델행렬을 M으로 보고 R을 회전행렬 S로 본다
그렇다면 M은
이럴것이고, 우리가 원하는 행렬은
가운데 스케일만 다른 것일 것이다. 그렇다면 이 식을 조금 변형해보자. 난 행렬을 잘 모르지만 회전행렬은
자신의 역행렬에 전치를시킨것과 같다고 한다.
그러니까 걍 R = R^-1과 같다는것.
그리고 스케일행렬에 전치를 해봤자 변하지 않기 때문에
이것을 그대로 식에 적용하면 다음과 같은 식이 된다 그리고 다 전치니까 괄호로 묶고 T해주면
잘보니 안에 RSR가 원래 M과 똑같다. 그러므로 안에 RSR을 치환해주면
원래 모델행렬에 역행렬의 전치가 된다.
이제 우리는 정점에는 M을 곱해주면 되고 법선벡터에는 M의 역행렬의 전치를 곱해주면 되는것이다.
이제 우리는 정점에는 M을 곱해주면 되고 법선벡터에는 M의 역행렬의 전치를 곱해주면 되는것이다.
참조
http://arcsynthesis.org/gltut/Illumination/Tut09%20Normal%20Transformation.html