[이득우 게임수학] 8. 삼각형 : 물체를 구성하는 가장 작은 단위
- 📕 Book/이득우 게임수학
- 2023. 2. 8.
8.1 세점의 결합
세점 P1, P2, P3 를 결합하는 경우 스칼라는 2개에서 3개로 늘어나는데 세 스칼라의 합은 1이 되어야 하므로 아핀 결합식은 다음과 같이 전개 된다.
P` = s·P1 + t·P2 + (1-s-t)·P3
(P` - P3) = s(P1 - P3) + t(P2 - P3)
//w = (P` - P3)
//u = (P1 - P3)
//v = (P2 - P3) 치환
w = s·u + t+v
아핀 결합식에서 스칼라 값을 [0,1] 범위로 제한하면 시작과 끝의 범위가 명확해지므로 도형이 만들어 진다. 아핀 결합에서 모든 스칼라 값을 [0,1] 범위로 한정한 결합을 컨벡스 결합(Convex combination)이라고 부른다. 선분이나 삼각형처럼 컨벡스 결합으로 만든 영역을 컨벡스 영역(Convex region)이라고 한다. 사전적 의미는 '볼록한'을 뜻한다. 컨벡스 영역이란 '볼록한 형태의 영역'이라 해석할 수 있다. 컨벡스의 반대는 오목한 모양을 뜻하는 컨케이브(Concave)다. 컨케이브의 영역은 임의의 두점을 이은 선분이 영역 밖으로 벗어나는 경우가 발생한다.
8.2 메시
삼각형을 중심으로 물체에 관련된 정보를 기록한 데이터를 메시(Mesh)라고 한다. 메시는 삼각형을 이용해 물체의 외형을 표현하기 때문에, 삼각형을 이루는 각 점의 위치를 가지고 있어야 한다. 각 점에는 위치 정보 뿐 아니라 물체를 표현하기위해 색상이나 방향같은 부가정보도 함께 담겨 있다. 이러한 점을 정점(Vertex)이라고 한다. 정점 버퍼(Vertex buffer)는 메시의 정점 정보를 빠르게 읽기 위해서 메모리에 정점 정보를 일렬로 나열하는 배열의 형태로 관리하는 것이다. 인덱스 버퍼(Index buffer)는 삼각형을 구성하는 정점의 인덱스를 기록하여 관리하는 것이다. 정점 배열과 인덱스 배열을 채운 후, 삼각형을 구성하는 세점에서 두 점씩 묶어 선으로 삼각형을 표현할 수 이싿. 삼각형의 외곽선만 그려 메시를 표현하는 방법을 와이어프레임(Wireframe)이라고 한다.
8-1 실습
와이어프레임 렌더링 구현
8.3 무게중심좌표
아핀 결합의 스칼라를 묶어 만든 좌표를 무게중심좌표(Barycentric coordinate)라고 한다.
무게중심좌표의 계산
// P3 -> P1 = u
// P3 -> P2 = v
// P3 -> P` = w (P`= 무게중심좌표)
w·u = (s·u + t·v) · u
w·v = (s·u + t·v) · v
//분배법칙
w·u = s(u·u) + t(u·v)
w·v = s(u·v) + t(v·v)
//s 소거를 위해 다음과 같이 전개
(w·u)(u·v) = s(u·u)(u·v) + t(u·v)(u·v)
(w·v)(u·u) = s(u·v)(u·u) + t(v·v)(u·u)
//위 식에서 아래식을 빼 s를 소거하고 t만 남김
t = ((w·v)(u·v) - (w·v)(u·u)) / ((u·v)^2 - (u·u)(v·v))
//t 소거를 위해 다음과 같이 전개
(w·u)(v·v) = s(u·u)(v·v) + t(u·v)(v·v)
(w·v)(u·v) = s(u·v)(u·v) + t(v·v)(u·v)
//위 식에서 아래식을 뺴 t를 소거하고 s만 남김
s = ((w·v)(u·v) - (w·v)(v·v)) / ((u·v)^2 - (u·u)(v·v))
s와 t의 공통 분모 (u·v)^2 - (u·u)(v·v)는 결과가 0이 나올 수 도 있다. u나 v벡터의 크기가 0이거나 u와 v가 이루는 각이 0˚이거나 180˚일 때이다.
8-2 실습
삼각형 칠하기
8-3 실습
무지개 삼각형 만들기
8.4 텍스처 매핑
무게중심좌표는 메시에 이미지를 입히는 용도로 활용할 수 있다. 메시에 이미지를 입히기 위해 변환된 데이터를 텍스처(Texture)라고 하며, 메시에 이미지를 입히는 작업을 텍스처 매핑(Texture mapping)이라 한다. 이미지를 메시에 입히기 위해 원본 해상도에 관계없이 텍스처의 가로, 세로 크기를 1로 정규화 한다. 텍스처를 구성하는 2차원 좌표계를 UV좌표계라고 한다. 가로정보는 U, 세로정보는 V로 지정된다.
8-4 실습
텍스처 매핑의 구현
8.5 정리
- 세 점의 아핀 결합에 대한 수식을 사용해 삼각형을 생성
- 가상 공간에 물체를 생성하고 화면에 그리는 방법
- 삼각형 내부를 표현하는데 유용할 무게중심좌표 계산
출처
- 이득우의 게임수학 (https://www.onlybook.co.kr/entry/gamemath)