불균질 볼륨(Heterogeneous Volume) 액터는 스파스 볼륨 텍스처를 샘플링하는 볼륨 도메인 머티리얼을 렌더링합니다. 이 액터는 패스 트레이서를 통해 볼륨 렌더링을 실시간으로 지원합니다. 불균질 볼륨 액터는 스태틱 또는 애니메이팅된 스파스 볼륨 텍스처(Sparse Volume Textures) 머티리얼을 렌더링할 수 있습니다.

스태틱 단일 볼륨 SVT(왼쪽) 및 애니메이션 SVT(오른쪽)
불균질 볼륨 액터 작업하기
다음 워크플로를 통해 프로젝트에서 불균질 볼륨을 사용할 수 있습니다.
- VDB를 임포트하여 언리얼 엔진에서 스파스 볼륨 텍스처 에셋을 생성합니다.
- SVT 에셋을 샘플링하는 볼륨 도메인 머티리얼을 구성합니다.
- 불균질 볼륨 액터를 씬에 추가하고 액터에 SVT 머티리얼을 할당합니다.
VDB 파일 임포트하기
시작하려면 콘텐츠 브라우저(Content Browser) 로 임포트할 복셀 데이터 베이스(Voxel Data Base, VDB) 파일이 있어야 합니다.
VDB 파일을 임포트하려면 다음 단계를 따릅니다.
- VDB를 콘텐츠 브라우저로 바로 드래그 앤 드롭합니다.
- 콘텐츠 브라우저의 임포트(Import) 버튼을 사용합니다.
VDB에는 스태틱 및 애니메이팅된 VDB 파일을 임포트하기 위한 자체 임포트 창이 있습니다.

스태틱 또는 애니메이팅된 VDB 파일 중에서 선택해서 임포트할 수 있습니다. 스태틱 VDB에는 단일 파일과 여기에 저장된 볼륨 데이터만 포함되어 있지만, 애니메이팅된 VDB는 순차적으로 번호가 지정된 개별 파일의 집합입니다. 애니메이팅된 VDB는 순차적으로 번호가 지정된 VDB 파일 중 하나만 임포트해도 애니메이팅된 VDB가 통째로 임포트됩니다.
VDB에는 이 파일의 데이터와 함께 저장된 다양한 어트리뷰트가 포함될 수 있습니다. 이러한 어트리뷰트는 어트리뷰트 A(Attributes A)와 어트리뷰트 B(Attribute B)로 나뉠 수 있습니다. 일반적으로 수신 데이터를 두 개의 샘플링 어트리뷰트로 분할하여 첫 번째 어트리뷰트 데이터는 8비트 UNORM으로, 두 번째 어트리뷰트 데이터는 16비트 float로 임포트하는 것을 권장합니다.
에픽게임즈 프로젝트의 경우 임포트 시 밀도를 8비트 UNORM으로 푸시하고 다른 모든 데이터는 16비트 float 어트리뷰트 목록을 통해 패스하는 것을 선호합니다.
스파스 볼륨 텍스처를 임포트하고 사용하는 방법에 대한 자세한 내용은 스파스 볼륨 텍스처를 참조하세요.
SVT 머티리얼 구성하기
SVT로 머티리얼을 구성하고 그 머티리얼 내에서 SVT를 사용하는 방법에 대한 자세한 내용은 스파스 볼륨 텍스처를 참조하세요.
불균질 볼륨에는 스파스 볼륨 텍스처를 샘플링하는 볼륨 기반의 머티리얼이 필요합니다. 이러한 머티리얼은 Sparse Volume Texture Sample 노드를 사용하여 SVT를 샘플링하며, 불균질 볼륨과 볼류메트릭 포그(Volumetric Fog), 볼류메트릭 클라우드(Volumetric Clouds) 또는 기타 모든 볼륨 기반 머티리얼과 함께 사용할 수 있습니다.
언리얼 엔진에는 SVT 에셋을 적용할 수 있는 빈 샘플 SVT 머티리얼이 이미 구성되어 있습니다. 콘텐츠 브라우저의 Engine > Engine Materials 에 SparseVolumeMaterial 로 명명된 머티리얼이 바로 샘플 SVT 머티리얼입니다. 이 머티리얼을 복사하여 인스턴스를 생성합니다.
머티리얼 인스턴스를 연 다음 SparseVolumeTexture 파라미터를 오버라이드하고 임포트한 자체 SVT 에셋을 할당 슬롯에 적용합니다.

