Artoke

폴리곤 메시 — 3D 모델의 기본 골격

폴리곤 메시 — 3D 모델의 기본 골격

게임 속 캐릭터, 애니메이션 영화의 공룡, 3D 프린터로 뽑는 장난감. 이 셋은 전부 같은 재료로 만들어졌습니다.

바로 삼각형입니다.

믿기 어렵겠지만 사실입니다. 화면 속 그 매끈한 얼굴도, 가까이 들여다보면 아주 작은 삼각형 수만 개가 이어 붙어 있습니다. 이 삼각형 조각보를 폴리곤 메시(polygon mesh)라고 부릅니다.

메시가 뭘까?

종이접기를 떠올려 보세요. 평평한 종이를 접어서 학을 만듭니다. 종이는 원래 납작한데, 접는 선을 따라 꺾으면 입체가 됩니다.

3D 모델도 똑같습니다. 평평한 조각들을 여러 개 이어 붙여서 입체를 만듭니다. 다만 종이접기와 다른 점이 하나 있습니다. 컴퓨터는 종이를 접지 않고, 아주 많은 작은 평면 조각을 딱딱 붙입니다.

축구공을 생각해 보세요. 축구공은 완벽한 공처럼 보이지만, 사실은 오각형과 육각형 가죽 조각을 꿰매 붙인 것입니다. 조각 하나하나는 평평합니다. 그런데 잔뜩 모아 놓으니 둥글어 보입니다.

폴리곤 메시가 바로 이겁니다. 평평한 조각으로 둥근 것을 흉내 내는 기술.

세 가지 부품: 점, 선, 면

메시를 만드는 부품은 딱 세 가지입니다. 이름은 어려워 보이지만 내용은 아주 쉽습니다.

폴리곤 메시 — 3D 모델의 기본 골격 도식

정점 — 위치를 정하는 점

영어로 vertex(버텍스)라고 합니다. 여러 개일 때는 vertices(버티시즈)입니다.

정점은 그냥 "여기!"라고 찍어 놓은 점입니다. 지도 위에 압정을 꽂는 것과 같습니다. 다만 지도는 평면이라 가로·세로 두 숫자면 되지만, 3D는 높이도 있어서 숫자 세 개가 필요합니다.

예를 들어 (3, 5, 2)라면 "오른쪽으로 3, 앞으로 5, 위로 2만큼 간 자리"라는 뜻입니다.

모서리 — 점을 잇는 선

영어로 edge(엣지)입니다.

점 두 개를 실로 연결하면 선이 생깁니다. 그게 모서리입니다. 주사위를 손에 쥐고 만져 보세요. 손가락에 걸리는 뾰족한 선들이 전부 모서리입니다.

면 — 선이 둘러싼 평평한 조각

영어로 face(페이스)입니다.

선 세 개가 삼각형을 만들면, 그 안쪽에 평평한 땅이 생깁니다. 이게 면입니다. 실제로 색이 칠해지고 우리 눈에 보이는 부분이 바로 이 면입니다.

점만 있으면 안 보입니다. 선만 있으면 뼈대만 보입니다. 면이 있어야 비로소 "물체"처럼 보입니다.

왜 하필 삼각형일까?

면은 삼각형일 수도 있고, 사각형일 수도 있고, 오각형이나 육각형일 수도 있습니다. 각진 모서리가 여러 개인 면은 엔곤(n-gon)이라고 부릅니다.

그런데 컴퓨터는 삼각형을 제일 좋아합니다. 이유가 있습니다.

사각형 종이 한 장을 상상해 보세요. 네 귀퉁이를 잡고 서로 다른 방향으로 비틀면 어떻게 될까요? 종이가 휘어집니다. 더 이상 평평하지 않습니다.

이제 삼각형 종이로 해 보세요. 세 귀퉁이를 아무리 이리저리 옮겨도 절대 휘어지지 않습니다. 항상 평평합니다.

