Artoke

레벨 오브 디테일(LOD): 멀리 있는 건 대충 그려도 괜찮아

레벨 오브 디테일(LOD): 멀리 있는 건 대충 그려도 괜찮아

게임 속 세상은 아주 넓습니다. 나무도 많고, 건물도 많고, 사람도 많습니다. 그런데 컴퓨터가 그 많은 걸 전부 아주 정밀하게 그리려면 힘이 부칩니다. 그래서 똑똑한 방법을 씁니다.

가까이 있는 건 자세하게, 멀리 있는 건 대충.

이걸 어려운 말로 레벨 오브 디테일(Level of Detail), 줄여서 LOD라고 부릅니다. 우리말로는 "세부 묘사의 단계"쯤 됩니다.

운동장 저쪽 친구를 떠올려 보세요

친구가 바로 앞에 서 있으면 어떻게 보이나요? 눈썹, 속눈썹, 옷의 단추까지 다 보입니다.

그런데 그 친구가 운동장 반대편에 서 있다면요? 그냥 사람 모양 하나로 보입니다. 눈썹은 보이지도 않습니다.

그럼 여기서 질문. 운동장 저쪽 친구의 속눈썹을 열심히 그릴 필요가 있을까요? 없습니다. 어차피 안 보이니까요.

게임 엔진도 똑같이 생각합니다. 안 보이는 건 안 그립니다. 그래서 힘을 아낍니다.

3D 모델은 점을 이어 만든 그물

게임 속 물건은 을 잔뜩 찍고, 그 점들을 선으로 이어서 만듭니다. 그물처럼 생겼다고 해서 와이어프레임(그물망)이라고 부릅니다.

점이 많을수록 매끈합니다. 점이 적을수록 각지고 울퉁불퉁합니다.

공(구)을 예로 들어 볼까요? 점을 5000개 찍으면 아주 동그란 공이 됩니다. 점을 150개만 찍으면 축구공보다도 각진 덩어리가 됩니다.

레벨 오브 디테일(LOD): 멀리 있는 건 대충 그려도 괜찮아 도식
점 5000개가 넘는 아주 촘촘한 그물망 공
A finely tassellated wireframe sphere featuring over 5000 sample points. · 출처: 레벨 오브 디테일 (LOD)

위 공은 점이 5000개가 넘습니다. 아주 매끈합니다. 하지만 컴퓨터 입장에서는 무거운 손님입니다.

같은 공, 점만 줄여 보기

이제 점을 조금씩 줄여 보겠습니다. 신기하게도, 화면에서 작게 보이면 차이를 알아채기 어렵습니다.

점 약 2900개짜리 그물망 공
A highly tassellated wireframe sphere, almost 2900 points. · 출처: 레벨 오브 디테일 (LOD)

점 약 2900개. 아직도 충분히 동그랗습니다.

점 약 1600개짜리 그물망 공
A wireframe sphere with roughly 1600 sample points. · 출처: 레벨 오브 디테일 (LOD)

점 약 1600개. 보통 거리에서는 이 정도면 충분합니다.

점 약 700개짜리 그물망 공
A wireframe sphere with almost 700 vertices, good when viewed from a distance. · 출처: 레벨 오브 디테일 (LOD)

점 약 700개. 멀리 두고 보면 아무 문제 없습니다.

점 150개 미만짜리 그물망 공
A wireframe sphere with less than 150 sample points but still enough for far away objects. · 출처: 레벨 오브 디테일 (LOD)

점 150개 미만. 가까이서 보면 각져 보이지만, 저 멀리 콩알만 하게 보인다면 아무도 눈치채지 못합니다.

바로 이게 LOD의 핵심입니다. 똑같은 물건을 여러 버전으로 미리 만들어 두고, 거리에 따라 골라 쓰는 것입니다.

거리에 따라 옷을 갈아입는다

보통 게임에서는 나무 한 그루를 이렇게 준비합니다.

  • LOD 0 — 아주 가까울 때 쓰는 정밀한 나무 (잎사귀 하나하나)
  • LOD 1 — 조금 멀 때 쓰는 나무 (잎을 뭉뚱그림)
  • LOD 2 — 더 멀 때 쓰는 나무 (기둥과 덩어리만)
  • LOD 3 — 아주 멀 때 쓰는 나무 (납작한 그림 한 장)

플레이어가 다가가면 나무가 슬쩍 LOD 0으로 바뀌고, 멀어지면 다시 LOD 3으로 돌아갑니다. 무대 뒤에서 재빨리 옷을 갈아입는 배우와 비슷합니다. 관객은 눈치채지 못합니다.

