출처: https://www.youtube.com/watch?v=CAfdIW8M6HA&list=PLYEC1V9tJOl03WLDoUEKbiYW_Xt4W6LTl&index=4
한정현님의 컴퓨터그래픽스 3장 강의를 기반으로 제작한 블로그입니다.

Implicit representation: 데이터를 수식이나 함수를 사용해 연속적이고 압축된 형태로 표현
explicit representation: 데이터를 명확하고 직관적으로 표현하며 모든 요소가 직접적으로 정의
Triangle mesh: 삼각형으로만 구성된 polygon mesh

삼각형을 사용하는 방법이 더 유리하지만 일반적으로 사각형을 사용하는 quad 방식도 널리 사용됩니다.

Level Of Detail(LOD): Polygon mesh에서 점의 개수로 나타내는 해상도

vertex array: 각 삼각형에 대응하는 꼭짓점들을 저장한 배열

Index array: vertex array에 꼭짓점에 대응되는 번호를 저장하고, 저장된 번호를 이용해서 꼭짓점들을 기록하는 배열

삼각형의 각 꼭짓점에서 Normal(법선 벡터) 구하는 방법

실제로 t1을 작성할 때 (p,r,q)가 아닌 (p,q,r) 반시계 방향으로 작성해야합니다. 단 삼각형의 시작점은 중요하지 않습니다.

일반적으로 구의 normal을 구한다고 했을 때, 하나의 점을 구로부터 sampling해서 해당 점으로부터의 normal을 구하게 됩니다.

Polygon mesh에서의 vertex normal을 구하기 위해서는 여러가지 삼각형의 normal을 이용해서 구할 수 있습니다.

하나의 application(max, unity)에서 만든 파일을 다른 application에서 실행할 때 일반적으로 .obj 파일을 기반으로 공통되게 사용할 수 있습니다.

하나의 구가 26개의 꼭짓점과, 48개의 삼각형으로 구성되어있다고 가정해 보겠습니다.

마지막 f(face)를 이용해서 vertex array와 index array를 쉽게 만들 수 있습니다. 단 중복되는 내용은 기록하지 않도록 주의해야 합니다.

참고로 위의 그림처럼 2개의 점이 같은 normal vector를 가질 경우 하나만 저장하도록 되어있습니다.