본 프로젝트는 JGL2 라이브러리를 사용하여 C++로 구현한
2D 유체 시뮬레이션 프로그램입니다.
유체의 확산(Diffusion), 이동(Advection),
질량 보존(Mass Conservation) 과 같은 기본적인 유체 물리 현상을
실시간으로 시뮬레이션하며, 사용자 상호작용을 통해
유체의 거동을 직관적으로 관찰할 수 있도록 설계되었습니다.
유체 시뮬레이션은 연속체 역학을 기반으로 하며,
본 프로젝트에서는 Stable Fluids 기법을 기반으로 한
격자(grid) 기반 유체 모델을 사용합니다.
각 시뮬레이션 스텝은 다음과 같은 단계로 구성됩니다.
- 외력 추가 (Add Force)
- 확산 (Diffusion)
- 이동 (Advection)
- 압력 계산 및 발산 제거 (Projection)
이를 통해 시간 스텝에 대해 안정적인 시뮬레이션을 구현합니다.
- Language: C++
- Graphics Library: JGL2
- Grid 기반 2D 유체 시뮬레이션
- Diffusion / Advection 구현
- Incompressible flow (질량 보존)
- 실시간 렌더링
- 사용자 입력 기반 상호작용
- 각 격자 셀에 저장된 유체의 속도 벡터
- 유체 이동(Advection)에 사용
- 유체의 밀도를 표현
- 시각화 시 색상 또는 밝기로 표현
- 점성(viscosity)에 의한 유체 확산 효과
- Iterative solver를 사용하여 계산
- 속도장의 발산(divergence)을 제거하여 비압축성(incompressible) 유체 조건을 만족
- 마우스 입력으로 유체에 힘 추가
- 밀도 주입을 통해 유체 흐름 생성
- 시뮬레이션 파라미터 실시간 조정 가능
| Parameter | Description |
|---|---|
| dt | 시간 스텝 |
| diff | 확산 계수 |
| visc | 점성 계수 |
| N | 시뮬레이션 격자 해상도 |