티스토리 뷰
고려대학교 정보대학 컴퓨터학과
2019년 1학기 <컴퓨터그래픽스> 모델링
강의영상 플레이리스트
https://www.youtube.com/watch?v=774mc7tC594&list=PLYEC1V9tJOl03WLDoUEKbiYW_Xt4W6LTl&index=3
강의자료
https://media.korea.ac.kr/books/
컴퓨터그래픽스 모델링
Keywords
- Polygon Mesh
- Mesh vertex(vertices)
- LOD (level of detail)
- Indexed representation for polygon mesh
- Mesh normal vs. vertex normal
- Import / export of polygon mesh
Polygon Mesh
3차원 구를 어떻게 정의할까? 일반적으로 음함수로 표현할 수 있지만, GPU는 음함수 연산이 아닌 폴리곤 연산에 최적화 되어 있다
Mesh vertex (vertices) = 정점
mesh vertex = 곡면(smooth surface)을 샘플링한 꼭지점(point)
따라서 폴리곤 메쉬는 사물의 정확한 표현이 아닌 추정된 표현이다.
폴리곤 메쉬의 가장 간단한 형태 = 삼각형 메쉬
전형적으로 삼각 폴리곤의 갯수는 약 vertice의 2배
실제 모델링 단계에서는 사각형 메쉬를 사용하는 것이 매우 유리하며 널리 사용된다
폴리곤 메쉬의 갯수 = 해상도 (a resolution or level of detail, LOD)
정점 늘리기 refinement / 정점 줄이기 simplification
정점이 많을수록 정교한 표현이 가능하지만 메쉬 처리시간도 늘어난다 -> LOD control!
- 클로즈업 등 자세한 묘사가 필요하다면 refinement
- 멀리 있는 배경에 위치한다면 simplification
Polygon Mesh - Non-indexed Representation
폴리곤 메쉬는 컴퓨터에서 어떻게 표현되는가
Single vertex array -> 불필요한 정보, 중복 정보를 포함하여 낭비가 발생한다
Polygon Mesh - Indexed Representation
정점을 중복없이 나열하고 저장하기 위해 두개의 어레이를 사용
실제로 vertex array에는 좌표를 포함한 매우 많은 정보가 담기므로 중복을 제거하는 것은 큰 효과가 있음
Surface Normals, 법선 벡터
법선 벡터 = 평면에 수직인 벡터
Cross product 연산으로 구할 수 있음
컴퓨터 그래픽스에서는 모든 normal을 길이1 단위벡터로 표현 -> normalization 수행함
시계 반대방향 순서를 따라서 나열함 counter-clockwise, CCW
삼각형의 꼭지점이 시계방향으로 \(<p_1, p_3, p_2>\) 순서로 주어졌다면?
\(<p_1, p_2, p_3>\)와 비교했을 때 벡터의 방향이 180도 반대가 된다 - 물체 안쪽을 파고들도록
그래서 컴퓨터 그래픽스에서는 normal 방향이 "물체의 바깥"을 향하도록 하는 것이 관례
-> 반시계 방향 CCW으로 정점을 나열해야 함!
-> 시작점은 중요하지 않음
예시
삼각형 노말보다 중요한 것이 정점 노말 (vertex normal)
- 정점마다 노말을 할당한다? 직관적으로 이해하기 어려움
- 곡면을 샘플해서 얻은 것이 폴리곤 메쉬이며, 곡면은 tangent plane으로 수학적 정의할 수 있음
- tangent plane에 수직인 벡터가 노말이며, 이러한 노말을 정점마다 할당해주는 것
정점 노말을 구하려면 탄젠트 플레인이 반드시 필요할까? NO!
일반적으로 주어지는 것은 폴리곤 메쉬 뿐
정점을 공유하는 삼각형 노말의 평균을 내는 방식으로 쉽게 정점 노말을 구할 수 있다 (+normalization)
정점 노말은 앞서 살펴본 vertex array에 반드시 포함되어야 할 정보!
Export and Import
ex. 3d Max -> Export -> File (*.obj, ...) -> Import -> Unity
Obj 파일 포맷이 폴리곤 메쉬를 저장하는 방식
정점과 정점 노말은 반드시 갯수가 동일하지 않지만, 구(sphere)는 특수한 경우로 모든 정점이 고유한 노말을 갖게 됨
(직육면체의 경우 각 면마다 동일한 정점 노말을 공유하므로 정점 노말은 6개만 저장)
- v, vertices, 정점 3차원 좌표
- vn, vertex normals, 정점 노말
- 삼각형 메쉬 정보 (각 꼭지점의 인덱스 정보, v // vn) -> (v1//vn1, v2//vn2, v3//vn3)
obj 파일은 위 정보에 대한 index array까지 추가 생성되어 포함하게 됨
48개의 삼각형 메쉬 각각은 3개 정점으로 구성되므로 48*3 = 144개 정점 position에 대해 인덱싱
'3D Computer Graphics > Learnings' 카테고리의 다른 글
컴퓨터그래픽스_좌표계와 변환(3) (0) | 2022.04.23 |
---|---|
컴퓨터그래픽스_좌표계와 변환(2) (0) | 2022.04.22 |
컴퓨터그래픽스_좌표계와 변환(1) (0) | 2022.04.21 |
컴퓨터그래픽스_수학 기초 (0) | 2022.04.15 |
컴퓨터그래픽스_서론 (0) | 2022.04.15 |
- Total
- Today
- Yesterday
- PoseNet
- tensorflow.js
- 컴퓨터그래픽스 강의
- 메타버스
- vertex shader
- 원유로필터
- 컴퓨터그래픽스 좌표계와 변환
- 컴퓨터그래픽스
- 고려대학교 한정현
- 3d affine transform
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |