개발하는 리프터 꽃게맨입니다.

[수학] 삼각형: 물체를 구성하는 가장 작은 단위 본문

컴퓨터 그래픽스/수학

[수학] 삼각형: 물체를 구성하는 가장 작은 단위

파워꽃게맨 2024. 7. 12. 01:42

세 점의 결합

아핀 결합을 이용하면 스칼라 계수의 범위에 따라 직선, 반직선, 선분 등 다양한 종류의 선을 만들 수 있었다.

그렇다면 세 점을 결합하는 경우는 어떻게 될까?

세 점 P1, P2, P3를 결합하는 경우 스칼라는 3개로 늘어나고 세 스칼라의 합은 1이 되어야 한다.

위 식을 점에서 점을 빼는 수식으로 바꿔 전개하면 다음과 같다.

여기서 각 괄호를 u, v, w 벡터로 치환하면 다음과 같이 벡터로 구성된 수식이 만들어 진다.

앞서 살펴본 바와 같이 벡터 u, v가 서로 선형 독립의 관계라면 벡터 w는 2차원 벡터 공간 R²에 존재하는 모든 벡터를 생성할 수 있다.

따라서 세 점의 아핀 결합은 평면의 모든 점을 만들어낸다. 

 

여기서 스칼라 s, t의 값 범위를 [0, 1] 로 고정시켜보자.

그러면 그러면 아래 그림과 같이 해당 영역은 삼각형이 됨을 알 수 있다.

 

이렇게 아핀 결합에서 모든 스칼라 값을 [0, 1] 범위로 한정한 결합을 컨벡스 결합이라고 부른다.

 

컨벡스 결합은 위와 같은 식으로 표현할 수 있다.

 

선분이나 삼각형처럼 컨벡스 결합으로 만든 영역을 컨벡스 영역이라고 한다.

컨벡스는 사전적으로 볼록한 형태를 뜻한다.

 

수학에서 정의한 '볼록함'이란, 영역 내 임의의 두 점을 연결한 선분을 만들었을때 그 선분은 언제나 해당 컨벡스 영역 안에 속하는 성질을 의미한다.

이 도형에서는 어떤 두 점을 선택해여 선분을 만들더라도, 컨벡스 영역 안에 속하게 된다.

반대로 이렇게 오목한 도형은 컨케이브라고 한다.

컨케이브 영역에서는 두 점을 선택하여 선분을 만들었을 때, 선분이 영역 밖으로 벗어나게 된다.

 

그렇다면 4개의 점을 결합하는 컨벡스 결합은 어떻게 구성될까?

아핀 공간에서 점 4개를 결합한 식을 벡터로 바꿔 표현하면 다음과 같이 전개될 것이다.

 

세 벡터 u, v, w가 선형 독립 관계를 이룬다면 3차원 공간의 모든 벡터를 생성할 수 있으므로 아핀 결합으로 생성된 벡터 x는 3차원 공간의 벡터가 될 것이다.

 

이 때, 스칼라 a, b, c의 값을 [0, 1] 범위로 제한한다면 다음과 같은 삼각뿔 영역이 형성될 것이다.

 

컨벡스 결합으로 만들어지는 도형은 1차원의 선분, 2차원의 삼각형, 3차원의 삼각뿔이 대표적이다. 이 중 가상 공간의 물체를 표현하는 데 가장 적합한 도형은 삼각형이다.

삼각형으로는 2차원의 물체를 효과적으로 표현할 수 있으며, 3차원 물체도 표면만을 다루기 때문에 삼각형만으로 표현하는 것이 가장 효과적이다.


메시

3차원 공간의 입체적인 물체 또한 삼각형을 이어붙이면 표현이 가능하다.

그래서 물체를 표현하기 위해 삼각형 데이터를 체계적으로 읽고 쓰는 방법이 필요한데, 삼각형을 중심으로 물체에 관련된 정보를 기록한 데이터를 메시라고 한다.

 

메시는 다수의 삼각형으로 구성되고, 메시를 이루는 삼각형은 다시 3개의 점으로 구성된다. 그렇다면 메시는 결국 다수의 점으로 구성된다고 정리할 수 있다.

 

메시는 삼각형을 이용해 물체의 외형을 표현하기에, 삼각형을 이루는 각 점의 위치를 가지고 있어야 한다.

그런데 위치 정보만 담는 게 아니라, 물체를 표현하는 데 활용할 수 있는 색상이나 방향과 같은 다양한 부가 정보도 담아 함께 제공한다.

이렇게 위치 정보, 부가 정보를 묶은 특별한 점을 정점(Vertex)라고 한다.

 

메시는 정점들이 모인 데이터라고 할 수 있는데, 컴퓨터에서 메시를 읽어 물체를 표현할 때에는 메시의 정점 정보를 빠르게 읽기 위해서 메모리에 정점 정보를 일렬로 나열하는 배열의 형태로 관리한다.

이를 정점 버퍼(Vertex Buffer)라고 한다.

 

그런데 정점 버퍼의 정보만으로는 어떤 세 정점이 모여 삼각형을 구성하는지 알 수 없다. 그래서 삼각형을 구성하는 정점의 인덱스만 기록한 배열을 별도로 만들어 관리한다. 이를 인덱스 버퍼라고 한다.

 

인덱스 정보는 삼각형의 수만큼 필요하기 때문에 인덱스 버퍼의 크기는 항상 3의 배수다.

 

이렇게 정점 버퍼와 인덱스 버퍼의 두 가지 배열 정보를 사용해 삼각형들을 하나씩 그려나각면 최종적으로 물체를 표현할 수 있다.

 

삼각형 두 개로 구성되는 사각형은 위와 같이 설계할 수 있다.

예시와 같이 두 삼각형이 빗변을 맛대고 있다면, 0번 정점과 2번 정점은 서로 공유하여 사용할 수 있다.

 

삼각형을 하나씩 표현해나가면 위 3D 그림과 같이 메시를 형상화할 수 있따. 이렇게 삼각형의 외곽선만 그려 메시를 표현하는 방법을 와이어프레임이라고 한다.


무게중심좌표

삼각형을 만들 때 사용한 세 스칼라 s, t, 1-s-t 는 모두 실수이므로, 이들을 묶어서 하나의 3차원 벡터를 생성할 수 있다. 이렇게 아핀 결합의 스칼라를 묶어 만든 좌표를 무게중심좌표라고 한다.

 

세 계수를 조합해 만든 무게중심좌표는 (s, t, 1 -s -t) 로 표현한다.

 

 

1) 무게중심좌표의 계산

세 점의 아핀 결합이 삼각형이 되려면 모든 스칼라의 값이 [0, 1] 범위 내에 있어야 한다.

무게중심좌표를 구성하는 스칼라 값이 하나라도 [0, 1] 범위를 벗어난다면 아핀 결합으로 생성된 점은 삼각형 외부에 있다고 할 수 있다.

 

이러한 성질을 활용하면 주어진 점이 삼각형 영역 내부에 있는지 외부에 있는지 판단할 수 있는데 이를 위한 수식을 직접 유도해보자.

 

아핀 결합으로 생성되는 점 P4는

로 나타낼 수 있다.

 

벡터 w에 각각 v, u를 내적하면 다음과 같다.

이 식에서 s를 소거하기 위해

각각 (uㆍv) 와 (uㆍu) 를 곱하면 다음과 같다.

 

 

 

s를 소거하고 t에 대해서 정리하면 t는 다음과 같다.

동일한 방법으로 t를 소거하여 s에 대해서 정리하면 s는 다음과 같다.

이렇게 얻어진 무게중심좌표  (s, t, 1-s-t) 의 세 값 모두 [0, 1] 범위 안에 있다면 점 P4는 삼각형 안에 있고, 아니라면 점 P는 삼각형 밖에 있다고 판단할 수 있다.

 

주의할 점은

이 값은 분모를 이루기 때문에 0이 되면 안된다는 것이다.

 

그렇다면 어떤 경우에 분모값이 0이 되는지 살펴보자.

 

분모를 cos 공식으로 변경하면 다음과 같다.

(|u||v|)²ㆍcos² - (|u||v|)² 

 

이 갑이 0이 되기 위한 조건은 벡터 u 또는 v의 크기가 0이거나, 두 벡터가 이루는 각이 0이거나 180' 일 때다.

이는 두 벡터가 평행한 상태임을 의미한다.

 

그렇다면 두 벡터는 선형 종속 관계를 이루기 때문에, 삼각형이 아닌 선분을 마나들어낸다.

이러한 삼각형을 퇴화삼각형이라 하며, 퇴화삼각형이 검출되면 그리기에서 제외한다.


텍스처 매핑

무게중심좌표는 메시에 이미지를 입히는 용도로 활용할 수도 있다.

메시에 이미지를 입히기 위해 변환된 데이터를 텍스처라고 하며, 메시에 이미지를 입히는 작업을 텍스처 매핑이라고 한다. 

 

텍스처로 사용할 그림이나 이미지는 고유한 해상도를 가진다. 하지만 이미지를 메시에 입히기 위해 텍스처로 변환하면 관리 방식을 통일하기 위해 이미지의 원본 해상도에 관계없이 텍스처의 가로, 세로 크기는 1로 정규화된다.

 따라서 렌더링 과정에서 텍스처를 사용할 때에는 [0, 1] 범위로 구성된 2차원 좌표계를 사용한다.

 

텍스처를 구성하는 2차원 좌표계를 UV 좌표계라고 한다.

 

UV 좌표계는 2차원 벡터로 구성되며 가로 정보는 U, 세로 정보는 V로 지정된다.

 

 

UV 좌표계를 형성했다면 텍스처 매핑을 위해 삼각형의 세 정점에 UV 좌표 정보를 추가해야 한다.

삼각형을 구성하는 각 픽셀의 무게중심좌표를 계산하고 이를 정점의 UV 좌표와 선형 보간하면 해당 픽셀의 UV 값을 얻어낼 수 있다.

 

이에 대응하는 텍스처의 색상 정보를 얻은 후 이를 최종 픽셀의 색상으로 지정하면 텍스처 매핑이 완성된다.

연습문제

1. 3차원에서 삼각형을 정의하는 방법에 대해서 아는대로 서술하시오.

2. 컨벡스 결합이란 무엇인가?

3. 메시를 정의하기 위해서는 ( A ) 와 ( B ) 가 필요하다. A와 B가 뭔지 적고, 이에 대해 각각 설명하라.

4. 아핀 결합에 의해 정의된 삼각형이 존재할 때, 어떤 한 점이 삼각형의 내부에 있는지 외부에 있는지 판단하는 방법은?

5. 텍스처 매핑을 위해 사용하는 좌표계를 뭐라고 하는가?

6. 컨벡스 결합으로 만들어진 영역이 반드시 수학적으로 볼록함을 보이고, 수학적으로 볼록하다는 것은 무엇인지 설명하시오

7. 퇴화 삼각형이란 무엇이고, 퇴화 삼각형을 만들 수 있는 조건은 무엇인가?