General (Single) Perspective Projection matrix
Projection matrix란 world 좌표계에 놓여 있는 물체를 특정 view plane을 통해 보았을 때
어떻게 보일 것인지 결정해주는 매트릭스이다.
이 Projection 매트릭스에 곱하는 것은 물체를 구성하는 점들의 world 좌표이고, 결과물은
plane을 하나의 좌표 평면으로 간주할 때 얻을 수 있는 평면 좌표이다.
Single Perspective Projection 은 one point Perspective를 위해 구성된 Camera를 바탕으로 보여지는 (Project 되는) 것을 말한다. 이때의 가장 기본적 카메라 구성은 Canonical Configuration이라고 하며,
이 배치 방법은 view plane에서 나오는 방향 (Center of Projection으로 향하는 방향)이 world의 z축, 카메라 up vector는 y축, 카메라의 오른쪽은 x축이 된다(서로 수직). 그리고 카메라의 위치를 원점으로 가정한다.
* Plane의 중점 혹은 흔히 말하는 카메라의 위치는 View Reference Point (VRP)라고 부른다.
*Object에서 View Plane을 거쳐 한점으로 모이는 one point perspective view 에서 그 한 점을 Center of Projection (COP)라고 부른다.
General Perspective는 바로 이 normal 과 up vector, 오른쪽 방향이 z,y,x 축이 아닌 임의의 벡터로 주어진 상황을 말한다.
Single Perspective Projection Matrix는 유도하기 쉽다. General Perspective Matrix를 유도하기 위해
이 Single Perspective Projection Matrix P_canonical를 이용할 수 있는데,
만일 임의로 주어진 normal과 up vector, 왼쪽 방향이 각각 normalized 된 벡터 n,v,u 이라고 하자. (UVN 시스템이라고 부른다.)
matrix M을 아래 처럼 정의 하자.
u v n 0
0 0 0 1
VRP 로 부터 World 의 origin 으로 이동하는 Translation matrix 를 T라고 하자.
그러면 P_general = P_canonical * M_inverse * T 로 유도 된다.
이제 P_general 행렬 뒤에 물체들을 구성하는 좌표를 입력해주면 projection 된 좌표를 얻게 된다.
VRP에서 원점으로 이동 후 uvn좌표계가 canonical 좌표계로 바뀌고, canonical 좌표계의 Projection에 의해서 Projection이 수행됨.