옛날에는 surpline 곡선으로 점들을 이어서 하나의 곡선을 생성하는 형식으로 모델링했었음.
현대에 와서는 폴리곤 메쉬를 사용하여 모델링하는 중
삼각형으로 구성된 폴리곤 메쉬는 다수의 삼각형 집합으로 이루어진 구조로, 복잡한 것도 간단하게 표현 가능함.
이러한 메쉬 데이터 구조에서 필요한 개념들
- 2-Manifold: 한 엣지(edge)에 최대 두 개의 삼각형이 연결됨.
- Orientable: 반시계 방향으로 일관된 방향성을 가짐.
- Closed: 경계(boundary)가 없음.
2-Manifold는 수학적으로 정의된 특수한 표면 형태로, 한 엣지에 최대 두 개의 삼각형이 연결된 구조를 의미.
인접한 두 면의 공통 엣지(Common Edge) 양쪽에 있는 정점들이 반대 순서일 때, 두 면의 정렬은 호환 가능하다고 봄.
Manifold 조건
- 엣지 조건: 각 엣지는 정확히 하나 또는 두 개의 면(Face)에만 연결되어야 함.
- 정점 조건: 한 정점(Vertex)에 연결된 면들이 닫힌(Closed Fan) 또는 열린(Open Fan) 형태를 가져야 함.
정점 조건이 헷갈려서 추가)
닫힌것과 열린 것은 서로 반대되는 개념이 아니라, 그냥 정점 주변에 면들이 특정한 형태를 유지해야 한다는 것을 말하고 있는것임.
연속적이고 닫힌 폐곡선 형태거나, 연속적이고 끝이 열려있거나를 의미
왼쪽 그림은 엣지가 여러 면과 연결되어 있어 엣지 조건을 위반.
오른쪽 그림은 정점 주변의 면들이 연속적이지 않아 정점 조건을 위반.
특히 오른쪽 그림의 경우
노란 삼각형이 삽입되면서 면들이 "하나의 형태"로 연결되지 못함.
즉, 노란 삼각형이 초록색 면들과 단절된 상태를 만들어 냈음
삼각형 메쉬의 표현 방식
Separate Triangles (분리된 삼각형)
각 삼각형을 개별적으로 저장.
이미지에서는 삼각형을 나타내는 꼭짓점 좌표(x, y, z)의 배열 형태로 표현.
그런데 이런 방법은 각 꼭짓점이 평균적으로 6번 반복 저장되어 공간이 낭비됨.
Indexed Triangle Set (인덱스 삼각형 집합)
정점을 공유하여 저장 공간을 줄임.
verts[0], [1], .... 등의 정점 데이터 따로 저장해두고,
이것들의 인덱스를 활용해서 삼각형들을 만들고 있다.
이런 메쉬들을 OBJ 파일 형식으로 저장함
주로 인덱스 형태의 폴리곤 메쉬를 위한 널리 사용되는 파일 형식임
이런 파일 형식을 통해 다음과 같은 속성들을 지원해줌
- 위치(Position), 노멀(Normal), 텍스처 좌표(Texture Coordinate) 등 속성을 지원.
- 삼각형 및 사각형 폴리곤 허용.
- 재질(Materials)을 추가할 수 있는 기본 메커니즘 제공.