불균질 볼륨 구성하기
불균질 볼륨을 구성하려면 다음 단계를 따릅니다.
- 액터 배치(Place Actors) 패널을 사용하여 불균질 볼륨(Heterogeneous Volume) 액터를 검색하고 씬에 추가합니다.
- 액터를 선택한 상태에서 디테일(Details) 패널을 사용하여 SVT 머티리얼을 액터에 할당합니다.
- [선택사항] 애니메이팅된 VDB를 임포트한 경우 애니메이션(Animation) 섹션 아래의 재생(Playing) 및 루핑(Looping) 박스에 체크해야 합니다.
불균질 볼륨 액터 프로퍼티
불균질 볼륨 액터에는 다음과 같은 프로퍼티가 있습니다.

프로퍼티 | 설명 |
---|---|
머티리얼 | |
엘리먼트 N | 스파스 볼륨 텍스처에서 샘플링하는 볼륨 기반 머티리얼에 대한 머티리얼 할당 슬롯입니다. |
볼륨 | |
볼륨 해상도(Volume Resolution) | 볼륨 해상도는 SVT로 렌더링 시 자동으로 결정되며 수정할 수 없습니다. |
애니메이션 | |
프레임(Frame) | SVT가 렌더링되는 현재 프레임을 표시합니다. 재생 체크 박스를 선택하지 않은 경우, 애니메이팅된 SVT의 특정 프레임을 지정할 수 있습니다. |
프레임 레이트(Frame Rate) | 프레임이 재생될 속도입니다. |
시작 프레임(Start Frame) | 애니메이팅된 SVT가 시작될 프레임입니다. 임포트된 SVT의 사용 가능 범위에 바인딩됩니다. |
끝 프레임(End Frame) | 애니메이팅된 SVT가 끝날 프레임입니다. 임포트된 SVT의 사용 가능 범위에 바인딩됩니다. |
재생(Playing) | 활성화하면 애니메이팅된 SVT가 한 번 재생됩니다. |
루핑(Looping) | 활성화하면 애니메이팅된 SVT를 시작 프레임부터 끝 프레임까지 처음부터 다시 반복합니다. |
스파스 볼륨 텍스처 스트리밍 | |
문제 차단 요청(Issue Blocking Requests) | 프레임별로 스파스 볼륨 텍스처 데이터를 업데이트할 때 스트리밍 시스템에 차단 알림을 전달합니다. 리얼타임 재생에는 권장되지 않지만, 리얼타임 프레임 레이트를 유지하기 위해 스트리밍 시스템이 더 높은 밉 레벨로 옮겨갈 때의 시네마틱 렌더링에는 유용할 수 있습니다. |
밉 레벨(Mip Level) | SVT가 렌더링되는 텍스처 레벨을 설정합니다. 값이 작을수록 볼륨의 밀도와 퀄리티가 증가합니다. 값이 클수록 밀도와 퀄리티는 감소합니다. |
라이팅 | |
단계 인수(Step Factor) | 레이 마칭 인터그레이터의 단계 크기가 볼륨 해상도의 배수로 발생하도록 조정하는 인수입니다. 이 인수를 증가시키면 마칭 툴의 단계가 길어지고 퍼포먼스를 위해 퀄리티를 희생합니다. |
섀도 단계 인수(Shadow Step Factor) | 레이 마칭 툴의 섀도 계산 단계 크기를 조정하는 인수입니다. 이 인수를 증가시키면 마칭 툴의 단계가 길어지고 퍼포먼스를 위해 퀄리티를 희생합니다. |
섀도 바이어스 인수(Shadow Bias Factor) | 섀도 계산 시 적용되는 초기 복셀 바이어스를 조정하는 인수입니다. 이 인수를 증가시키면 셀프 섀도잉은 감소하지만, 라이트 누출이 발생할 수 있습니다. |
라이팅 다운샘플 인수(Lighting Downsample Factor) | 내부 라이팅 캐시의 볼륨 해상도를 조정하는 인수입니다. 이 인수를 증가시키면 작동 해상도가 효율적으로 낮아져 시스템 메모리 사용량이 감소하고 퍼포먼스가 향상됩니다. 이렇게 하면 퀄리티가 저하되는 효과가 있습니다. SVT는 기본적으로 스파스지만, 내부 라이팅 캐시는 현재 밀도가 높습니다. 내부 라이팅 캐시는 현재 1024x1024x512 복셀보다 큰 볼륨 해상도를 할당하지 않습니다. |
애니메이션
애니메이션 프로퍼티를 사용하여 커스텀 재생 규칙을 제공할 수 있습니다. 기본적으로 시작 프레임 및 끝 프레임 프로퍼티는 임포트된 SVT의 가용 범위에 바인딩되지만, 해당하는 SVT 애니메이션의 일부로만 재생되도록 트리밍될 수 있습니다. 재생은 초당 24프레임의 '시네마틱' 속도로 재생되겠지만, 필요에 따라 조정할 수 있습니다.
재생 체크 박스를 활성화한 경우 SVT는 씬에서 인터랙티브하게 재생되며, 루핑 체크 박스를 활성화한 경우 계속 반복됩니다. 재생 체크 박스를 선택하지 않은 경우, 프레임 텍스트 필드를 우클릭하고 왼쪽이나 오른쪽으로 드래그하여 SVT 가용 프레임의 재생을 스크럽할 수 있습니다.
라이팅
불균질 볼륨 액터와 함께 고퀄리티 볼류메트릭 에셋을 렌더링할 때 디퍼드 렌더링 모델은 레이 마칭을 사용합니다. 각 조정 가능 인수 프로퍼티는 볼륨 해상도 프로퍼티를 기준으로 합니다. 임포트된 SVT의 해상도는 런타임 퍼포먼스와 직접 관련되어 있습니다.
블루프린트
블루프린트에서 Play 및 Set Playing 노드를 사용하여 애니메이션 데이터 시작 및 중지를 트리거할 수 있습니다.
패스 트레이서로 불균질 볼륨 사용하기
나이아가라 플루이드 플러그인을 사용하거나 씬의 불균질 볼륨 액터를 인스턴스화하여 불균질 볼륨을 생성할 수 있습니다. 이러한 볼륨은 패스 트레이서가 활성화될 때 렌더링이 시작됩니다.

