앞서 말했다 시피 Projection Matrix 를 이용해 우리는
3D 좌표를 2D 스크린에 투영하는 것이다.
조금더 디테일하게 가보자.
우리는 Projection Matrix 을 이용한 계산으로
3D (x,y,z) 좌표들을
NDC(Normalized Device Coordinate) 로 치환한다.
간단히 말해서 Normalized 된 공간안에 좌표다.
Normalized Space 는 x,y,z 모든 좌표가 -1.0 ~ 1.0 사이이다.
x 의 최소 -1.0, x 의 최대 1.0
y 의 최소 -1.0, y 의 최대 1.0
z 의 최소 -1.0, z 의 최대 1.0
---> 쉽게말해서 우리화면에서 보이는 공간이다. 즉

저 프로젝터 선 바깥으로가면 -1 보다 작거나 1보다 큰 좌표로 계산이되고 우리 모니터에선 렌더링이 되지 않는것.
어떤 크기의 스크린이든
x: 스크린의 왼쪽은 -1 이고 오른쪽은 1 이다.
y: 스크린의 아래쪽은 -1 이고 위쪽은 1 이다.
z 내가 앞으로 가면 -1 뒤로가면 1 이다. (반대다 헷깔리지 않기.)
근데 생각해보자. 모니터는 대부분 직사각형이다.
1980x1080 같이 말이다.
이걸
1980 도 -1 -> 1 로
1080 도 -1 -> 1 로 계산해주는게 Projection 이라고 생각하면 된다.
* 아니 그냥 비율대로 곱해버리면 쉬울것 같은데 이걸 굳이 이렇게 함수까지 써가면서 해야하나 ?
(2D) Orthographics 에선 쉬울수 있지만
(3D) Perspective Projection 에선 굉장히 어렵다 그래서 이 계산이 필요하다.
원근법을 생각하면서 계산해야 하기 때문이다.
'개인공부 > C++ Graphics' 카테고리의 다른 글
| OpenGL #15 Translation, Transformation, Transpose (0) | 2025.01.17 |
|---|---|
| OpenGL #14 Projection - MVP(3/3) (0) | 2025.01.17 |
| OpenGL #12 Projection (1/3) (0) | 2025.01.16 |
| OpenGL #11 Blending (0) | 2025.01.14 |
| OpenGL #10 Texture (1) | 2025.01.14 |