티스토리 뷰

고려대학교 정보대학 컴퓨터학과

2019년 1학기 <컴퓨터그래픽스> 모델링

 

강의영상 플레이리스트

https://www.youtube.com/watch?v=774mc7tC594&list=PLYEC1V9tJOl03WLDoUEKbiYW_Xt4W6LTl&index=3

 

강의자료

https://media.korea.ac.kr/books/

 

 

Books · media lab

Introduction to Computer Graphics with OpenGL ES Review and Recommendations 이 책의 영문 제목 “Introduction to Computer Graphics”를 “A Painless Introduction to Computer Graphics”라는 닉네임으로 바꿔서 부르고 싶다. 수학을

media.korea.ac.kr


컴퓨터그래픽스 모델링

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에 대해 인덱싱

 

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함