이건 수학적으로 확실한 사실입니다. 점 세 개는 언제나 하나의 평면 위에 있습니다. 의자 다리가 세 개면 절대 흔들리지 않는 것과 같은 이치입니다. 다리가 네 개인 의자는 바닥이 조금만 울퉁불퉁해도 덜컹거리죠.

그래서 게임이나 그래픽 카드는 결국 모든 면을 삼각형으로 쪼개서 처리합니다. 사각형을 주면? 대각선을 하나 그어서 삼각형 두 개로 나눠 버립니다.

삼각형이 많을수록 매끈해진다

여기서 재밌는 규칙이 나옵니다.

공을 만든다고 해 봅시다. 삼각형 20개로 만들면? 뾰족뾰족한 돌멩이처럼 보입니다. 200개로 만들면? 좀 둥글어집니다. 20,000개로 만들면? 진짜 매끈한 공처럼 보입니다.

폴리곤 메시 — 3D 모델의 기본 골격 도식

그럼 무조건 많이 쓰면 되는 거 아닐까요? 그렇지 않습니다.

삼각형이 많아지면 컴퓨터가 계산할 것도 많아집니다. 게임이 뚝뚝 끊기기 시작합니다. 그래서 3D를 만드는 사람들은 항상 저울질을 합니다. "얼마나 예쁘게""얼마나 빠르게" 사이에서요.

그래서 이런 요령을 씁니다. 주인공 얼굴처럼 가까이 보이는 곳은 삼각형을 촘촘하게. 멀리 있는 배경 바위는 듬성듬성. 어차피 멀리 있으면 각진 게 안 보이니까요.

컴퓨터는 이걸 어떻게 기억할까?

여기서 한 걸음 더 들어가 봅시다.

메시를 만들었다고 끝이 아닙니다. 컴퓨터는 이 점·선·면 정보를 어딘가에 적어 놔야 합니다. 마치 레고 설명서처럼요.

그런데 적는 방법이 여러 가지입니다. 각각 잘하는 게 다릅니다.

정점-정점 방식

정점끼리 서로 연결 관계를 기록하는 정점-정점 메시 구조
Figure 2. Vertex-vertex meshes · 출처: 폴리곤 메시 — 3D 모델의 기본 골격

가장 단순한 방식입니다. 점마다 "나는 누구랑 이어져 있어"만 적어 둡니다.

친구 관계도 같은 겁니다. "민수는 영희, 철수, 지영이와 친구." 이게 전부입니다.

장점은 메모가 아주 짧다는 것입니다. 자리를 적게 차지합니다. 단점은 "면이 몇 개야?" 같은 질문에 바로 답을 못 한다는 겁니다. 매번 관계를 따라가며 다시 계산해야 합니다.

면-정점 방식

면이 자신을 이루는 정점 목록을 가지는 면-정점 메시 구조
Figure 3. Face-vertex meshes · 출처: 폴리곤 메시 — 3D 모델의 기본 골격

가장 많이 쓰이는 방식입니다.

면마다 "나는 이 점 세 개로 만들어졌어"라고 적어 둡니다. 반대로 점도 "나는 이 면들에 속해 있어"라고 적어 둡니다. 서로가 서로를 알고 있는 겁니다.

이러면 화면에 그릴 때 아주 편합니다. 그래픽 카드가 원하는 게 딱 이 정보거든요. "삼각형 하나 그려. 꼭짓점은 여기, 여기, 여기." 바로 던져 줄 수 있습니다.

날개 모서리 방식

모서리를 중심으로 주변 정보를 기록하는 날개 모서리 메시 구조
Figure 4. Winged-edge meshes · 출처: 폴리곤 메시 — 3D 모델의 기본 골격

이름이 특이하죠. 영어로 winged-edge, 즉 "날개 달린 모서리"입니다.

이 방식은 모서리를 주인공으로 삼습니다. 모서리 하나가 자기 양쪽 점, 양쪽 면, 그리고 이웃한 모서리들까지 전부 기억합니다. 마치 날개를 펼쳐서 주변을 다 끌어안은 모양이라 이런 이름이 붙었습니다.

