티스토리 뷰
TMI(Triangle Mesh Information) Project #0 - Modeling과 Mesh의 구성 요소에 대해
배고플땐스윙칩 2021. 4. 22. 01:53그래픽스를 하는 사람들에게는 익숙한 물체가 있습니다.
그건 바로 유타 주전자 입니다. 이 주전자를 아래 오른쪽 그림처럼 Computer에서 표현하고 싶을 때는 어떻게 해야할까요? 바로 Modeling이라는 방법을 통해 실제 물체를 컴퓨터가 이해할 수 있는 Model로 만들게 됩니다.


그럼 Modeling이란 무엇일까요?
Modeling은 간단하게 말하면 복잡한 현실세계를 추상화, 단순화, 명확화 하기 위해서 미리 약속한 표기법 대로 표현하는 것을 말합니다. 그래서 우리는 Mesh Modeling을 통해 현실세계의 유타 주전자를 컴퓨터가 이해할 수 있도록 점으로, 선으로, 면으로 표현할 수 있게 됩니다. 그러면 이제 Mesh가 뭔지 알아봐야 할 것 같습니다.
Mesh란?
Mesh는 물체의 표면을 나타내는 Polygon의 모음이라고 할 수 있습니다. 위의 유타 주전자는 삼각형의 모음으로 이루어진 Mesh이므로 Triangle Mesh라고 부르며, 우리가 앞으로 다룰 Mesh의 모습입니다. 이 외에도 아래처럼 여러 Polygon으로 Mesh를 표현할 수 있습니다. 또한, Mesh는 물체의 표면을 나타내므로 내부는 비어있는것이 특징입니다.

Polygon
PolygonMesh는 Polygon으로 이루어져있고 우리는 앞으로 Triangle Mesh에 집중할 것이기 때문에 여러가지 polygon 중 Triangle로 설명하도록 하겠습니다.
다시 말해, Triangle Mesh는 Triangle로 이루어져 있고 각 Triangle을 Face라고 지칭합니다. 아래는 Standard bunny 모델을 여러 크기의 Triangle Mesh로 Modeling한 결과입니다.

아래 그림은 제가 직접 Triangle을 그려본 것입니다. 왼쪽부터 차례로 Triangle을 이루고 있는 Face, Edge, Vertex를 표현한 것입니다.



정리해보면 현실세계에 있는 물체를 컴퓨터에서 표현하기 위해 우리는 Modeling이라는 작업을 하게 됩니다.
Mesh Modeling을 통해 실제 물체를 컴퓨터가 표현할 수 있는 Polygon(Triangle) Mesh로 만들고, Triangle Mesh는 Triangle로 구성이 되어있으며 각 Triangle은 Face, Edge, Vertex로 구성되어 있습니다.
Vertex
3차원 Model은 3차원 좌표(x, y, z)를 가지로 있는 표면 위의 Vertex로 구성이 되어 있습니다. Vertex 개수가 많으면 많을 수록 Model은 해상도가 높아지고 섬세한 부분까지 표현할 수 있게 됩니다.
Edge
Edge는 두 Vertex를 이은 선을 이야기 합니다. Triangle Mesh에서는 기본적으로 두 Edge가 꼬이거나 겹치지 않도록 만들어 줍니다. 또한, 하나의 Edge는 1개(열린 Model에서의 Boundary) 또는 2개의 Face만 가지게 됩니다.
HalfEdge
HalfEdge는 방향성을 가지는 Edge를 말합니다. 시작 Vertex와 도착 Vertex가 있으며, 한 Edge에 붙어있는 Face 개수만큼의 HalfEdge를 가지게 됩니다. 즉 Edge에 Face가 1개만 있는 Boundary 영역이라면 HalfEdge도 1개, Face가 2개 있는 경우에는 HalfEdge도 2개를 가지게 됩니다. 이러한 방향성 덕분에 여러가지 이점을 가지게 되는데 이 부분은 뒤에서 따로 다루도록 하겠습니다.

Face
Face는 Vertex 3개로 이루어진(Triangle Mesh에서) 하나의 면을 이야기합니다. Face에는 Normal이 있어 앞 뒤 구분이 가능합니다.
이걸로 우리는 Mesh를 구성하고 있는 가장 기초적인 부분에 대해서 알게 되었습니다.
다음 시간에는 Triangle Mesh를 표현하는 여러가지 파일 포멧에 대해서 알아보도록 하겠습니다.
'Mesh Processing' 카테고리의 다른 글
TMI(Triangle Mesh Information) Project #2 - Mesh를 표현하는 여러가지 Data Structure들 (0) | 2021.05.03 |
---|---|
TMI(Triangle Mesh Information) Project #1 - 여러가지 Mesh File Format에 대해 (0) | 2021.04.29 |
TMI Project 시작 (2) | 2021.04.21 |
Cork Boolean Library 빌드 및 사용법 (0) | 2021.02.11 |
MPIR 라이브러리 빌드 및 사용 (0) | 2021.02.04 |
- Total
- Today
- Yesterday
- reference type
- Unity
- AABB
- Transformation
- CollisionDetection
- opengl
- NDC
- Scriptable Render Pipeline
- perspective projection
- 루빅스큐브
- C#
- Bounding Volume Hierarchy
- SRP
- transform
- MeshProcessing
- collision detection
- value type
- 강화학습
- 유니티
- 최적화
- VTK
- Unreal
- Mesh
- 참조 형식
- Mesh Processing
- normalized device coordinate
- RL
- RubiksCube
- 값 형식
- DirectX12
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |