HLOD 레이어 체인 구성
거리별 단계적 LOD 전환 시스템 설계
레이어 체인 개념
다단계 HLOD로 원거리까지 커버
HLOD 레이어 체인은 부모-자식 관계로 여러 HLOD 레이어를 연결하여, 거리에 따라 점진적으로 단순화된 표현을 사용합니다.
HLOD Layer Chain (Buildings) 구성:
[HLOD_Buildings_LOD0]
│ Type: Instancing
│ CellSize: 12800 (128m)
│ LoadingRange: 25600 (256m)
▼
[HLOD_Buildings_LOD1] ← Parent Layer
│ Type: MergedMesh
│ CellSize: 25600 (256m)
│ LoadingRange: 51200 (512m)
▼
[HLOD_Buildings_LOD2] ← Parent Layer
Type: SimplifiedMesh
CellSize: 51200 (512m)
LoadingRange: 102400 (1km)
거리별 표시:
0~256m : 원본 액터
256~512m : HLOD LOD0 (Instancing)
512m~1km : HLOD LOD1 (Merged)
1km+ : HLOD LOD2 (Simplified)
HLOD Layer Asset 생성
Content Browser에서 레이어 설정
Content Browser에서 HLOD Layer 생성:
1. Content Browser > Right-Click
2. Miscellaneous > HLOD Layer (또는 World Partition > HLOD Layer)
3. 이름 지정: "HLOD_Buildings_LOD0"
기본 설정 항목:
├── Layer Type
│ └── Instancing / MergedMesh / SimplifiedMesh / ApproximatedMesh
│
├── Cell Size (cm)
│ └── 이 레이어가 커버하는 셀 크기
│
├── Loading Range (cm)
│ └── 이 HLOD가 표시되는 최대 거리
│
├── Parent Layer (선택)
│ └── 이 레이어의 부모 HLOD Layer Asset
│
└── Generation Settings
├── Generate Nanite Enabled Mesh
├── Bake Materials
└── Texture Size
체인 구성 예시: 도시 환경
City Sample 스타일 HLOD 설정
// 건물용 HLOD Chain
HLOD_City_Buildings_LOD0
├── Type: Instancing
├── CellSize: 12800
├── LoadingRange: 25600
└── ParentLayer: HLOD_City_Buildings_LOD1
HLOD_City_Buildings_LOD1
├── Type: MergedMesh
├── CellSize: 25600
├── LoadingRange: 51200
├── BakeMaterials: true
├── TextureSize: 1024
└── ParentLayer: HLOD_City_Buildings_LOD2
HLOD_City_Buildings_LOD2
├── Type: SimplifiedMesh
├── CellSize: 51200
├── LoadingRange: 102400
├── TargetTriangleCount: 2000
└── ParentLayer: None (최종 레이어)
// 폴리지용 별도 HLOD
HLOD_City_Foliage
├── Type: ApproximatedMesh
├── CellSize: 25600
├── LoadingRange: 76800
├── VoxelResolution: 128
└── GenerateNanite: true
건물과 폴리지는 별도의 HLOD 체인으로 분리하세요. 각각 다른 최적화 전략이 필요하며, 로딩 범위도 다르게 설정할 수 있습니다.
액터에 HLOD Layer 할당
에디터에서 HLOD Layer 지정
액터에 HLOD Layer 할당:
방법 1 - Details 패널:
1. 액터 선택
2. Details > World Partition 카테고리
3. "HLOD Layer" 프로퍼티에서 레이어 선택
방법 2 - 다중 선택:
1. 여러 액터 선택 (Shift+Click)
2. Details > World Partition > HLOD Layer
3. 동일한 레이어 일괄 할당
방법 3 - Data Layer와 연계:
특정 Data Layer의 모든 액터에 동일한 HLOD Layer를 설정하면
콘텐츠 관리가 용이해집니다.
// 액터 클래스에서 기본 HLOD Layer 지정
UCLASS()
class MYGAME_API AMyBuildingActor : public AActor
{
GENERATED_BODY()
public:
AMyBuildingActor()
{
// 기본 HLOD Layer 설정 (에디터에서 오버라이드 가능)
// 실제 할당은 에디터에서 수행
}
// HLOD에 포함될지 여부
UPROPERTY(EditAnywhere, Category = "World Partition")
bool bIncludeInHLODs = true;
};
셀 크기와 로딩 범위 설계
성능과 품질의 균형
| 레이어 | 셀 크기 | 로딩 범위 | 비율 |
|---|---|---|---|
| LOD0 | 128m | 256m | 2x |
| LOD1 | 256m | 512m | 2x |
| LOD2 | 512m | 1024m | 2x |
셀 크기
HLOD가 생성되는 단위. 작을수록 정밀하지만 HLOD 수가 증가합니다.
로딩 범위
HLOD가 표시되는 거리. 셀 크기의 2배가 일반적인 시작점입니다.
일반적으로 부모 레이어의 셀 크기는 자식의 2배로 설정합니다. 로딩 범위도 마찬가지로 2배씩 증가시키면 자연스러운 전환이 가능합니다.
핵심 요약
- Parent Layer 설정으로 HLOD 체인 구성
- 거리가 멀어질수록 더 단순한 HLOD 타입 사용
- 셀 크기 2배 증가가 일반적인 패턴
- 건물과 폴리지는 별도 체인으로 분리
- HLOD Layer는 Content Browser에서 Asset으로 생성
도전 과제
배운 내용을 직접 실습해보세요
HLOD Layer 0(Cell Size 12800, SimplifiedMesh)과 HLOD Layer 1(Cell Size 51200, ApproximateMesh)로 2단계 체인을 구성하세요. 거리에 따라 단계적으로 HLOD가 전환되는 것을 확인합니다.
HLOD 레이어별 CellSize와 LoadingRange를 다양하게 조합하며, 전환 시 팝인(pop-in) 현상이 최소화되는 최적값을 찾으세요. 카메라를 이동하며 전환 품질을 평가합니다.
건물(3단계 체인), 식생(2단계), 소품(1단계) 등 오브젝트 타입별로 다른 HLOD 체인 전략을 수립하고 적용하세요. 각 타입의 시각적 중요도와 성능 비용을 고려한 최적 구성을 도출합니다.