메모가 길어지는 게 단점입니다. 대신 모양을 고치는 작업에는 최고입니다. 점 하나를 끌어당길 때 어디가 같이 움직여야 하는지 즉시 알 수 있으니까요. 그래서 3D 모델링 프로그램들이 이 방식을 좋아합니다.

정리하면

메시 구성 요소들의 관계를 나타낸 클래스 다이어그램
UML class diagram · 출처: 폴리곤 메시 — 3D 모델의 기본 골격

어떤 방식이 제일 좋을까요? 정답은 없습니다.

가방 고르는 것과 같습니다. 소풍 갈 땐 작은 배낭, 여행 갈 땐 큰 캐리어. 상황에 맞는 게 좋은 겁니다.

  • 자리를 아끼고 싶다 → 정점-정점 방식
  • 빨리 화면에 그리고 싶다 → 면-정점 방식
  • 모양을 자주 고치고 싶다 → 날개 모서리 방식

실제 프로그램들은 작업할 땐 날개 모서리로 다루다가, 화면에 뿌릴 땐 면-정점으로 바꿔서 넘겨주기도 합니다. 상황마다 갈아입는 셈입니다.

구멍이 뚫린 면도 있다

보통 면은 삼각형처럼 볼록한 모양입니다. 고무줄을 씌웠을 때 딱 맞는, 움푹 들어간 곳이 없는 모양이죠.

그런데 꼭 그래야 하는 건 아닙니다. 별 모양처럼 안쪽으로 파인 오목한 면도 있을 수 있습니다. 도넛처럼 가운데가 뻥 뚫린 면도 가능합니다.

다만 이런 면은 다루기가 까다롭습니다. 그래서 대부분은 결국 삼각형 여러 개로 잘게 쪼개서 씁니다. 복잡한 종이를 가위로 삼각형 조각들로 자르는 것처럼요.

와이어프레임 — 뼈대만 보기

3D 프로그램에는 재밌는 기능이 있습니다. 면의 색을 지우고 선만 남겨서 보는 겁니다. 이걸 와이어프레임(wire-frame), 우리말로 "철사 뼈대"라고 합니다.

엑스레이 사진 같은 겁니다. 겉모습 대신 속 구조가 드러납니다.

왜 이렇게 볼까요? 색까지 다 칠하면 컴퓨터가 힘들어합니다. 뼈대만 보면 훨씬 가볍고 빠릅니다. 모양을 다듬는 중에는 이 상태로 작업하다가, 다 끝나면 색을 입혀서 확인하는 거죠.

그래서 이게 어디에 쓰일까?

사실 여러분은 이미 매일 폴리곤 메시를 보고 있습니다.

  • 게임 — 캐릭터, 무기, 건물, 나무. 전부 메시입니다.
  • 애니메이션 영화 — 픽사, 디즈니의 3D 캐릭터들도 마찬가지입니다.
  • 3D 프린터 — 프린터에 넣는 파일이 바로 삼각형 목록입니다.
  • 건축 — 짓기 전에 건물을 미리 만들어 봅니다.
  • 의학 — CT로 찍은 몸속 장기를 입체로 만들어 봅니다.

마지막으로

3D 그래픽은 어려워 보입니다. 하지만 뿌리는 아주 단순합니다.

점을 찍는다. 선으로 잇는다. 면을 채운다. 끝.

이 세 가지를 수만 번, 수백만 번 반복하면 살아 있는 것 같은 캐릭터가 나옵니다. 레고 블록 하나는 별거 아니지만, 수천 개를 쌓으면 성이 되는 것과 똑같습니다.

다음에 게임을 할 때 캐릭터 얼굴을 한번 자세히 봐 보세요. 특히 손가락 끝이나 귀 같은 곳을요. 아주 가끔, 매끈해야 할 곳이 살짝 각져 보이는 순간이 있습니다.

그게 바로 삼각형이 인사하는 순간입니다.

출처

광고

리깅 파이프라인 자동화 도구

반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.

리깅 도구 보기