On this page
article
LOD
LOD (Level of Detail) 시스템 개요
LOD는 거리나 중요도에 따라 모델의 디테일(폴리곤 수, 텍스처 해상도 등)을 줄이는 시스템이다.
카메라로부터 멀리 있는 오브젝트는 디테일이 낮아도 시각적으로 큰 차이가 없으므로, 연산량을 줄이는 데 효과적이다.
LOD가 필요한 이유
- 렌더링 파이프라인에서 GPU 연산량을 절감할 수 있다
- 디테일 높은 메시가 많을수록 드로우콜/버텍스 수가 급증한다
- 군중, 오픈월드, 배경 오브젝트에서 필수적으로 적용된다
LOD 유형 분류
유형 | 설명 |
---|---|
Static Mesh LOD | 정적 메시의 다단계 버전. 거리 기반으로 자동 전환됨 |
Skeletal Mesh LOD | 본 구조를 포함한 메시의 다단계 버전. 애니메이션도 포함 |
HLOD (Hierarchical LOD) | 멀리 있는 여러 메시를 하나의 단순 메시로 합쳐서 렌더링 |
Static Mesh LOD 설정 방법
- 메시 에디터 열기
LOD Settings
패널에서 LOD0~LOD3 등을 수동/자동으로 추가 가능LOD Import
또는LOD Generate
기능으로 자동 생성 가능
UStaticMesh* Mesh = LoadObject<UStaticMesh>(...);
Mesh->GenerateAutoLODs(); // C++에서 자동 생성
자동 생성 기준
- LOD마다 Percent Reduction (예: 50%, 20%, 5%)
- 원본 메시를 기반으로 단순화된 메시 생성 (Simplygon 또는 UE 내장 기능 사용)
Skeletal Mesh LOD 설정 방법
Skeleton Editor
또는Mesh Editor
에서 LOD 세부 설정 가능- 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 시스템에서 자동으로 지원됨
생성 절차
World Partition
활성화HLOD Layer
생성 및 대상 Actor 지정Build HLOD
실행- 멀리 있을 땐 단순 메시, 가까이 오면 원래 메시로 전환됨
장점
- Draw Call 감소
- GPU/CPU 연산 최적화
- 멀리 있는 지역의 디테일 생략 가능
실전 팁
- LOD 자동 생성 시 메시가 망가지는 경우, 수동 메시 제작이 더 효과적일 수 있다
- 캐릭터의 얼굴이나 손은 낮은 LOD에서 완전히 제거할 수 있다
- 이동형 카메라를 사용하는 게임일수록 LOD 설정이 성능에 큰 영향을 준다
- Niagara, Decal, Light 등은 별도의 LOD가 없지만, Significance Manager 연동으로 유사 효과를 낼 수 있다
요약
항목 | 내용 |
---|---|
StaticMesh LOD | 메시 단순화로 폴리곤 수 절감 |
SkeletalMesh LOD | 본 수, 애니 품질, 텍스처 해상도 조절 |
HLOD | 멀리 있는 오브젝트는 묶어서 단순화된 메시로 렌더링 |
전환 기준 | ScreenSize 값으로 전환 거리 제어 |
자동 생성 | 에디터 또는 C++에서 설정 가능 (Simplygon 사용 가능) |