12장 원근 투영: 화면에 현실감을 부여하는 변환
12.1 원근 투영 변환의 원리
- 원근 투영 변환(perspective projection transformation)
- 정육면체 형태의 뷰 공간을 카메라의 한점으로 모이는 사각뿔 형태의 공간으로 변환하는 작업이다.
- 화각(field of view)은 카메라에 설정한 눈에 보이는 사각뿔 영역의 범위를 말한다.
- 투영 평면(projection plane)은 모든 물체의 상이 맺히는 가상의 평면으로 상하좌우가 모두 [-1, 1]이다.
- 초점 거리(focal length)는 카메라로부터 투영 평면까지의 거리를 말한다.
- NDC(normalized device coordinate)는 투영 평면에 대응하는 정사각형 영역인 2차원 평면의 좌표계를 말한다.
- 원근 투영 행렬(P)
- 정육면체 형태의 유클리드 공간을 사각뿔 형태의 사영 공간(projective space)으로 변환한다.
- 뷰 공간의 점 Pview로부터 원근 투영 행렬로 변환된 클립 좌표(clip coordinate)의 점 Pclip을 구한다.
- 종횡비(aspect ratio)를 고려해 NDC 좌표를 변경한다.
- 클립 좌표의 점 Pclip에서 Pclip의 세 번째 값인 -vz로 나누어 NDC 좌표에 투영된 점 Pndc를 구한다.
12.2 동차 좌표계
- 동차 좌표계(homogenous coordinate system)는 좌표계를 한 차원 높여 표현한 좌표계를 말한다.
- 사영 공간과 동차 좌표계의 관계
- NDC 좌푯값은 사영 공간의 z'에 반비례하다.
- 사영 공간의 점이 투영된 직선의 방정식 y = ax + b을 사영 공간의 좌표로 표현하면 y' = ax' + bz'이다.
- 미지수에 대한 차수가 모두 같은 동차 방정식이다.
12.3 깊이
■ 12.3.1 깊이 값
- 깊이 값(depth)은 카메라로부터 물체가 얼마나 떨어져 있는지 파악할 데이터를 말한다.
- 2차원 NDC 평면이 3차원 NDC 공간으로 확장된다.
- 사영 공간이 근평면(near plane)과 원평면(far plane)으로 잘린 공간을 절두체(frustum)라고 한다.
- 깊이를 고려한 원근 투영 행렬(P)는 다음과 같다.
- 카메라부터 근평면까지의 거리를 n, 원평면까지의 거리를 f라고 가정한다.
■ 12.3.2 깊이 버퍼
- 깊이 버퍼(depth buffer)는 스크린(screen)의 픽셀마다 깊이 값을 저장하는 버퍼를 말한다.
- 깊이 테스팅(depth testing, z testing)으로 삼각형의 픽셀마다 이전 깊이를 비교하고 가까운 곳에 있는 픽셀만 그린다.
- 픽셀의 깊이 값은 무게중심 좌표계를 활용하여 구한다.
12.4 원근 보정 매핑
- 원근 보정 보간(perspective correction interpolation)
- NDC 공간에서 구한 무게중심 좌표로 사영 공간의 무게중심 좌표를 계산해 텍스처를 매핑하는 것을 말한다.
- NDC 공간으로 변환하는 과정에서 -vz로 나누었기 때문에 사영 공간의 무게중심 좌표와 NDC 공간의 무게중심 좌표는 서로 다르다.
- 원근 보정 매핑(perspective correction mapping)
- y축에서의 무게중심 좌표를 q1과 q2로 지정하고 두 점 y1과 y2 사이의 점 y'을 구하는 수식은 다음과 같다.
- y' = q1 · y1 + q2 · y2
- x축에서의 무게중심 좌표를 t1과 t2로 지정하고 두 점 x1과 x2 사이의 점 x'을 구하는 수식은 다음과 같다.
- x' = t1 · x1 + t2 · x2
- y = -1/x 함수에서 반비례 관계를 활용하여 다음과 같은 투영 보정 보간의 식을 구할 수 있다.
'Computer Science > 게임 수학' 카테고리의 다른 글
게임 수학 | 4부 4차원 수학과 캐릭터 | 14장 복소수 (0) | 2023.03.23 |
---|---|
게임 수학 | 3부 3차원 콘텐츠 제작 | 11장 외적 (0) | 2023.03.08 |
게임 수학 | 3부 3차원 콘텐츠 제작 | 10장 3차원 공간 (0) | 2023.02.27 |
게임 수학 | 2부 콘텐츠 제작 기초 | 09장 게임 엔진 (0) | 2023.02.20 |
게임 수학 | 2부 콘텐츠 제작 기초 | 08장 삼각형 (0) | 2023.02.18 |
댓글