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과 관련된 내용이 있었다.
역시, Real-Time Rendering은 아무나 보는것이 아니었나보다.
이런 내용이 무려 p.55에 등장한다. 까만것은 글씨요 하얀것은 종이 였으리라... oTL
이제 다시 보니, 어렴풋이 뭔가 그려지는 정도? 그러나 아직 멀었다. : )
생소한 용어들이란 바로 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 |