| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- OpenGL
- covolution
- 포인터
- 최대 사후 확률
- Action Recognition
- Swin Transformer
- mobilenet
- C++
- 딥러닝
- posec3d
- Diffusion
- CNN
- Focal loss
- convolution
- deformable covolution
- Image denoising
- computer graphics
- 모수 추정 방법
- depthwise convolution
- Unreal Engine
- 최대 가능도 추정
- DDPM
- 오블완
- Deep Learning
- 티스토리챌린지
- Vision Transformer
- Today
- Total
심드렁하게 저장
1. 좌표 시스템의 이해 : 3D 객체가 화면에 그려지기까지 본문
컴퓨터 그래픽스에서 좌표 시스템은 렌더링할 때 공간내의 위치를 정의하는데 매우 중요한 역할을 한다.
주요 좌표 시스템 단계는 다음과 같다.
- Local Space
- World Space
- View Space
- Clip Space
- Normalized Device Coordinates (NDC)
- Screen Space
그림으로 요약하면 다음과 같다.

이번 글에서는 OpenGL의 좌표 변환 과정을 단계별로 정리한다.
1. Local Space (로컬 공간)
로컬 공간은 각 객체가 자신의 좌표계에 맞춰 정의되는 가장 기본적인 공간이다. 객체의 중심을 (0, 0, 0)으로 설정하고, 각 점(버텍스)의 위치를 정의할 수 있다. 예를 들어, 정육면체가 있을 때 그 중심이 (0, 0, 0)이라고 설정하면, 각 꼭짓점은 상대적인 위치로 정의될 수 있다. 이 로컬 공간은 객체 내부에서의 기준 좌표로, "모델 좌표계"라고도 부른다. 로컬 공간은 여러 객체를 다룰 때 매우 중요하다. 객체들이 각각 독립된 좌표계를 가지고 있어, 월드 공간으로 변환하기 전까지는 다른 객체와의 관계를 고려할 필요가 없기 때문다.
2. World Space (월드 공간)
월드 공간은 로컬 공간에 있는 객체들이 하나의 공통된 세계 좌표계로 변환되는 단계이다. 예를 들어, 여러 개의 정육면체가 서로 다른 위치에 놓여 있어야 한다면, 각각의 위치를 월드 좌표로 변환해야 한다. 이 단계에서 각 객체의 로컬 좌표에 변환 행렬(translation, rotation, scaling)을 적용해, 월드 좌표 내에서 객체가 특정 위치에 놓이게 된다. 이렇게 변환된 월드 공간에서는 객체들 간의 상대적인 위치가 정의되기 때문에, 각기 다른 객체들의 상호 관계를 쉽게 파악할 수 있다.
3. View Space (뷰 공간)
뷰 공간은 월드 공간에서 정의된 객체들의 좌표를 카메라의 위치와 방향에 맞춰 재조정하는 단계이다. 뷰 행렬(view matrix)을 통해 월드 공간의 객체들이 카메라를 기준으로 변환된다. 이 과정을 통해 장면에서 카메라가 어디에 위치하고, 어떤 방향을 바라보는지에 따라 객체들이 적절한 위치에 렌더링될 수 있다. 마치 우리가 실제로 카메라 렌즈를 통해 보는 것처럼, 장면 속 객체들이 자연스럽게 카메라에 맞춰 정렬된다.
4. Clip Space (클립 공간)
뷰 공간에서의 좌표는 클립 공간으로 변환되어 렌더링 파이프라인에 맞춰진다. 이때 투영 행렬(projection matrix)을 사용해 좌표가 클립 공간으로 변환되며, 이 공간에서는 원근법(perspective projection) 또는 직교 투영(orthographic projection) 방식으로 3D 장면을 2D 화면에 그리기 위한 준비를 한다. 이 단계에서 화면 밖에 있는 객체나 보이지 않는 부분이 잘려나가고(clip), 오직 화면에 보이는 부분만 남게 된다.
5. Normalized Device Coordinates
클립 공간에서 변환된 좌표는 -1에서 1 사이의 범위로 정규화된 좌표로 변환된다. 이 단계에서 좌표는 NDC(Normalized Device Coordinates)로 불리며, 화면에 출력될 준비가 된다.이 정규화 좌표는 화면의 중심이 (0, 0)에 위치하고, 각 모서리는 -1 또는 1에 위치하게 된다. 이 좌표계는 화면의 상대적 위치를 기준으로 변환되어, 화면에 보이지 않는 좌표는 잘려나간다. 최종적으로 남은 좌표들이 스크린 공간으로 이동한다.
6. Screen Space (스크린 공간)
마지막 단계는 NDC 좌표를 실제 화면의 픽셀 좌표로 변환하는 것이다. 예를 들어, 해상도가 800x600인 화면이라면, 정규화된 좌표를 해당 해상도에 맞춰 변환하게 된다. 이 과정을 "뷰포트 변환"이라 부르며, 최종적으로 GPU가 화면에 그릴 수 있는 위치로 좌표가 지정된다.
'Game, Graphics > OpenGL' 카테고리의 다른 글
| 2. OpenGL 조명 : 3D 그래픽에서의 빛 (1) | 2024.11.17 |
|---|