Modeling

모델을 저장하는 방법에 대해 알아봅나디.읽는데 4분 정도 걸려요.

Coordinate Systems

어떤 데이터든 간에 3D 공간상에 표현하기 위해서는 좌표 시스템을 먼저 구현해야 한다.
그래야 공간상의 좌표의 조합으로 모델을 생성할 수 있기 때문이다.

231023-195004

개발 환경에 따라 왼손 좌표계를 쓰거나 오른손 좌표계를 쓰는데, 참고로 유니티는 왼손 좌표계를 사용한다.
따라서 유니티 관련 포스트는 모두 왼손 좌표계 기준으로 기술될 예정이다.


Polygonal Meshes

231023-195154

모든 3D 오브젝트를 삼각형 평면을 이어붙힌 형태로 표현하는 기법으로, 가장 많이 사용되는 방식이다.
이런 데이터를 저장하는 방식에는 크게 3가지로 나뉘는데 각각 어떤식으로 데이터를 관리하는지 살펴보자.

mesh들은 OBJ, 3DS, POV 등의 확장자로 관리되는데,
OBJ의 경우 아래와 같은 정보를 저장한다.

  • vertex의 좌표
  • 각 vertex의 택스쳐 좌표
  • 각 vertex의 수직 vertex
  • 위의 vertex들로 표현돤 face

Vertex-Vertex

231023-195357

오직 점들만 데이터로 관리하는 자료구조를 사용한다.
각 vertex의 좌표와 인접한(연결된) vertex를 저장한다.

면에 대한 정보는 저장하지 않기에 추가적인 연산을 통해 얻어낼 수 밖에 없다.
그렇기에 용량은 가장 작지만, 연산에 대한 부담이 있는 모델이다.

Face-Vertex

231023-195627

점과 면을 데이터로 관리하는 자료구조를 사용하며, 가장 많이 사용되는 방식이다.
face는 face를 구성하고 있는 vertex들의 집합으로 관리되고,
vertex는 vertex의 좌표와 인접한 faces들의 집합으로 관리된다.

Winged Edge

231023-195936

점과 면, 추가로 모서리의 데이터로 관리하는 자료구조를 사용하며, mesh를 변화시켜야 할 상황에 유용하게 사용할 수 있다.
face는 face를 구성하고 있는 edge들의 집합으로 관리되고,
vertex는 vertex에 연결된 edge들의 집합으로 관리된다.
마지막으로 edge시점, 종점의 좌표분할하는 면, 그리고 연결된 edge 중 4개의 edge로 관리되는데,
4개의 edge는 시점에 연결된 back CCW, back CW, 종점에 연결된 front CCW, front CW 순으로 관리된다. (그림 참고)