컴퓨터그래픽스 13. 왜 NDC 좌표계가 필요할까
컴퓨터그래픽스 13. 왜 NDC 좌표계가 필요할까
왜 NDC 좌표계가 필요한가?
만약 클립 공간에서 바로 스크린 공간으로 넘어간다고 가정해보자. 뷰포트 변환을 어떻게 할 진 모르겠지만, 비율이 같아도 해상도가 다르다면 다른 화면을 보게 된다.
그것을 해결하기 위해 표준화된 좌표계를 만든다. 이를 Normalized coordinate라고 한다. OpenGL의 normalized coordinate는 가운데가 \([0,0]\)이고, 좌측 하단이 \([-1,-1]\)이고, 우측 상단이 \([1,1]\)이다.
일단 한번 표준 공간으로 옮겨 놓고, 해상도로 변환을 수행해주면 같은 비율에 한에선 같은 화면을 볼 수 있게 된다. 다른 비율이면, 화면이 찌그러지지 않게 어떤 조치를 취해야 할 것이다.
NDC 좌표에서 스크린 좌표로 어떻게 바꾸는가?
OpenGL NDC Coordinate 기준 좌표 \((n_{x}, n_{y})\)를 스크린 좌표 \((s_{x}, s_{y})\)로 바꾸는 식은 다음과 같다.
\[s_{x} = \frac{(n_{x}+1) \cdot w}{2}\] \[s_{y} = \frac{(-n_{y} + 1) \cdot h}{2}\]y축의 경우 방향이 반대이므로, 뒤집고 1을 더한다.