1. Viewing System
- 컴퓨터 그래픽스란 결국 실세계에 있는 물체들의 사진을 찍는 것과 같다.
- 삼차원 모델이 이루는 scene을 2D화면에 projection하는 것이다.
2. Coordinates Transform Pipeline
Model Transform
- 가장 먼저 가상의 scene에 올려놓을 물체들을 모델링한다. 그리고 가상의 공간(world space)의 x,y,z 축에 물체들을 올려둔다. 이때 transformation 계산이 필요하다.
View Transform
- scene이 완성되었다면 가상의 카메라의 좌표를 정의한다. 즉 veiwplane을 정의하는 것이다.
- 계산상 편의를 위해 world coordinate을 카메라를 기준(view coordinate)으로 x,y,z 축을 재정의한다.
- view transform을 위한 matrix는 위와 같다. 기존의 원점을 새로운 원점으로 이동시키고 회전시켜 축을 맞춘다.
Projection Transform
- view frustrum을 viewplane에 투영한다.
- Orthographic : 평행하게 투영
- plane에 대한 Orthographic은 깊이 정보가 사라지기 때문에 역변환이 불가능하다. 따라서 깊이 정보를 유지하기 위해 unit cube로 transform한다.
- z-coordinate 좌표를 [0,1] 또는 [-1,1] 범위로 기억을 해두는 것이다.
- 참고로 그래픽작업은 고도로 병렬화 하는 작업이기 때문에 누가 앞에 있고 뒤에 있는지를 알 수 없다. 따라서 깊이 정보를 가지고 있다가 rasterization에서 사물의 앞뒤를 인지한다.
- Perspective : 원근법을 적용하여 투영
- perspective projection도 마찬가지로 평면이 아닌 unit cube로 깊이정보를 유지하게 된다.
- projection이 끝나면 clipping으로 화면 밖의 내용을 지운다.
Viewport Transform
- viewplane에 있는 2D이미지를 rasterize한다.
- screen속 window에 viewport를 정의하고
- viewport에 매핑해서 보여준다.
- 이때 아까 유지했던 깊이 정보를 가지고 사물의 앞뒤를 구분한다.
3. Summary
- 일련의 과정들을 정리하면 다음과 같다.
'ComputerScience > Computer Graphics' 카테고리의 다른 글
CG - 6. Surface Rendering (0) | 2021.10.08 |
---|---|
CG - 5. Lighting (0) | 2021.09.29 |
CG - 3. Transformation (0) | 2021.09.24 |
CG - 2. 라이브러리 소개 (0) | 2021.09.15 |
CG - 1. 컴퓨터 그래픽스? (0) | 2021.09.02 |