Graphics And Media/OpenGL

Projection by W

kahuz 2021. 7. 3. 15:30

OpenGL에서는 좌표를 표현하기 위해 ( x, y, z, w ) 를 기준으로 좌표를 표현한다.

여기서 x, y, z 는 3D 공간 상의 좌표를 의미하며 w는 좌표의 변환행렬을 위한 값으로 쓰인다.

이는 ( x, y, z, 1) 로 표현 했을 때, 즉 w가 1일 때 이동 변환, 스케일링 등에 영향을 받게 되어 공간 좌표를 뜻하게 되고 ( x, y, z, 0 ) 즉, w 가 0 일 때는 변환이나 스케일링 등에 영향을 받지 않고 방향 만을 표현하게 된다.

 

또한 w를 이용한 동차좌표계를 통해 projection divide가 가능하다는 것을 확인할 수 있다.

즉 w는 사물의 원근감을 표현하기 위해 사용될 수 있다는 것이다. ( 직교 투영을 의미 )

 

 

위 그림의 두 점 a(-2,-2) , b(2,-2) 를 보자.

GL의 동차좌표계를 적용하여 두 점의 z와 w는 0과 1로 가정하겠다 ( 2D 평면이므로 z=0)

만약 두 점을 바라보는 시각이 점점 멀어진다면 원근 표현상 두 점은 그림 상 0,2에 가까워질 것이다. 이러한 원근감을 표현하기 위해 projection by w라는 방법이 쓰인다.

 

w로 모든 좌표를 정규화하면 위치가 나오는데 이 때 w 값이 원금감을 표현하기 위한 상수로 생각해보자

만약 a와 b가 로 부터 멀어져 w가 2가 되괴 이를 정규화하나면 a'는 (-2,-1) b'는 (1,-1)이 된다. 이와 같이 projection by w는 w 값으로 현재 좌표에 대해 원금감을 표현하는 상수로 쓰는 것이다.