패스 트레이서로 렌더링된 나이아가라 플루이드 불균질 볼륨의 예시입니다.
패스 트레이서로 불균질 볼륨을 렌더링하려면 다음을 활성화합니다.
프로젝트 세팅 디폴트 RHI(Default RHI)를 DirectX 12 로 설정합니다. 하드웨어 레이 트레이싱 지원(Support Hardware Ray Tracing) 을 활성화합니다. * 패스 트레이싱(Path Tracing) 을 활성화합니다.
- 플러그인
- [선택사항] 나이아가라 플루이드
사양의 전체 목록은 패스 트레이서를 참조하세요.
나이아가라 플루이드를 사용한 불균질 볼륨
이 기능을 사용하려면 나이아가라 플루이드 플러그인이 활성화되어 있어야 합니다. 자세한 내용은 나이아가라 플루이드를 참조하세요.
나이아가라 플루이드로 렌더링하려면 다음 단계를 따릅니다.
- 콘텐츠 브라우저에서 새 나이아가라 플루이드를 생성합니다.
- 나이아가라 선택 툴 창에서 템플릿 또는 비헤이비어 예시에서 새 시스템 생성(New system from a template or behavior example) 을 선택하고 다음(Next) 을 클릭합니다.
- 창의 3D 가스(3D Gas) 목록에서 예시를 하나 선택합니다.
- 나이아가라 플루이드 에셋을 더블클릭하여 나이아가라 에디터를 엽니다.
- 그래프에서 Niagara Fluid 시스템 노드를 선택합니다.
- 디테일 패널에서 다음을 설정합니다.
- Loop Behavior 를 Infinite 으로 설정합니다.
- Loop Duration 은 5초 미만이어야 합니다.
- 나이아가라 플루이드 에셋을 컴파일하고 저장합니다.
- 나이아가라 플루이드를 씬에 배치합니다.
- 콘솔 창을 열고
r.PathTracing.HeterogeneousVolumes 1
을 입력하여 불균질 볼륨 렌더링을 위한 패스 트레이서 지원을 활성화합니다.
스파스 볼륨 텍스처를 사용한 불균질 볼륨
스파스 볼륨 텍스처로 렌더링하려면 다음 단계를 따릅니다.
- VDB 파일을 임포트하고 스파스 볼륨 텍스처 머티리얼을 구성하여 표시합니다.
- 레벨 에디터에서 액터 배치 패널을 사용해 씬에 불균질 볼륨 액터를 추가합니다.
- 액터의 머티리얼 슬롯에 스파스 볼륨 텍스처 머티리얼을 할당합니다.
- 콘솔 창을 열고
r.PathTracing.HeterogeneousVolumes 1
을 입력하여 불균질 볼륨 렌더링을 위한 패스 트레이서 지원을 활성화합니다.
유용한 콘솔 변수
콘솔 변수 | 설명 | 디폴트 값 |
---|---|---|
r.PathTracing.HeterogeneousVolumes |
불균질 볼륨의 패스 트레이싱을 활성화합니다. | 0 |
r.HeterogeneousVolumes.OrthoGrid |
월드-스페이스 복셀 그리드를 활성화합니다. | 1 |
r.HeterogeneousVolumes.OrthoGrid. MaxBottomLevelMemoryInMegabytes |
복셀화(이미션, 소멸, 알베도)에 사용되는 각 최하위 복셀 그리드의 메모리 한도(메가바이트 단위)를 결정합니다. 권장 시네마틱 디폴트 값은 512입니다. | 128 |
r.HeterogeneousVolumes. OrthoGridShadingRate |
월드-스페이스 복셀 그리드의 활성 셰이딩 레이트를 결정하며, 이 값은 대략 픽셀 너비와 같습니다. 셰이딩 레이트를 낮추면 더 높은 퀄리티의 테셀레이션을 만들 수 있지만, 더 많은 메모리가 필요합니다. 권장 시네마틱 디폴트 값은 1입니다. | 4 |
r.HeterogeneousVolumes.FrustumGrid |
프러스텀에 정렬된 복셀 그리드를 활성화합니다. | 1 |
r.HeterogeneousVolumes.FrustumGrid. MaxBottomLevelMemoryInMegabytes |
복셀화(이미션, 소멸, 알베도)에 사용되는 각 최하위 복셀 그리드의 메모리 한도(메가바이트 단위)를 결정합니다. 권장 시네마틱 디폴트 값은 512입니다. | 128 |
r.HeterogeneousVolumes.FrustumGrid. ShadingRate |
프러스텀에 정렬된 복셀 그리드의 활성 셰이딩 레이트를 결정하며, 이 값은 대략 픽셀 너비와 같습니다. 셰이딩 레이트를 낮추면 더 높은 퀄리티의 테셀레이션을 만들 수 있지만, 더 많은 메모리가 필요합니다. 권장 시네마틱 디폴트 값은 1입니다. | 4 |
r.HeterogeneousVolumes.FrustumGrid. DepthSliceCount |
셰이딩 레이트 1로 렌더링할 때 프러스텀에 정렬된 복셀 그리드의 깊이 단면도 수를 결정합니다. 셰이딩 레이트 2로 렌더링하면 깊이 단면도 수를 256으로 하여 내보내게 됩니다. 권장 시네마틱 디폴트 값은 512 또는 1024입니다. | 512 |
r.HeterogeneousVolumes.Tessellation. FarPlaneAutoTransition |
프러스텀에 정렬된 복셀 그리드의 복셀 크기가 월드-스페이스 복셀 그리드의 복셀 크기와 일치하는 경우 프러스텀에 정렬된 그리드의 원거리 평면을 자릅니다. | 1 |
제한 사항 및 알려진 문제
리얼타임:
- VDB 파일 임포트하기
- SVT를 구성할 때 OpenVDB 파일 내에 적용된 트랜스폼 데이터가 무시됩니다. 현재로서는 아티스트들이 파일을 임포트한 뒤, 에디터 내에서 해당 에셋을 재배치해야 할 것입니다.
- Houdini 같은 타사 패키지는 일반적으로 익스포트 시 프레임별 트랜스폼 데이터를 OpenVDB 파일에 기록합니다. 현재로서는 아티스트가 포그 볼륨을 OpenVDB에 익스포트하기 전에 이 트랜스폼 데이터를 제거해야 할 것입니다. Pyro DOP 네트워크 내에서 동적 크기조절 컨테이너 작업을 비활성화하면 이 행동을 방지할 수 있습니다.
- 리얼타임 렌더링과 패스 트레이서 렌더링 비교
- 이제 스캐터링, 섀도 및 글로벌 일루미네이션을 정확하게 시뮬레이션할 수 있는 패스 트레이서에서 보다 완벽한 렌더링 볼륨 지원을 받을 수 있습니다.
패스 트레이서:
- 각져 보이거나 흐릿한 불균질 볼륨
- 불균질 볼륨 렌더링 시 인터랙티브 패스 트레이싱을 지원하기 위한 디폴트 셰이딩 레이트는 4입니다. 셰이딩 레이트를 1로 낮추면 눈에 보이는 아티팩트는 사라지지만, 올바르게 렌더링하는 데 더 많은 메모리가 필요합니다. 권장 시네마틱 디폴트 셰이딩 레이트는 1이며, 권장 디폴트 메모리 한도는 512입니다. 렌더링 시 무비 렌더 큐 세팅에서 이를 설정하는 것이 좋습니다.
- 렌더에 누락된 복셀
- 월드-스페이스 및 프러스텀에 정렬된 복셀 그리드의 셰이딩 레이트를 낮추면 부과된 메모리 한도에서 허용하는 것보다 더 많은 최하위 복셀을 할당하려 시도할 수 있습니다. 이 경우 복셀이 할당되지 않아 볼륨의 일부가 누락됩니다. 그러면 최하위 메모리를 더 많이 사용하거나 셰이딩 레이트를 올려야 합니다.
- 오버랩된 불균질 볼륨이 각져 보이는 경우
- 월드-스페이스 복셀 그리드의 최하위 복셀 데이터는 영역이 균질 상태로 확인된 경우에 집계됩니다. 균질 상태 탐지는 단일 볼륨이라는 제한 속에서 수행되며, 같은 영역 안에 오버랩되는 볼륨이 있는 경우 잘못 집계될 수 있습니다.
r.HeterogeneousVolumes.Tessellation.BottomLevelGrid.HomogeneousAggregation
을0
으로 설정하여 비활성화하면 집계가 수행되지 않도록 할 수 있습니다.
- 월드-스페이스 복셀 그리드의 최하위 복셀 데이터는 영역이 균질 상태로 확인된 경우에 집계됩니다. 균질 상태 탐지는 단일 볼륨이라는 제한 속에서 수행되며, 같은 영역 안에 오버랩되는 볼륨이 있는 경우 잘못 집계될 수 있습니다.
- 나이아가라 플루이드의 스크린 도어 효과
- 나이아가라 시스템은 나이아가라 에디터가 열려 있을 때만 패스 트레이싱 무효화 이벤트를 트리거합니다. 에디터를 열어 두면 패스 트레이서에서 애니메이션을 올바르게 볼 수 있습니다. 에디터를 닫으면 패스 트레이서가 애니메이션에서 샘플을 계속 축적합니다.
- 불균질 볼륨 액터의 스크린 도어 효과
- 불균질 볼륨 액터는 현재 패스 트레이싱 무효화 이벤트를 트리거하지 않습니다. 액터의 Animate 프로퍼티를 체크 해제하면 애니메이션이 정지됩니다.
추가 리소스
- 나이아가라 플루이드 플러그인
- 나이아가라 플루이드 플러그인에는 불균질 볼륨 렌더링에 사용할 수 있는 예시가 포함되어 있습니다. 프로젝트에서 플러그인을 활성화하면 제공된 템플릿에서 새 나이아가라 시스템을 생성할 수 있습니다. 자세한 내용은 나이아가라 플루이드를 참조하세요.
- 이 페이지의 예시에서 사용된 VDB 파일은 EmberGen으로 제작한 JangaFX의 무료 VDB 세트에서 가져온 것입니다.
- 여기에서 무료 샘플을 다운로드하세요.