Sprite & Mesh 렌더러
Niagara의 시뮬레이션-렌더링 분리 아키텍처와 가장 기본적인 두 렌더러를 학습합니다.
시뮬레이션-렌더링 분리
Niagara 렌더러의 핵심 설계 원칙
Niagara의 가장 중요한 아키텍처 특징 중 하나는 시뮬레이션과 렌더링이 완전히 분리되어 있다는 점입니다. Cascade에서는 파티클 시뮬레이션과 렌더링이 결합되어 있었지만, Niagara에서는 하나의 시뮬레이션에 여러 렌더러를 동시에 연결할 수 있습니다.
Fire Emitter
// 하나의 파티클 시뮬레이션에 3개의 렌더러 연결
Render:
└ Sprite Renderer // 불꽃 스프라이트 표시
└ Light Renderer // 불빛 효과
└ Mesh Renderer // 불씨 파편 메시
| 렌더러 타입 | 용도 | 비용 |
|---|---|---|
| Sprite Renderer | 카메라를 향하는 2D 빌보드 | 낮음 |
| Mesh Renderer | 3D 스태틱 메시 인스턴싱 | 중간 |
| Ribbon Renderer | 파티클을 연결하는 띠/트레일 | 중간 |
| Light Renderer | 파티클 위치에 동적 라이트 생성 | 높음 |
| Component Renderer | 임의의 UE 컴포넌트 스폰 | 매우 높음 |
Sprite Renderer 상세
가장 기본적이고 가벼운 렌더러
Sprite Renderer는 각 파티클을 카메라를 향하는 2D 쿼드(빌보드)로 표시합니다. 가장 가볍고 일반적인 렌더러입니다.
주요 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
Material |
UMaterial | 파티클 표면에 적용할 머티리얼 |
Alignment |
Enum | Unaligned(카메라 향함), Velocity Aligned, Custom Alignment |
Facing Mode |
Enum | Face Camera, Face Camera Position, Custom Facing Vector |
Sort Mode |
Enum | None, View Depth, View Distance, Custom Ascending/Descending |
Sub Image Size |
Vector2 | 텍스처 아틀라스의 행/열 수 (스프라이트 시트 애니메이션) |
Cutout Texture |
UTexture2D | 알파 기반 자동 메시 생성으로 오버드로우 감소 |
Sprite Attribute 바인딩
// 자동 바인딩되는 Attribute (기본값)
Position Binding : Particles.Position
Color Binding : Particles.Color
Sprite Size Binding : Particles.SpriteSize
Sprite Rotation Binding: Particles.SpriteRotation
Velocity Binding : Particles.Velocity // Alignment에 사용
Sub Image Index : Particles.SubImageIndex // 스프라이트 시트 프레임
Dynamic Material 0 : Particles.DynamicMaterialParameter // 머티리얼 전달
// 커스텀 바인딩으로 변경 가능
// 예: 커스텀 Attribute를 Position에 바인딩
Position Binding : Particles.CustomPosition
스프라이트 시트 애니메이션을 사용하려면: 1) Sub Image Size를 텍스처의 행/열 수로 설정 (예: 4x4 = 16프레임), 2) Particle Update에서 SubUV Animation 모듈을 추가, 3) 머티리얼에서 SubUV를 지원하는 Particle SubUV 노드 사용.
Mesh Renderer 상세
3D 메시 인스턴싱 렌더러
Mesh Renderer는 각 파티클을 3D Static Mesh로 표시합니다. GPU 인스턴싱을 사용하여 동일한 메시를 대량으로 효율적으로 렌더링합니다.
주요 파라미터
| 파라미터 | 설명 |
|---|---|
Particle Mesh |
렌더링할 Static Mesh 에셋. 여러 메시를 배열로 추가 가능. |
Override Materials |
메시의 머티리얼을 오버라이드. Niagara 전용 머티리얼 적용. |
Facing Mode |
Default(파티클 회전 사용), Velocity, Camera Position 등 |
Sort Mode |
반투명 메시의 렌더링 순서 제어 |
Enable Mesh Flipping |
Scale로 메시를 뒤집어 다양성 추가 |
LOD Level |
사용할 LOD 레벨 (0이 최고 품질) |
Mesh Renderer
{
Meshes: [
SM_Debris_01, // 파편 메시 1
SM_Debris_02, // 파편 메시 2
SM_Debris_03 // 파편 메시 3
]
// 파티클마다 Particles.MeshIndex로 메시 선택
Override Materials: M_Debris_Niagara
Facing Mode: Default
Sort Mode: View Depth
}
// Particle Spawn에서 랜덤 메시 선택
Set (Particles.MeshIndex) = Uniform Ranged Int
Min = 0, Max = 2
// Particle Spawn에서 랜덤 회전 설정
Initial Mesh Orientation
Rotation = Uniform Ranged Vector
Min = (0, 0, 0), Max = (360, 360, 360)
Sprite: 연기, 불꽃, 먼지 등 부드러운 볼륨 이펙트. 대량의 파티클에 적합. Mesh: 파편, 돌조각, 잎사귀 등 명확한 형태의 오브젝트. 물리적 존재감이 필요할 때 사용. Mesh는 Sprite보다 렌더링 비용이 높으므로 파티클 수를 제한하세요.
Material Binding
파티클 데이터를 머티리얼에 전달
Niagara 파티클의 Attribute를 머티리얼 파라미터로 전달하여 파티클마다 다른 셰이딩 효과를 만들 수 있습니다.
Dynamic Material Parameter
// 1. 머티리얼에 Dynamic Parameter 노드 추가
Material Editor:
DynamicParameter 노드 추가
Param1 (R): EmissiveStrength
Param2 (G): DissolveAmount
Param3 (B): CustomData
Param4 (A): Unused
// 2. Niagara에서 파티클에 Dynamic Material Parameter 설정
Particle Spawn / Update:
Set (Particles.DynamicMaterialParameter)
= float4(EmissiveValue, DissolveValue, 0, 0)
// 3. Renderer에서 바인딩 확인
Sprite/Mesh Renderer:
Dynamic Material Parameters → Particles.DynamicMaterialParameter
Particle Color 바인딩
머티리얼에서 Particle Color 노드를 사용하면, Niagara의 Particles.Color Attribute가 자동으로 전달됩니다. 별도 설정 없이 바로 사용 가능합니다.
Niagara에서 사용할 머티리얼은 Used with Niagara Sprites / Niagara Mesh Particles 옵션이 활성화되어야 합니다. Material Details에서 Usage 섹션을 확인하세요. 이 옵션이 꺼져 있으면 기본 머티리얼이 대신 사용됩니다.
핵심 요약
- Niagara는 시뮬레이션과 렌더링이 분리되어 하나의 Emitter에 여러 렌더러를 동시에 연결할 수 있습니다.
- Sprite Renderer는 카메라를 향하는 2D 빌보드로, 연기/불꽃 등 부드러운 이펙트에 적합합니다.
- Mesh Renderer는 GPU 인스턴싱으로 3D 메시를 표시하며, 파편/물체 등 물리적 형태에 적합합니다.
- 렌더러는 Attribute Binding으로 파티클 데이터를 읽으며, 커스텀 바인딩으로 변경 가능합니다.
- Dynamic Material Parameter를 통해 파티클 데이터를 머티리얼에 전달할 수 있습니다.
- Niagara 전용 머티리얼은 Usage에서 Used with Niagara 옵션을 활성화해야 합니다.
도전 과제
배운 내용을 직접 실습해보세요
Sprite Renderer의 Alignment(Camera Facing, Velocity Aligned), Sort Mode(By Distance, By Age), SubImage 설정을 변경하며 불꽃 이펙트에 적합한 조합을 찾으세요. SubUV 애니메이션도 적용해보세요.
Mesh Renderer를 추가하고 Static Mesh(작은 돌 메시)를 할당하세요. Particle의 Mesh Orientation을 Random으로 초기화하고, Update에서 회전을 추가하여 날아가며 회전하는 파편을 구현하세요.
하나의 이미터에 Sprite Renderer(글로우/빛번짐)와 Mesh Renderer(실제 파편)를 동시에 추가하여, 발광하며 날아가는 파편 이펙트를 만드세요. 각 렌더러의 머티리얼을 독립적으로 설정하세요.