이렇게 몇 단계로 딱딱 끊어서 바꾸는 방식을 DLOD(불연속 LOD)라고 부릅니다. 가장 흔하고, 가장 쉽게 쓸 수 있는 방식입니다.

카메라를 중심으로 거리에 따라 LOD 구간이 나뉘고, 시야 밖은 잘라내는 모습을 보여주는 그림
An example of various DLOD ranges. Darker areas are meant to be rendered with higher detail. An additional culling operation is run, discarding all the information outside the frustum (colored areas). · 출처: 레벨 오브 디테일 (LOD)

아예 안 보이는 건 그리지도 않는다

LOD와 짝꿍처럼 함께 쓰는 기술이 하나 더 있습니다. 컬링(culling)입니다. "골라내서 버리기"라는 뜻입니다.

카메라가 앞을 보고 있다면, 등 뒤에 있는 물건은 화면에 안 나옵니다. 그럼 그릴 필요가 있을까요? 없습니다. 그래서 아예 계산에서 빼 버립니다.

카메라가 볼 수 있는 범위를 절두체(프러스텀)라고 부릅니다. 손전등 불빛이 퍼지는 모양을 떠올리면 됩니다. 그 불빛 밖에 있는 건 전부 버립니다.

레벨 오브 디테일(LOD): 멀리 있는 건 대충 그려도 괜찮아 도식

왜 이렇게까지 할까?

게임 화면은 1초에 30번, 60번씩 새로 그려집니다. 눈 한 번 깜빡이는 동안 수십 장의 그림을 그려 내는 셈입니다.

그런데 화면 속에 나무가 1만 그루 있다고 해 봅시다. 나무 하나가 점 5000개라면? 점이 5천만 개입니다. 그걸 1초에 60번 계산하라고요? 컴퓨터가 힘들어서 화면이 뚝뚝 끊깁니다.

여기서 LOD가 등장합니다. 멀리 있는 9900그루를 점 150개짜리로 바꾸면 계산량이 확 줄어듭니다. 화면은 부드럽게 돌아가고, 눈에 보이는 그림은 거의 똑같습니다.

안 보이는 정성은 낭비다. LOD는 이 한 문장으로 요약됩니다.

거리 말고 다른 기준도 있어요

LOD를 정하는 기준이 꼭 거리만 있는 건 아닙니다.

  • 중요도 — 주인공은 멀리 있어도 자세하게. 배경 돌멩이는 가까워도 대충.
  • 움직이는 속도 — 빠르게 스쳐 지나가는 물체는 어차피 흐릿하게 보입니다. 대충 그려도 티가 안 납니다.
  • 화면에서 차지하는 크기 — 화면에서 손톱만 하게 보이면 단순한 버전으로 충분합니다.

자동차 경주 게임을 떠올려 보세요. 창밖으로 휙휙 지나가는 가로수를 누가 자세히 볼까요? 아무도 안 봅니다. 그러니 대충 그려도 됩니다.

LOD가 잘못되면 생기는 일

물론 LOD도 실수할 수 있습니다. 가장 흔한 문제가 LOD 팝핑입니다.

플레이어가 다가가는 순간, 나무가 갑자기 "뿅!" 하고 자세한 버전으로 바뀌는 게 눈에 띄는 현상입니다. 마치 마술처럼 모양이 확 변해 버립니다. 보기에 어색하죠.

그래서 아티스트들은 여러 방법을 씁니다. 단계 사이를 서서히 섞어 주기도 하고, 바뀌는 거리를 더 멀리 밀어 두기도 합니다. 단계별 모양 차이를 최대한 줄이는 것도 중요합니다.

반대로, LOD를 너무 아끼면 게임이 무거워집니다. 반대로 너무 과감하게 줄이면 멀리 있는 건물이 뭉개져 보입니다. 이 사이에서 균형을 잡는 게 아티스트의 실력입니다.

정리해 볼까요

  • LOD는 거리나 상황에 따라 물건의 정밀도를 바꾸는 기술입니다.
  • 3D 모델은 점을 이어 만든 그물이고, 점이 적을수록 가볍습니다.
  • 가까우면 자세한 버전, 멀면 단순한 버전을 골라서 씁니다.
  • 시야 밖 물체는 아예 그리지 않습니다(컬링).
  • 덕분에 게임이 부드럽게 돌아갑니다. 그리고 대부분 눈치채지 못합니다.

그림을 잘 그리는 것만큼이나 안 그려도 되는 걸 골라내는 것도 실력입니다. LOD는 그 실력의 이름입니다.

출처

광고

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

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

리깅 도구 보기