PART 5 · 강의 1/3

2D Fluid Simulation

Niagara Fluids 플러그인으로 Grid2D 기반 실시간 2D 유체 시뮬레이션을 구현합니다.

01

Niagara Fluids 플러그인

설정과 활성화

Niagara Fluids는 Niagara 내에서 Euler 기반 유체 시뮬레이션을 수행하는 실험적 플러그인입니다. 불, 연기, 가스 등의 유체 역학 이펙트를 실시간으로 렌더링할 수 있습니다.

플러그인 활성화
EditPlugins"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
02

Grid2D Collection

2D 유체 시뮬레이션의 데이터 구조

Grid2D Collection은 2D 그리드 기반의 여러 데이터 채널(속도, 밀도, 온도 등)을 관리하는 Data Interface입니다. 유체 시뮬레이션의 모든 상태가 이 그리드에 저장됩니다.

Grid2D 유체 시뮬레이션 구조
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 데이터를 머티리얼로 전달하여 시각화
03

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
2D Gas 템플릿 커스터마이징
// 콘텐츠 브라우저에서 우클릭Niagara SystemNiagara 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 // 밀도/온도를 주입하는 강도
04

시각화와 머티리얼

Grid 데이터를 화면에 렌더링

2D 유체 시뮬레이션의 결과(밀도, 온도 등)를 시각적으로 표현하려면 전용 머티리얼이 필요합니다.

유체 렌더링 머티리얼 개념
Material: M_2DFluid_Smoke // 머티리얼에서 Grid 데이터 읽기 Niagara Grid2D Attribute: Density → Opacity 연결 // 밀도가 높으면 불투명 Niagara Grid2D Attribute: TemperatureLerp(CoolColor, HotColor, Temperature) → Emissive Color 연결 // 블렌딩 모드: Translucent 또는 Additive // Two Sided: true (양면 렌더링) // 렌더 타겟으로 출력하여 포스트 프로세스 등에 활용 가능
성능 팁

2D 유체 시뮬레이션은 해상도를 낮추고 머티리얼에서 블러를 적용하면 적은 비용으로 부드러운 결과를 얻을 수 있습니다. 128x128 해상도로도 가우시안 블러를 적용하면 충분히 부드러운 연기 이펙트를 만들 수 있습니다.

SUMMARY

핵심 요약

  • Niagara Fluids 플러그인은 Euler 기반 유체 시뮬레이션을 제공하며, UE5.5에서 실험적 상태입니다.
  • Grid2D Collection은 속도, 밀도, 온도, 압력 등 유체 상태를 2D 그리드에 저장합니다.
  • 시뮬레이션 순서: Advection → Forces → Diffusion → Pressure Solve → Pressure Apply
  • 2D 시뮬레이션은 3D보다 10~100배 가벼워 게임 실시간 사용에 적합합니다.
  • 해상도를 낮추고 머티리얼에서 블러를 적용하면 비용 대비 좋은 품질을 얻습니다.
  • 기본 제공 템플릿(Gas, Fire, Liquid)을 커스터마이징하여 빠르게 시작하세요.
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: 2D Grid 기반 유체 기초

Niagara Fluids 플러그인을 활성화하고, 기본 2D Fluid 에미터를 생성하세요. Grid2D Data Interface를 사용하여 속도장(Velocity Field)과 밀도장(Density Field)의 기본 시뮬레이션을 설정하세요.

실습 2: 2D 연기 시뮬레이션

2D Fluid에 Buoyancy(부력)와 Vorticity Confinement를 추가하여 위로 올라가는 연기를 시뮬레이션하세요. 마우스 위치에서 힘을 가하여 연기를 밀어내는 인터랙션을 구현하세요.

심화 과제: Advection-Diffusion 커스터마이징

Advection과 Diffusion 단계의 파라미터를 커스터마이징하여 물(낮은 점성), 꿀(높은 점성), 연기(확산 강함) 등 다양한 유체 특성을 시뮬레이션하세요. Grid Resolution과 성능의 관계를 분석하세요.