3차원 그래픽스/Polygon mesh

Chapter 1.2 Polygon mesh

잇쿠아__ 2019. 2. 11. 23:08

이 문서는 개인 공부용으로 쓰였습니다.

- 게임 프로그래밍을 위한 3차원 그래픽스 (한정현)


Chapter 1.2 Polygon mesh


0. 정의


- GPU는 폴리곤 메쉬 처리에 최적화되어 있다.

폴리곤 메쉬의 정점들은 부드러운 곡면을 샘플링한 점들에 불과하다.

폴리곤 메쉬는 정확한 표현법이 아닌 근사적 표현법이다.



OpenGL - 볼록 폴리곤 (평면성과 볼록성) : 처리 속도를 빠르게 하기 위해

Direct3D - 삼각형 폴리곤 (삼각형 메쉬)





_ 메쉬의 해상도가 올라갈수록 본래의 곡면과 흡사해지지만

메쉬를 처리하기 위한 시간이 증가하여 효율성은 떨어지게 된다.


_ 저해상도의 메쉬를 고해상도로 변환하는 과정은 세분화

_ 반대의 과정은 간략화라 한다.




1. 폴리곤 메쉬 표현 기법


- 삼각형 메쉬를 표현하는 가장 단순한 방법은

삼각형을 구성하는 세 개의 정점을 순서대로 나열하는 것이다.


_ 이 표현법은 삼각형 리스트라 부르고, 정점들이 저장된 메모리 공간은 정점 버퍼라 부른다.





t1 (0,1) (0,0) (1,1) 

t2 (0,0) (1,0) (1,1)

t3 (1,1) (1,1) (2,1)


상당히 직관적이지만, 데이터를 중복해 저장한다는 단점이 있다.



_ 인덱스 버퍼

정점 버퍼에 정점들을 중복 없이 저장하고, 이들을 가리키는 인덱스의 별도로 저장.

정점 위치뿐만 아니라 정점의 노멀, 텍스처 좌표 등 다양한 데이터가 포함된다.


0 (0,1)    t1 (0,1,2)

1 (0,0)    t2 (1,3,2)

2 (1,1)    t3 (2,3,4)

3 (1,0)

4 (2,1)


_ 삼각형 스트립

일련의 결합된 삼각형이다.

삼각형을 위해 세 개의 정점 처리가, 그 이후에는 삼각형당 하나의 정점처리를 한다.

렌더링 성능이 낮아, 사각형을 그릴 때는 삼각형 리스트보다 선호된다.

ACMR은 1로 수렴한다.

^(ACMR 정점의 평균개수는 삼각형당 캐쉬 미스 회수와 동일하다)

^(n개의 정점이 있다면 삼각형의 개수는 대략 2n이 된다.)

^(2n개의 삼각형을 위해 n개의 정점을 처리하여, 0.5에 수렴한다.)





2. 노멀 벡터





삼각형 노멀은 v1과 v2의 외적을 이용해 계산된다.


삼각형 노멀의 방향은 정점 순서에 따라 달라진다.


<p1, p2, p3>의 경우 정점이 반시계 방향 정렬

<p1, p3, p2>의 경우 정점이 시계 방향으로 정렬


_오른손 법칙에 따르면, 반시계 방향으로 정렬된 정점은 물체 표면에서 바깥쪽으로

컴퓨터 그래픽스에서 노멀은 물체 바깥을 향하게 하는 것이 관례이다.



_ 정점 노멀

해당 정점을 공유하는 삼각형들의 노멀의 평균으로 정의된다.

모델링 단계에서 계산되고 정점 버퍼에 저장되어 렌더링 단계로 넘겨진다.