2D Fluid Simulation
Niagara Fluids 플러그인으로 Grid2D 기반 실시간 2D 유체 시뮬레이션을 구현합니다.
Niagara Fluids 플러그인
설정과 활성화
Niagara Fluids는 Niagara 내에서 Euler 기반 유체 시뮬레이션을 수행하는 실험적 플러그인입니다. 불, 연기, 가스 등의 유체 역학 이펙트를 실시간으로 렌더링할 수 있습니다.
Edit → Plugins → "Niagara Fluids" 검색
활성화 필요 플러그인:
Niagara // 기본 (이미 활성화)
Niagara Fluids // 유체 시뮬레이션 핵심
// 에디터 재시작 필요
// 활성화 후 콘텐츠 브라우저에서 Niagara Fluids 템플릿 사용 가능
Niagara Fluids는 UE5.5 기준 Experimental(실험적) 상태입니다. 프로덕션 사용 시 안정성과 성능을 충분히 테스트하세요. 향후 API가 변경될 수 있습니다.
2D vs 3D 시뮬레이션
| 특성 | 2D (Grid2D) | 3D (Grid3D) |
|---|---|---|
| 메모리 | 낮음 | 높음 |
| GPU 비용 | 낮음 | 높음 |
| 시각적 품질 | 평면적 | 볼류메트릭 |
| 용도 | 게임 이펙트, UI, 바닥 효과 | 영상, 히어로 이펙트 |
| 해상도 예시 | 256x256 ~ 1024x1024 | 64x64x64 ~ 256x256x256 |
Grid2D Collection
2D 유체 시뮬레이션의 데이터 구조
Grid2D Collection은 2D 그리드 기반의 여러 데이터 채널(속도, 밀도, 온도 등)을 관리하는 Data Interface입니다. 유체 시뮬레이션의 모든 상태가 이 그리드에 저장됩니다.
2D Fluid Emitter
Emitter Spawn:
Grid2D Collection 초기화
{
Resolution: 512 x 512
World Size: 1000.0 x 1000.0 (cm)
Attributes:
Velocity (float2) // 유체 속도장
Density (float) // 밀도 (연기 농도 등)
Temperature (float) // 온도 (부력 계산)
Pressure (float) // 압력 (비압축성 유지)
}
Simulation Stages (매 프레임 순차 실행):
Stage 1: Advection // 속도장에 따라 밀도/온도 이동
Stage 2: Add Forces // 부력, 외부 힘 적용
Stage 3: Diffusion // 확산 (점성)
Stage 4: Pressure Solve // 압력 방정식 풀기 (Jacobi)
Stage 5: Pressure Apply // 압력 결과를 속도에 반영
Render:
Sprite Renderer 또는 Mesh Renderer
// Grid 데이터를 머티리얼로 전달하여 시각화
2D 유체 템플릿 활용
기본 제공 템플릿으로 빠르게 시작
Niagara Fluids 플러그인은 사전 구성된 템플릿을 제공합니다.
| 템플릿 | 설명 | 주요 파라미터 |
|---|---|---|
Grid 2D Gas |
2D 가스/연기 시뮬레이션 | Density Injection, Buoyancy, Dissipation |
Grid 2D Fire |
2D 불꽃 시뮬레이션 | Temperature, Combustion, Fuel |
Grid 2D Liquid |
2D 액체 표면 시뮬레이션 | Surface Tension, Viscosity |
// 콘텐츠 브라우저에서
우클릭 → Niagara System → Niagara Fluids 카테고리
→ Grid 2D Gas Dynamics 선택
// 주요 커스터마이징 포인트:
Grid Resolution: 256
// 높을수록 디테일하지만 비용 증가
// 게임: 128~256, 시네마틱: 512~1024
Density Dissipation: 0.98
// 1.0에 가까울수록 연기가 오래 유지
// 낮을수록 빠르게 사라짐
Velocity Dissipation: 0.99
// 속도 감쇠율. 낮으면 유체가 빨리 멈춤
Buoyancy Strength: 5.0
// 온도에 의한 부력. 높으면 뜨거운 가스가 빠르게 상승
Injection Rate: 1.0
// 밀도/온도를 주입하는 강도
시각화와 머티리얼
Grid 데이터를 화면에 렌더링
2D 유체 시뮬레이션의 결과(밀도, 온도 등)를 시각적으로 표현하려면 전용 머티리얼이 필요합니다.
Material: M_2DFluid_Smoke
// 머티리얼에서 Grid 데이터 읽기
Niagara Grid2D Attribute: Density
→ Opacity 연결 // 밀도가 높으면 불투명
Niagara Grid2D Attribute: Temperature
→ Lerp(CoolColor, HotColor, Temperature)
→ Emissive Color 연결
// 블렌딩 모드: Translucent 또는 Additive
// Two Sided: true (양면 렌더링)
// 렌더 타겟으로 출력하여 포스트 프로세스 등에 활용 가능
2D 유체 시뮬레이션은 해상도를 낮추고 머티리얼에서 블러를 적용하면 적은 비용으로 부드러운 결과를 얻을 수 있습니다. 128x128 해상도로도 가우시안 블러를 적용하면 충분히 부드러운 연기 이펙트를 만들 수 있습니다.
핵심 요약
- Niagara Fluids 플러그인은 Euler 기반 유체 시뮬레이션을 제공하며, UE5.5에서 실험적 상태입니다.
- Grid2D Collection은 속도, 밀도, 온도, 압력 등 유체 상태를 2D 그리드에 저장합니다.
- 시뮬레이션 순서: Advection → Forces → Diffusion → Pressure Solve → Pressure Apply
- 2D 시뮬레이션은 3D보다 10~100배 가벼워 게임 실시간 사용에 적합합니다.
- 해상도를 낮추고 머티리얼에서 블러를 적용하면 비용 대비 좋은 품질을 얻습니다.
- 기본 제공 템플릿(Gas, Fire, Liquid)을 커스터마이징하여 빠르게 시작하세요.
도전 과제
배운 내용을 직접 실습해보세요
Niagara Fluids 플러그인을 활성화하고, 기본 2D Fluid 에미터를 생성하세요. Grid2D Data Interface를 사용하여 속도장(Velocity Field)과 밀도장(Density Field)의 기본 시뮬레이션을 설정하세요.
2D Fluid에 Buoyancy(부력)와 Vorticity Confinement를 추가하여 위로 올라가는 연기를 시뮬레이션하세요. 마우스 위치에서 힘을 가하여 연기를 밀어내는 인터랙션을 구현하세요.
Advection과 Diffusion 단계의 파라미터를 커스터마이징하여 물(낮은 점성), 꿀(높은 점성), 연기(확산 강함) 등 다양한 유체 특성을 시뮬레이션하세요. Grid Resolution과 성능의 관계를 분석하세요.