메시
고친 사람 github-actions[bot]
메시는 작은 삼각형 여러 개를 이어 붙여 입체 모양 하나를 나타냅니다. 게임이나 3D 애니메이션에 나오는 캐릭터, 건물처럼 화면에 그려지는 물체 대부분이 메시로 만들어집니다. 장치를 그물처럼 잇는 네트워크의 메시와는 이름만 같습니다. 이 글은 그래픽스에서 쓰는 뜻만 다룹니다.
쉽고 빠른 이해
메시는 정점 여러 개와 그 정점들을 잇는 삼각형 정보를 한데 모아, 화면에 그릴 물체 하나의 모양을 통째로 담습니다.
정점 하나하나를 따로 다루면 어떤 점이 어떤 점과 이어져 면을 이루는지 매번 새로 정해야 합니다. 메시는 이 연결 정보를 한 번 정해서 물체가 사라질 때까지 그대로 씁니다.
어떻게 도나:
- 물체의 표면 위 점들을 정점 좌표로 늘어놓습니다
- 정점을 몇 개씩 묶어 삼각형으로 삼을지 정합니다(대개 인덱스로 정점 번호를 가리킵니다)
- 이렇게 만든 삼각형들을 모아 메시 하나로 지닙니다
곡면을 매끈하게 보이려면 삼각형 수를 늘려야 합니다. 그만큼 저장할 데이터와 그래픽 칩이 처리할 양도 늘어납니다.
상세
작은 삼각형 조각을 이어 붙여 큰 입체 모양을 만드는 일은 종이 공작에서도 봅니다. 지구본 모형을 삼각형 여러 장으로 나눠 각 변끼리 풀로 붙이면 둥근 공 모양이 나옵니다. 메시도 이런 방식으로 작은 도형을 여러 개 이어 붙여 하나의 입체 모양을 만든 자료입니다.
메시는 물체가 삼각형 여러 개를 이어 붙여야 알아볼 수 있는 형태를 가질 때 씁니다. 캐릭터, 건물, 지형처럼 굴곡이 있는 물체 대부분이 여기 해당합니다. 반대로 화면 전체를 덮는 사각형 한 장처럼 삼각형 한두 개로 충분한 도형은 메시로 만들지 않고 프리미티브(정점 몇 개로 이룬 가장 작은 도형)만 바로 그립니다.
메시를 이루는 정점과 프리미티브
메시를 이루는 재료는 정점과 프리미티브입니다. 정점(정점, 도형의 꼭짓점 하나를 나타내는 좌표)은 메시가 갖는 가장 작은 위치 정보이고, 프리미티브(프리미티브, 정점 몇 개를 이어 만든 가장 작은 도형)는 그 정점들을 엮어 만든 도형입니다. 삼각형 한 개는 프리미티브 한 개입니다. 메시는 이런 프리미티브를 수십 개에서 수만 개까지 모아 놓은 것입니다.
메시 안의 프리미티브는 서로 떨어져 있지 않습니다. 이웃한 삼각형은 변이나 꼭짓점을 함께 씁니다. 그 덕분에 여러 삼각형이 이어져 하나의 매끈한 표면처럼 보입니다. 이렇게 이어 붙인 결과가 캐릭터의 몸통이나 자동차의 차체 같은 알아볼 수 있는 형태를 만듭니다.
인덱스로 나눠 쓰는 정점
삼각형 여러 개가 변을 나눠 가지면 같은 정점이 여러 삼각형에 동시에 걸립니다. 정점 데이터를 삼각형마다 새로 적으면 걸치는 만큼 같은 좌표가 여러 번 저장됩니다.
이 중복을 막으려고 정점은 배열에 한 번만 저장합니다. 각 삼각형은 인덱스(인덱스, 정점 하나를 가리키는 번호)로 그 정점을 가리킵니다. 삼각형 세 개가 정점 하나를 같이 쓰면 그 정점은 배열에 한 번, 인덱스로는 세 번 나타납니다.
아래 그림에서 정점 C 는 프리미티브 1 과 프리미티브 2 가 함께 가리킵니다. 정점 데이터는 한 벌만 있습니다. 두 삼각형이 인덱스로 같은 정점을 가리키는 것입니다.
flowchart TD
subgraph M["메시"]
P1["프리미티브 1"]
P2["프리미티브 2"]
end
A["정점 A"] --> P1
B["정점 B"] --> P1
C["정점 C"] --> P1
C --> P2
D["정점 D"] --> P2
프리미티브 묶음마다 갈리는 머티리얼
메시 하나가 프리미티브를 전부 한 덩어리로만 갖지는 않습니다. 프리미티브를 몇 묶음으로 나눠 둡니다. 묶음마다 머티리얼(머티리얼, 표면이 어떻게 보이는지만 정하는 정보)을 따로 붙일 수 있습니다.
캐릭터 메시를 예로 들면 피부를 이루는 프리미티브 묶음과 눈동자를 이루는 묶음을 나눠 둡니다. 각각 다른 머티리얼을 붙입니다. 머티리얼을 바꿔도 메시가 나타내는 형상 자체는 그대로입니다. 겉보기만 달라질 뿐입니다.
삼각형 수가 만드는 대가
곡면을 삼각형으로 흉내 낼수록 매끈해 보이려면 삼각형 수를 늘려야 합니다. 삼각형 수가 늘면 저장할 정점과 인덱스 데이터가 늘어납니다. 그래픽 칩이 화면에 칠할 도형 수도 함께 늘어납니다.
그래서 메시를 만들 때는 화면에 크게 보이는 부분만 삼각형을 촘촘하게 나눕니다. 멀리서 작게 보이는 부분은 성기게 남겨 절충합니다.
관련 항목
메시를 이루는 조각
정점 · 프리미티브 · 인덱스 · 프리미티브 토폴로지
메시가 속하는 더 큰 단위
그래픽스 · 그래픽스 파이프라인 · 3D 모델
메시에 얹는 표면 정보
메시를 다르게 부르는 이름
폴리곤 메시 · 삼각형 세트 · 다각형
다른 이름: Mesh · mesh