2023. 5. 3. 19:48ㆍ컴퓨터 그래픽스/그래픽 알고리즘 및 표현
backface culling은 물체의 뒷면은 그리지 않는 것을 말한다. culling을 해줌으로써 보이지 않는 뒷면은 계산하지 않아서 효율적인 컴퓨팅 관리가 가능해진다.
물체가 뒷면인지 앞면인지는 어떻게 확인할지 고민해보면 물체가 앞면이면 normal vector가 양수가 나온다. 뒷면일 경우 음수가 나오게 될 것이다. 그러므로 양수인 것만 색으로 표현해주고 음수인 것은 넘겨버리면 될 것이다.
normal이 양수인 경우에는 아래의 판단을 통해 그려준다.
모든 물체는 삼각형으로 이루어져 있다.
모든 정점 세개씩 돌면서 픽셀들 별로 해당 픽셀이 삼각형의 안에 있는지 판단한다.
안에 있는지 판단은 cross product를 통해 한다. 픽셀을 다 돌면서 해당 삼각형 안에 픽셀이 있는지 판단한다.
DX는 왼손법칙이므로 삼각형 내 vertex로 만든 vector를 시계 방향으로 cross product 시 픽셀이 삼각형 밖에 있다면 음수가 나오고, 안에 있다면 양수가 나올 것이다. 세 정점과 point하나를 중심으로 cross product 시에 모두 양수가 나온다면 안에 있다고 볼 수 있다.
원근법을 적용해서 이것을 표현할 것이다.
원근법은 3d에 있는 object가 위의 모양처럼 내려져오다가 screen 상에서 맺힌 것처럼 보이는 것을 말한다.
비례식을 이용하여 점을 표현해주면 scale 값을 구할 수 있는데 이 scale 값을 곱해주면 screen에 맺히는 점을 구할 수 있다. 스크린은 z가 0인 부분이다.
그러나 이렇게 했을 때 왜곡이 생기는데 다음 설명에서 왜곡이 생기는 이유와 해결법을 설명할 것이다.
'컴퓨터 그래픽스 > 그래픽 알고리즘 및 표현' 카테고리의 다른 글
shading 표현 (0) | 2023.05.06 |
---|---|
깊이 버퍼(depth buffer) (0) | 2023.04.01 |
2차원 transformation (0) | 2023.02.22 |
Rasterization 원 그리기 (0) | 2023.02.22 |
Rasterization (0) | 2023.02.15 |