티스토리 뷰
고려대학교 정보대학 컴퓨터학과 2019년 1학기 <컴퓨터그래픽스> 7강 래스터라이저(1)
강의영상 플레이리스트 [Link]
강의자료 [Link]
컴퓨터그래픽스 래스터라이저(1)
Keywords
- Rasterizer
- Clipping
- Perspective Division
- Back-face Culling
Rasterizer
vertex shader를 거쳐서 나오는 clip space 좌표 정보를 assemble!
"삼각형을 모아서 그 안에 fragments를 만든다"
Clipping
clip space에서 정의된 view frustum 경계에 일부만 걸쳐 있는 오브젝트를 잘라준다.
-> 경계면을 기준으로 "새로운 삼각형을 만들어서 넘겨준다"
-> 복잡한 연산이지만 GPU 하드웨어 단에서 수행해주게 됨 (소프트웨어 수준에서 크게 신경x)
Perspective Division
projection transform 행렬식의 4행 주목!
homogeneous coordinates /((0,0,0,1)\)이 아니라 \((0,0,-1,0)\)
projection transform matrix * camera space coordinates
homogeneous clip space -> Cartesian space 변환을 위해 \(-z\)로 나누어준다
\(-z\)는 구체적으로 어떤 역할을 수행하는가?
* \(-z\) = camera space의 xy-평면으로부터의 "거리"를 표현하는 positive value (\(z<0, -z>0)\)
* \(-z\)로 나누어주게 되면 멀리 있는 오브젝트가 가까워지는 효과 발생 (=perspective division)
* 멀리 떨어져 있을수록 큰 값으로 나누게 되므로 더 작아진다 --> 원근법 구현(멀리 있으면 작고, 가까이 있으면 크다)
-> -1~+1 범위 안에서 좌표값이 결정되게 되므로, 이 결과를 NDC(normalized device coordinates)라고 부른다.
Perspective Division -> 원근법을 구현하는 나눗셈
Perspective projection, 원근투영 처리의 핵심
Back-face Culling
back face -> 카메라를 등지고 있는, camera front face의 정반대에 위치한 폴리곤 영역.
culling -> 골라내서 버리는 작업을 지칭함.
Back-face vs. Front-face의 구분
삼각형 폴리곤의 normal을 \(n\)으로 정의하고, 폴리곤의 한 꼭짓점과 카메라까지의 거리를 \(c\)로 정의할 때:
* \(n\), \(c\)는 수직을 이루고, 따라서 두 벡터의 내적 dot product = 0이 성립한다. -> "edge-on face"
* \(n\), \(c\)는 좁은 각을 이루고(대체로 비슷한 방향), 두 벡터의 내적 dot product > 0이 성립 -> "front-face"
* \(n\), \(c\)는 큰 각을 이루고(대체로 반대 방향), 두 벡터의 내적 dot product < 0이 성립 -> "back-face"
projection transform을 거치면(view frustum -> 정육면체), z축에 평행한 "universal projection line"을 정의할 수 있다.
z축을 날리고, 2차원 평면에서 (x,y) 좌표를 본다 -> 꼭지점 나열순서 CCW면 front-face, CW면 back-face니까 culling
* 행렬식을 통해서 수식으로 위 과정을 판단할 수 있다!
[예외상황?]
1. 반투명 오브젝트일 경우 back-face도 살려놔야 한다.
2. 오브젝트의 front-face만을 제거하고 싶을 경우 (ex. 단면 잘라서 보여주기)
-> 하드웨어가 수행하는 작업이지만, 위 상황에 대응할 수 있도록 api를 제공한다.
'3D Computer Graphics > Learnings' 카테고리의 다른 글
컴퓨터그래픽스_이미지텍스처링 (0) | 2022.05.02 |
---|---|
컴퓨터그래픽스_래스터라이저(2) (0) | 2022.04.30 |
컴퓨터그래픽스_OpenGL ES와 셰이더 (0) | 2022.04.26 |
컴퓨터그래픽스_정점 처리(2) (0) | 2022.04.26 |
컴퓨터그래픽스_정점 처리(1) (0) | 2022.04.25 |
- Total
- Today
- Yesterday
- 메타버스
- tensorflow.js
- 고려대학교 한정현
- 원유로필터
- 3d affine transform
- 컴퓨터그래픽스 강의
- 컴퓨터그래픽스
- 컴퓨터그래픽스 좌표계와 변환
- vertex shader
- PoseNet
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |