[그래픽스] 모델링

YEOM JINSEOP·2023년 11월 18일
0

Computer Graphics

목록 보기
2/14

Polygon Mesh

  • 3차원 물체를 표현하는 다양한 기법 중,
    실시간 그래픽스에서는 polygon mesh를 압도적으로 많이 사용함.

  • polygon mesh는 부드러운 곡면을 근사적으로 표현한 것.
    얼마나 많은 정점을 사용하여 근사할 것인지가 중요한 문제.
    정점 개수가 많으면 mesh의 resolution이 높다, 정점 개수가 적으면 mesh의 resolution이 낮다.

  • 가장 널리 쓰이는 것은 삼각형으로만 구성된 '삼각형 mesh(triangle mesh)'
    모델링 작업을 위해서는 '사각형 mesh(quadrilateral mesh 혹은 간단히 quad mesh)'가 선호됨.

  • polygon mesh 표현
    1) 정점 배열(vertex array)
    가장 단순한 방법. 삼각형을 구성하는 세 개의 정점을 순서대로 나열.
    한 번에 세 개씩 정점을 읽어서 하나의 삼각형을 정의.

2) 인덱스 배열(index array)
정점 배열(vertext array)의 정점들을 중복 없이 저장하고 이들을 가리키는 인덱스를 기록하여, 효율적으로 메모리 사용.


Surface Normal

  • 3D 물체를 rendering할 때 핵심적인 열할을 하는 surface에 수직인 normal vector.

  • triangle normal과 vertex normal로 분리해서 논의.

triangle normal

  • 삼각형의 세 정점 p1,p2,p3p_1, p_2, p_3 가 순서대로 주어졌을 때,
    정점 p1p_1과 정점 p2p_2를 잇는 벡터를 v1v_1이라 하고,
    정점 p1p_1과 정점 p3p_3을 잇는 벡터를 v2v_2라고 하자.
    triangle normal은 v1v_1v2v_2cross product로 정의된다.
    (그래픽스에서는 모든 normal을 단위 벡터로 표현한다.)
    n12=v1×v2v1×v2n_{12} = \frac{v_1 \times v_2}{||v_1 \times v_2||}

  • normal은 세 정점의 순서에 따라 방향이 달라진다. (cross product이기 때문, 오른손 법칙을 해보자)
    예를 들어, 세 정점이 p1,p3,p2p1, p3, p2로 주어진 경우의 n21n_{21}n12n_{12}의 반대 방향이다.

  • 참고로, index array는 정점을 반시계 방향으로 정렬하여 저장한다.

vertex normal

  • 그래픽스에서 실제 중요한 것은 정점 normal(vertex normal)

  • 부드러운 곡면을 sampling하여 polygon mesh의 정점을 얻은 것이므로,
    vertex normal은 해당 vertex가 sampling한 곡면에 수직이어야 한다.

  • 원래의 곡면 없이 polygon mesh만 주어졌을 때, vertex normal을 계산하는 정답은 없다.
    다만 그럴듯한 결과를 내는 기법들이 사용될 뿐이다.
    가장 간단한 방법은 하나의 정점을 공유하는 모든 triangle normal의 average를 취하는 것이다.


자료 출처: 한정현 교수님 연구실 강의자료 https://media.korea.ac.kr/books/

0개의 댓글

관련 채용 정보