| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- do it! 알고리즘 코딩테스트: c++편
- Seoul National University
- file system
- CPP
- BFS
- On-memory file system
- ROS2
- DFS
- deep learning
- Python
- paper review
- Optimization
- SQLD
- Process
- Multimedia
- Machine Learning
- 밑바닥부터 시작하는 딥러닝2
- Data Science
- computer vision
- CNN
- C++
- RNN
- Robocup@Home 2026
- Baekjoon
- Operating System
- Gentoo2
- Linux
- Humble
- cs231n
- System Call
Archives
- Today
- Total
newhaneul
[Multimedia] Lecture 2. Modeling 본문
728x90
본 포스팅은 인하대학교 안남혁 교수님의 [202601-EEC4410-001] Multimedia을 수강하고 공부한 내용을 정리하기 위한 포스팅입니다.
Modeling:
1. Polygon Mesh

- 실시간 컴퓨터 그래픽스 환경에서는 GPU 처리에 최적화된 명시적(Explicit) Polygon Mesh 표현 방식을 선호한다.
- Mesh의 정점(Vertex)들은 매끄러운 실제 표면을 샘플링한 것으로, 완벽히 정확한 형태가 아닌 근사치(Approximation)에 해당한다.

- 정점의 수(해상도)가 높아질수록 디테일은 정교해지지만, 이를 처리하는데 필요한 시간 역시 증가하므로 정확도와 효율성 사이의 Trade-off 관계에 놓여있다.
2. 배열을 통한 데이터 구조 최적화

- Non-Indexed Representation: 정점 배열(Vertex array)만 사용하여 삼각형을 구성하는 방식이다. 단순히 3개의 정점을 선형 순서로 읽어 삼각형을 만들지만, 데이터가 중복 저장되어 비효율적이다.

- Indexed Representation: 이 문제를 해결하기 위해 인덱스 배열(Index array)을 도입한다. 정점 배열에는 정점 데이터를 한 번만 저장하고, 인덱스 배열에 삼각형을 구성하는 3개의 인덱스 번호를 저장한다. 인덱스 배열을 위한 추가 공간이 필요하지만, 중복된 정점 데이터를 제거함으로써 얻는 저장 공간 절약 효과가 훨씬 크다.
** 2024-2 퀴즈 **

- 정답: Indexed Representation
3. 표면 법선 (Surface Normal)과 정점 법선 (Vertex Normal)

- 표면 법선은 컴퓨터 그래픽스에서 매우 중요한 속성 중 하나다.
- 삼각형의 법선은 면을 구성하는 두 벡터의 외적(Cross product)을 통해 계산되며, 항상 길이가 1인 단위 벡터(Unit vector)로 변환하여 사용한다
-
$$a \times b = (a_y b_z - a_z b_y, a_z b_x - b_z a_x, a_x b_y - a_y b_x)$$
-

- 정점을 배치하는 순서에 따라 법선의 방향이 달라진다. 다면체의 바깥쪽을 향하는 올바른 법선 방향을 얻기 위해, 일반적으로 정점을 반시계 방향(CCW)으로 정렬한다. 반대로 시계 방향(CW)으로 정렬하면 반대 방향의 법선이 생성된다.


- 삼각형 단위의 법선보다 정점 법선(Vertex normal)이 그래픽스에서는 더 중요하다. 정점 법선은 해당 정점을 공유하는 모든 삼각형 법선들의 평균을 내어 계산하며, 곡면의 법선을 더 자연스럽게 근사하는 역할을 한다.
4. 모델의 익스포트(Export)와 임포트(Import)

- 3ds Max나 Maya와 같은 외부 모델링 도구에서 제작한 폴리곤 매시 데이터는 파일 형태로 추출(Export)된다.
- 이 파일은 Unity와 같은 3D 응용 프로그램으로 불러와(Import) 정점 배열 및 인덱스 배열 데이터로 변환된다.

- 이 과정에서 널리 사용되는 확장자 중 하나는 .obj 포맷이다. 해당 파일 내부에는 정점 위치(v), 정점 법선(vn), 그리고 인덱스 정보가 담긴 면(f) 데이터가 텍스트 형태로 저장되어 있다.

- 이미지 속 정육면체 윗면에 있는 파란색 삼각형을 보면, 세 개의 꼭짓점에서 뻗어 나간 빨간색 화살표(법선)가 모두 완전히 똑같은 위쪽 방향을 가리키고 있다.
- 이처럼 완전히 평평한 면을 구성하는 정점들은 서로 같은 법선 방향을 공유하게 된다. 반대로 모서리처럼 꺾이는 부분에서는 한 위치의 정점이 여러 개의 법선을 가져야 하는 경우도 발생한다.

- 외부 파일에 텍스트로 기록된 모델 정보가 프로그램 내부의 두 가지 핵심 배열(Array)로 변환되는 과정을 보여준다. 예시의 구(Sphere) 모델은 26개의 정점과 48개의 삼각형으로 이루어져 있다.
- 정점 배열 (Vertex Array): 파일에 있는 v(정점 위치)와 vn(정점 법선) 데이터를 합쳐서 하나의 표로 만든다. 중복을 제외하고 총 26개의 고유한 정점 데이터가 0번부터 25번까지 저장된다.
- 인덱스 배열 (Index Array): 각각의 삼각형을 그리기 위해 정점 배열에서 몇 번째 점을 꺼내 써야 하는지 그 '번호표'만 순서대로 나열해 둔 곳이다. 삼각형 하나당 3개의 꼭짓점이 필요하므로, 48개의 삼각형을 표현하기 위해 총 $48 \times 3 = 144$개의 번호가 저장된다.
728x90
'4. University Study > Multimedia' 카테고리의 다른 글
| [Multimedia] Lecture 9. Lighting (0) | 2026.04.04 |
|---|---|
| [Multimedia] Lecture 8. Texturing (0) | 2026.04.03 |
| [Multimedia] Lecture 7. Rasterizer, Fragment Shader, Output Merger (0) | 2026.03.28 |
| [Multimedia] Lecture 5. Vertex Shader (0) | 2026.03.22 |
| [Multimedia] Lecture 4. Geometric Transformations (1) | 2026.03.15 |
