1. 폴리곤 메쉬(Polygon Mesh)란?
- 그래픽스에서 렌더링(표현)할 물체의 표현을 만드는 작업을 "모델링"이라고 한다.
- 한 예로 구를 표현하려면 좌측 그림처럼 구의 중점과 반지름을 가지고 우리가 아는 구의 방정식을 세울 수 있다
- 흔히 이런 형태의 함수는 음함수(Implicit Function)라고 하는데, 음함수는 GPU로 표현하기 어렵다.
- GPU에서 표현하기 어렵다는 이유 때문에 이런 음함수 표현 대신 부드러운 평면의 개수를 샘플링한다.
- 그러면 일정한 꼭지점이 샘플링 되는데, 그 꼭지점들을 선으로 이어서 다각형으로 만든 것을 대신 표현한다.
- 이렇게 도형 그 자체를 표현한 것이 아니라, 꼭지점을 샘플링해 선으로 이은 다각형을 폴리곤 메쉬라고한다.
- (GPU는 이러한 폴리곤 메쉬를 처리하는데 아주 최적화 되어있다)
+) 음함수란?
- 일반적으로 $f(x) = 2x + 1$과 같이 종속변수와 독립변수가 분리된 함수를 양함수라고 하고,
- 반대로, $f(x, y) = r$과 같이 종속변수와 독립변수가 분리되지 않은 함수를 음함수라고 부른다.
2. 메쉬의 종류 (삼각 vs 사각)
- 가장 간단한 다각형은 삼각형(변의 수가 가장 적은 다각형)이니까, 삼각형으로 만든 폴리곤 메쉬를
- Triangle Mesh라고 부르며, 실제로 가장 많이 쓰이는 메쉬이다 (OpenGL ES도 이렇게 처리한다)
- 보통적으로 꼭지점 개수가 n개면 삼각형의 수는 최대 2n개가 생긴다 (오일러 공식에 의하면 그렇다)
- 그런데 실제로 모델링 단계에서는 삼각형 메쉬보다 사각형 메쉬를 쓰는 것이 훨씬 유리하다.
- 여기에 이유가 있긴 한데 ... 애초에 모델링 영역은 우리가 아닌 디자이너의 영역이라 이해가 안간다.
- 삼각형과 사각형 사이의 변환은 매우 쉽다. 삼각형에서 대각선을 전부 제거하면 사각형이고,
- 사각형에서 한방향으로 대각선을 모두 그려주면 삼각형 폴리곤 메쉬가 된다.
3. 정점의 개수
- 폴리곤의 정점 개수를 늘리면 오브젝트를 보다 정확하게 표현할 수 있지만, 컴퓨팅이 많아지고
- 폴리곤의 정점 개수를 줄이면 오브젝트가 부정확하게 표현될 수 있지만, 컴퓨팅이 훨씬 적어진다.
- 정점의 개수가 곧 Resolution(해상도)가 되는데, 트레이드 오프가 있으니 잘 선택해야한다.
- 이러한 정점의 수를 그래픽스에서는 LOD (Level of Detail)이라고 한다.
- 실제로 오브젝트가 화면에 어느정도 크기로 나올지를 생각해서 잘 선택해야한다.
- 아무리 퍼포먼스가 뛰어난 컴퓨터를 사용한다고 해도 고작 5px정도 하는 구를 표현하기
- 위해 위 그림에서 가장 오른쪽과 같은 복잡한 메쉬를 선택하는건 효율적이지 못하다.
- 더 정확하게 정점의 수를 늘리는 것을 Refinement, 줄이는 것을 Silplification이라고 한다.
4. 실제 컴퓨터에선 어떻게 표현될까?
1) Non Indexed Representation
- 간단하게 보기 위해 2D 메쉬를 예시로 들어서 설명한다. 위처럼 삼각형별로 3칸씩 잡아놓고 좌표를 저장한다
- 가장 위 3칸은 t1, 그 아래 3칸은 t2, 그 아래 3칸은 t3의 좌표들이 각각 담겨있다.
- 이렇게 정점의 좌표를 모두 저장하고, 루프를 돌면서 3개씩 끊어서 읽으면 메쉬를 전부 그릴 수 있다.
- 이러한 배열을 Vertex Array (정점 배열)이라고 한다. 그러나 여기에는 문제가 존재하는데, 중복된 데이터가
- 굉장히 많다. 예를 들어 (1.0)은 모든 삼각형이 가지고 있는데, 이 (1.0)은 3번이나 중복되어 저장된다.
2) Indexed Representation
- 중복을 해결하기 위해 vertex array에는 실제 좌표들을 중복 없이 저장하고,
- index array를 하나 만들어서, 거기에 vertex array의 인덱스들만 저장하면 훨씬 공간을 절약할 수 있다
- vertex array는 integer 2개짜리 struct이고, index는 1개짜리 array이기 때문에 크기가 훨씬 작다
- 우리가 흔히 사용하는 3차원 폴리곤 메쉬를 사용할 경우, 좌표도 3차원이 되고, 그러면 더 절약할 수 있다.
- 실제로는 vertex array의 한 셀에는 좌표 이외에도 굉장히 많은 정보들이 있어서 절약률이 상당히 크다.
5. Reference
'그래픽스' 카테고리의 다른 글
그래픽스 모델링 (2) - 법선 벡터 (Surface Normal) (2) | 2020.05.09 |
---|---|
그래픽스를 위한 수학 개요 (0) | 2020.04.20 |
컴퓨터 그래픽스 개요 (0) | 2020.04.20 |