-
[컴퓨터 그래픽스] Modeling(polygon mesh)컴퓨터그래픽스 2024. 2. 16. 13:47
1. Implicit representation vs Explicit representation

쉽게 말해 전자는 수학적인 식을 통한 렌더링, 후자는 polygon mesh를 통한 렌더링(오른쪽)을 말한다.
polygon mesh를 이용한 방법은 물체를 완벽하게 나타내진 않지만, 우리 컴퓨터의 GPU는 이를 processing 하는 것에 최적화 되어있다.
2. Polygon Mesh.

이렇게 물체의 표면을 삼각형, 또는 사각형으로 쪼개놓은 놈들을 polygon mesh 라고 하는데, 보통 triangle이 많이 쓰인다. Mesh가 촘촘해지면 보기는 좋은데, 계산량이 많이 늘어난다.
메쉬에 대한 데이터는 다음과 같이 index 형태로 저장된다.

위에 주전자 그림과 함께 보면 더 이해가 편하다. 단순하게 좌표를 저장해 놓은 vertex array와, index array가 구분되어 있는데, 이는 duplicate data를 방지하기 위함이다.
index array 선언 순서는 반시계방향!! 이다. 단 첫 번째 정점은 아무거나 뽑아도 무방하다. (t1의 정점 0, 1, 2 중 아무거나 먼저 써도 되지만, 꼭 반시계 방향을 지켜야 한다는 뜻이다) (내 학점 갉아먹은 중요한 내용이다)


조금 더 자세히 설명하자면, 각 메쉬의 법선 벡터(Normal)는 저렇게 물체의 바깥쪽으로 뻗어 있어야 한다. 이때 오른속을 위의 사진처럼 위치시키면 엄지를 법선 벡터라 했을 때 나머지 손가락이 반시계 방향으로 돌고 있는 것을 확인할 수 있다.
방금 언급한 Normal은 바로 평면에서의 법선 벡터(triangle normal)다. 그러나 더 중요한 것은 꼭지점의서의 법선 벡터다(vertex normal).
이는 다음과 같은 식으로 계산된다.

한 꼭지점을 둘러싸고 있는 6개 평면의 noraml을 계산하고, 그 normal의 normal을 계산하는 방식이라 생각하면 편하다. (연산량무엇)
polygon mesh는 오프라인에서 그래픽스 프로그램을 통해 만들어지고, unity와 같은 응용 프로그램으로 넘겨진다. 이때 내보내기 과정을 export, 불러오기 과정을 import라 하는데 명칭은 다른 분야에서 사용하는 것과 흡사하다.
export를 할 때는 다양한 파일 포맷이 있는데, 그 중 .obj 를 가장 많이 사용한다. 요 파일은 그림과 같이 정점의 위치, 정점에서의 normal, 인덱스를 가지고 있다.

.obj 파일은 import를 통해 그래픽스 응용 프로그램의 메모리 공간으로 옮겨진다. 한 물체가 지닌 정점의 개수(=인덱스의 개수)를 알면 메모리 관리에 용이하다.
'컴퓨터그래픽스' 카테고리의 다른 글
[컴퓨터 그래픽스] Lighting (0) 2024.02.16 [컴퓨터 그래픽스] Image Texturing (0) 2024.02.16 [컴퓨터 그래픽스] Rasterizer (0) 2024.02.16 [컴퓨터 그래픽스] Vertex Processing (0) 2024.02.16 [컴퓨터 그래픽스] Spaces and Transforms (0) 2024.02.16