LOD (Level of Detail) 시스템 개요

LOD는 거리나 중요도에 따라 모델의 디테일(폴리곤 수, 텍스처 해상도 등)을 줄이는 시스템이다.
카메라로부터 멀리 있는 오브젝트는 디테일이 낮아도 시각적으로 큰 차이가 없으므로, 연산량을 줄이는 데 효과적이다.

LOD가 필요한 이유

  • 렌더링 파이프라인에서 GPU 연산량을 절감할 수 있다
  • 디테일 높은 메시가 많을수록 드로우콜/버텍스 수가 급증한다
  • 군중, 오픈월드, 배경 오브젝트에서 필수적으로 적용된다

LOD 유형 분류

유형설명
Static Mesh LOD정적 메시의 다단계 버전. 거리 기반으로 자동 전환됨
Skeletal Mesh LOD본 구조를 포함한 메시의 다단계 버전. 애니메이션도 포함
HLOD (Hierarchical LOD)멀리 있는 여러 메시를 하나의 단순 메시로 합쳐서 렌더링

Static Mesh LOD 설정 방법

  1. 메시 에디터 열기
  2. LOD Settings 패널에서 LOD0~LOD3 등을 수동/자동으로 추가 가능
  3. LOD Import 또는 LOD Generate 기능으로 자동 생성 가능
  UStaticMesh* Mesh = LoadObject<UStaticMesh>(...);
Mesh->GenerateAutoLODs(); // C++에서 자동 생성
  

자동 생성 기준

  • LOD마다 Percent Reduction (예: 50%, 20%, 5%)
  • 원본 메시를 기반으로 단순화된 메시 생성 (Simplygon 또는 UE 내장 기능 사용)

Skeletal Mesh LOD 설정 방법

  1. Skeleton Editor 또는 Mesh Editor에서 LOD 세부 설정 가능
  2. LOD마다 본 개수, 스킨 품질, 머티리얼 교체 가능

기능별 최적화 예

항목최적화 방식
본 개수 줄이기LOD1부터는 얼굴, 손가락 본 제거
애니메이션 품질 저하LOD에서 스켈레탈 리깅 간소화
텍스처 해상도 감소마테리얼 단순화 및 압축

LOD 전환 거리 설정

Screen Size 값을 통해 카메라 기준 전환 시점을 조정할 수 있다.

예시:

  LOD0: ScreenSize = 1.0f     // 가까이
LOD1: ScreenSize = 0.6f
LOD2: ScreenSize = 0.3f
LOD3: ScreenSize = 0.05f    // 멀리
  

ScreenSize는 상대적인 픽셀 크기로, 클수록 가까운 거리에서 사용된다.

HLOD (Hierarchical LOD)

  • 여러 Static Mesh Actor들을 하나로 묶어 멀리서 보면 한 오브젝트처럼 처리하는 방식이다.
  • World Partition 시스템에서 자동으로 지원됨

생성 절차

  1. World Partition 활성화
  2. HLOD Layer 생성 및 대상 Actor 지정
  3. Build HLOD 실행
  4. 멀리 있을 땐 단순 메시, 가까이 오면 원래 메시로 전환됨

장점

  • Draw Call 감소
  • GPU/CPU 연산 최적화
  • 멀리 있는 지역의 디테일 생략 가능

실전 팁

  • LOD 자동 생성 시 메시가 망가지는 경우, 수동 메시 제작이 더 효과적일 수 있다
  • 캐릭터의 얼굴이나 손은 낮은 LOD에서 완전히 제거할 수 있다
  • 이동형 카메라를 사용하는 게임일수록 LOD 설정이 성능에 큰 영향을 준다
  • Niagara, Decal, Light 등은 별도의 LOD가 없지만, Significance Manager 연동으로 유사 효과를 낼 수 있다

요약

항목내용
StaticMesh LOD메시 단순화로 폴리곤 수 절감
SkeletalMesh LOD본 수, 애니 품질, 텍스처 해상도 조절
HLOD멀리 있는 오브젝트는 묶어서 단순화된 메시로 렌더링
전환 기준ScreenSize 값으로 전환 거리 제어
자동 생성에디터 또는 C++에서 설정 가능 (Simplygon 사용 가능)