- 개요

이전의 방식을 사용하여 깊이 값을 고려하지 않고 텍스처 매핑을 진행하는 경우
위와 같이 격자 무늬가 꺾이거나 캐릭터의 눈과 눈썹이 출렁거리는 왜곡을 발생시킨다
이는 아핀 텍스처 매핑이 깊이 값을 무시한 채 NDC의 무게중심좌표로만 텍스처를 선형 보간하기에 발생한다
- 문제 원인 파악

문제의 원인을 명확히 알아보기 위해 위와 같이 투영 과정을 구성하였다
투영하기 전 사영 공간의 점 P1과 P2가 카메라 시야각에 걸쳐있다고 가정한다
위 2개의 점을 투영 평면에 투영한 점 N1과 N2의 NDC 좌표 값은 각각 -1과 1이 된다
그리고 카메라의 정면에 위치한 사영 공간의 점 P3를 투영한 NDC 좌표의 점 N3는 투영 평면의 중심에 위치한다

NDC 공간에서 점 N1과 N2를 이어 선분을 생성하면 선분의 중앙에 위치한 중점 N3의 무게중심좌표는 0.5가 된다
이때 사영 공간에서의 점 P1과 P2를 잇는 선분의 점 P3의 무게중심좌표는 0.5보다 작은 값이다
위와 같이 왜곡이 발생하는 원인은 사영 공간의 무게중심좌표와 NDC에서의 무게중심좌표가 다르기 때문이다
이런 문제를 수정하기 위해서는 투영되기 이전의 사영 공간에서의 무게중심좌표를 사용해야 한다
- 투영 보정 보간
1) 원리
사영 공간의 무게중심좌표를 사용하기 위해서는 다음의 절차를 진행한다
- 투영 과정을 거꾸로 추적하여 NDC에서 무게중심좌표를 계산
- 계산한 무게중심좌표로부터 사영 공간의 무게중심좌표를 계산
위와 같이 투영 전의 무게중심좌표를 계산해 텍스처를 매핑하는 것을 "투영 보정 보간"이라고 표현한다
투영 보정 보간의 계산식을 유도하기 위해서는 반비례 함수 y = -(1/x)의 성질을 알아볼 필요가 있다
2) 반비례 함수의 성질

반비례 함수를 그래프로 표현하면 위와 같이 표현할 수 있다

이때 x축에 위치한 2, 4, 6의 세 가지 수 중에서 가운데에 위치한 4의 무게중심좌표 a는 위 식을 통해 0.5로 계산된다

다음으로 4에 대응하는 Y값 -(1/4)에 대응하는 무게중심좌표 a는 위 식을 통해 0.25로 계산된다
이 식을 응용하여 Y축의 무게중심좌표 0.25로부터 X축의 무게중심좌표 0.5를 계산하는 식을 찾는다면,
사영 공간에서의 무게중심값을 계산할 수 있다

Y축에서의 무게중심좌표를 q1과 q2로 지정하고 이를 사용하여
Y축의 두 점 y1과 y2 사이의 점 y`를 계산하는 수식을 위와 같이 정리할 수 있다
무게중심좌표의 정의에서 두 무게중심좌표의 합 q1 + q2의 값은 1이다

다음으로 X축에서의 무게중심좌표를 t1과 t2로 지정하고 이를 사용하여
X축의 두 점 사이의 점 x`를 계산하는 수식을 위와 같이 정리할 수 있다
동일하게 t1 + t2의 값은 1이다

이때 반비례 함수이므로 x`와 y`는 반비례 관계이다
따라서 위와 같이 각각의 y값을 x값으로 표현할 수 있다

위에서 변환한 식을 응용하여 Y축의 두 점과 무게중심좌표를 사용하여 X축의 x`점의 값을 계산할 수 있다

위의 식의 양변에 분모를 곱하면 위와 같이 식을 변환할 수 있다

위의 식에서 두 무게중심좌표의 합이 1임을 이용하여 식을 변환할 수 있다

위의 식에서 양변의 덧셈항을 분리하면 최종 계산식을 얻을 수 있다
위의 식을 적용하면 X축에서의 무게중심좌표 0.5가 문제없이 계산되는 것을 확인할 수 있다
3) 최종 계산식을 세 점의 조합에 적용

2)의 최종 계산식을 삼각형을 구성하는 세 점의 조합으로 확장하여 적용하였다
세 점으로 확장한 수식은 위와 같다

확장한 최종 계산식을 사용하여 NDC에서 구한 무게중심좌표를 사영 공간의 무게중심좌표로 변환할 수 있다
사영 공간에서 NDC로 변환될 때 나누는 값은 뷰 공간의 Z값이므로
확장한 식에서 X를 -Z로 치환하면 최종 투영 보간 계산식을 얻을 수 있다
위의 수식을 활용한 텍스처 매핑을 "원근 보정 매핑"이라고 표현한다
'수학 > 이득우의 게임 수학' 카테고리의 다른 글
| 원근 투영 (6) 깊이 버퍼의 시각화 (1) (0) | 2026.06.17 |
|---|---|
| 원근 투영 (5) - 깊이 버퍼와 깊이 테스팅 (0) | 2026.06.17 |
| 원근 투영 (3) - 깊이 값 (0) | 2026.06.03 |
| 원근 투영 (2) - 동차 좌표계 (0) | 2026.05.27 |
| 원근 투영 (1) - 원근 투영 변환의 원리 (0) | 2026.05.20 |