learn opengl (coordinate system) 번역

r·2022년 9월 3일
0

NDC: 정규화된 디바이스 좌표계

이러한 NDC들은 주어진 레스터라이저를 스크린의 2d 좌표계로 변환한다.

  • local space
  • World space
  • View Space
  • Clip Space
  • Screen Space

  1. 오브젝트의 로컬 좌표계들은 오브젝트가 위치해 있는 좌표계이다.
  2. 그 다음으로 로컬 좌표계를 월드 좌표계로 변환한다. 월드 좌표계는 더 큰 월ㄷ드의 관점이다. 이러한 좌표계들은 월ㄷ드의 global 원점을 기준으로 상대적으로 표시됙고 다른 오브젝트들과 함께 표시된다.
  3. 그 다음으로 우리는 월드 좌표계를 view-space 좌표계로 변환하는데, 각각의 좌표계는 카메라 혹은 보는 사람의 관점에서 보여진다.
  4. 좌표계들이 view space 에 놓여져 있을 때, 우리는 이들을 clip 좌표계로 정사영 하고 싶다. clip 좌표계는 -1.0 ~1.0 범위로 이루어지고, 각 꼭짓점들이 스크린에 어떻게 나타나는지를 결정한다. perspective 정사영을 사용하고 있다면 clip-space 좌표계로 정사영하는 것은 perspective 를 추가할 수 있다.
  5. 마지막으로 clip 좌표계를 스크린 좌표계로 변환한다. 이는 우리는 viewport transform 이라고 하는데 -1.0~ 1.0 범위를 좌표계 범위로 변환하는 과정이다. 그 결과 좌표계는 raterizer 로 변환되서 frragment 로 바뀐다.

perspective projection: 원근법으로 멀리 있는 것은 작게, 가까이 있는 것은 크게 그리는 방법이다.

World space

model matrix 를 활용하면 로컬 스페이스에서 월드 스페이스로 변환이 된ㄷ다.

model matrix: translation, scale, rotation 등을 월드 기준으로 오브젝트의 상대적 위치, 크기 회전 등을 정의한 행렬

View Space

opengl 의 카메라 스페이스
world-spacee 좌표계를 유저 뷰로 변환한 것이다.
이를 위해서는 view matrix 이 필요하다.

Clip Space

버텍스 쉐이더 실행이 끝날 때 쯤에, opengl 은 좌표계가 특정 범위 내로 있기를 바라고, 그 범위 밖에 있는 오브젝트는 제거 하길 원하는 데 이를 clipping 이라 한다.
만약 primitive( 삼각형) 일부분만 들어있을 경우에, opengl 은 그러한 삼각형을 더 많은 삼각형으로 쪼갠 후 clipping 을 진행한다. orthographic projection, perspective projection 활용하고 clipping 함!

Orthographic projection

orthographic projection 행렬은 큐브 같은 frustum 박스를 정의한다ㅏ.
이 행렬을 정의할 때, 우리는 보이는 frrustrum 의 너비 높이, 길이를 구체화해야 한다.

Perspective projection

물체가 사용자로부터 멀어질수록 w 값이 커진다.

profile
프론트엔드 개발자를 꿈꿉니다.

0개의 댓글