3D그래픽2011. 9. 2. 14:44
Per-Fragment Lighting을 구현하려고 이것 저것 자료를 보다가, 생소한 용어들을 만나게 되어 좀 찾아 보았다.
생소한 용어들이란 바로 binormal &  tangent vector 이다.

* Binormal vector - normal에 수직인 vector (이것은 dot product를 이용한 방정식으로 구할 수 있을 듯)
* Tangent vector - normal과 binormal에 동시에 수직인 vector (달리 말하면 normal과 binormal이 이루는 평면에 수직인 vector 또는 그 평면의 normal, 이것은 normal과 binormal의 cross product로 구할 수 있다)

이와 관련해서 다시 책(Real-time Rendering)에서 찾아보니, 책의 초반부에 Normal Transform과 관련된 내용이 있었다.

법선벡터들은 기하구조 변환에 사용된 특정 행렬의 역행렬의 전치 행렬에 의해서 변환되어야만 한다. 그러므로 기하 구조를 변환하는 데 사용한 행렬이 M 이라면 그 기하 구조의 법선 벡터를 변환하는 데는 다음과 같은 행렬 N을 사용하여야 한다.

N = (M^{-1})^{T}

참고로 직교 행렬의 역행렬은 자신의 전치 행렬이므로 그 행렬 자체가 법선 벡터를 변환하는데 바로 사용될 수 있다.
원래의 회전 행렬이 주어지면 두 개의 행렬 전치는 소거된다.
더욱이 평행 이동은 벡터 방향에 영향을 주지 않으므로 평행 이동을 몇 번 하든 법선 벡터에는 영향을 주지 않는다.

역시, Real-Time Rendering은 아무나 보는것이 아니었나보다.
이런 내용이 무려 p.55에 등장한다. 까만것은 글씨요 하얀것은 종이 였으리라... oTL
이제 다시 보니, 어렴풋이 뭔가 그려지는 정도? 그러나 아직 멀었다. : )

'3D그래픽' 카테고리의 다른 글

Transforms (변환 행렬)  (0) 2011.09.06
Goraud shading vs. Phong shading  (0) 2011.09.02
COLLADA (3D Asset Exchange Schema)  (0) 2011.08.31
OpenGL ES 2.0 Q&A by myself  (5) 2011.07.12
OpenGL ES 2.0 on Android 2.2  (0) 2011.06.29
Posted by 세월의돌