본문 바로가기

개인공부/C++ Graphics

OpenGL #13 Projection (2/3)

앞서 말했다 시피 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