0. OpenGL Coordinate systems


OpenGL에서는 3D 물체와 3D 공간에 대한 관계를 homogenous coordinate system으로 표현한다. 우리가 어떤 물체를 바라볼 때, 하나의 시각에서 본 모습과 다른 위치에서 다른 시각으로 본 모습과는 다른 모습을 보일텐데, OpenGL에서는 이 원리를 우리가 정확히 이해해야지 3D 물체를 바라보면 현실적인 시각을 잘 표현할 수 있다.

이 Homogenous coordinate system 안에서의 공간적인 관계, 즉 3D 물체의 위치, 회전, 스케일링 등을 우리는 하나의 homogenous matrix로 표현할 수 있다. 이 matrix를 계산하기 위해서 OpenGL은 projection matrix, view matrix, model matrix라는 개념을 사용하고 있고, 해당 matrix를 계산하기 위해서는 matrix = projection * view * model 이라는 식을 이용한다.

Projection / View / Model Matrix에 관한 설명은 아래 링크를 따라가면 좋다.

Projection / View / Model Matrix 이해하기

1. Perspective projection vs Orthographic projection


https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a2df8a22-9098-480b-9d95-ef57f0f62fcd/Untitled.png

Projection을 수행하는데에는 두가지 방법이 있다.

우리가 3차원 공간을 보듯이 원근감을 살리는 perspective projection 방식과, 3차원→2차원 직접투영을 이용하는 orthographic projection이 있다. 우리가 눈으로 사물과 공간을 인식하는 방식은 perspective projection이기 때문에 이 방법을 많이 사용한다. Orthographic projection은 보통 3D 모델의 도면을 그리거나 물체를 측량하는데에 많이 사용한다.

glm::perspective는 이 perspective projection에 필요한 projection matrix를 구해주는 함수이다. 해당 함수는 OpenGL Mathematics Library (이하 GLM) 에 포함되어있다.

2. glm::perspective 사용방법