FLIP-PIC 유체

오류 제보
게임 개발 전산유체역학 마지막 수정: 2026-10-19 16:00:00

○ 공개 검수 대기 AI 보조 작성 표시 기준 보기

1. 개요

FLIP-PIC 유체
FLIP-PIC Fluid Simulation
분야전산유체역학 × 컴퓨터 그래픽스
계열하이브리드 입자-격자법
PICParticle-in-Cell (1955, Harlow)
FLIPFluid-Implicit-Particle (1986, Brackbill & Ruppel)
후속APIC, PolyPIC

FLIP-PIC 유체는 유체를 추적하는 입자(particle)와 물리량을 계산하는 격자(grid)를 함께 쓰는 하이브리드 방식으로, 순수 입자법과 순수 격자법의 장점을 절충한 유체 시뮬레이션 기법이다. 이름 그대로 PIC(Particle-in-Cell)와 FLIP(Fluid-Implicit-Particle)라는 두 방식을 섞어 쓰며, 현대 영화·게임의 물 시뮬레이션에서 사실상 표준의 지위를 차지하고 있다.1

핵심 발상은 이렇다. 이류(advection, 유체가 자기 자신을 타고 이동하는 항)는 입자로 추적하면 수치 소산 없이 깔끔하고, 압력 투영(pressure projection)처럼 비압축 조건을 강제하는 계산은 나비에-스토크스 방정식을 격자에서 푸는 것이 편하다. 그러니 각 계산을 자기가 잘하는 무대에서 시키자는 것이다.

물이 꿀처럼 끈적해지는 자리는 입자 그림이 아니라 전송 비율이다. PIC 는 격자 속도를 입자 위에 그대로 덮어써서 보간할 때마다 속도가 뭉개지고, FLIP 은 격자에서 변한 증분만 더해 그 소산을 거의 없앤다. 소산이 0 이면 이번엔 입자가 제각각 떨린다. 영화·게임 쪽은 그래서 둘을 섞되 FLIP 쪽에 크게 기울인다. 모래가 무너지는 자기조직화 그림은 자기조직화 문서가 따로 돌리고 있다.

2. PIC와 FLIP의 뿌리

PIC는 1955년 로스앨러모스의 프랜시스 할로우(Francis Harlow)가 고안한 유서 깊은 방법이다. 입자가 질량과 위치를 나르고, 매 스텝 물리량을 격자로 옮겨 계산한 뒤 다시 입자로 되돌려주는 왕복 구조를 갖는다. 문제는 이 왕복 과정에서 격자 보간이 반복되면서 속도장이 심하게 뭉개진다는 것 — 물이 마치 꿀처럼 끈적하게 움직이는 과도한 수치 점성이 생긴다.

1986년 브래킬(Brackbill)과 루펠(Ruppel)이 내놓은 FLIP은 이 문제를 정면으로 겨냥했다. 격자로부터 속도의 절댓값을 받아오는 대신 속도의 *변화량(증분)*만 받아와 입자에 더해주는 방식이다. 이렇게 하면 반복 보간에 의한 소산이 극적으로 줄어든다.2

3. 입자와 격자 사이의 전송

FLIP-PIC의 심장은 매 타임스텝 벌어지는 입자↔격자 왕복이다. 흔히 P2G(Particle-to-Grid)와 G2P(Grid-to-Particle)라 부른다.

  • P2G: 각 입자의 속도·질량을 주변 격자점으로 뿌린다. 보통 삼선형 보간 커널로 가중치를 배분한다.
  • 격자 연산: 격자에서 중력 등 외력을 적분하고, 압력 푸아송 방정식을 풀어 속도장을 발산이 0인 상태로 투영한다. 이것이 비압축성을 강제하는 단계다.
  • G2P: 갱신된 격자 속도를 다시 입자로 되돌린다. 이때 PIC는 절댓값을, FLIP은 증분값을 가져간다.

P2G에서 격자로 전송되는 속도는 커널 가중치 wipw_{ip}로 다음과 같이 모인다.

vi=∑pwip mp vp∑pwip mp\mathbf{v}_i = \frac{\sum_p w_{ip}\, m_p\, \mathbf{v}_p}{\sum_p w_{ip}\, m_p}

4. 수치 소산과 노이즈의 줄다리기

FLIP과 PIC는 정반대의 병을 앓는다. PIC는 앞서 말했듯 과도한 소산으로 물이 죽처럼 무거워지고, 반대로 순수 FLIP은 소산이 거의 없다 보니 격자와 입자 자유도의 불일치에서 오는 고주파 노이즈가 쌓여 물 표면이 부글부글 떨리는 불안정을 보인다.3

그래서 실무에서는 둘을 선형 보간해 섞는다. 혼합 계수 α\alpha에 대해

vpnew=α vpFLIP+(1−α) vpPIC\mathbf{v}_p^{\text{new}} = \alpha\,\mathbf{v}_p^{\text{FLIP}} + (1-\alpha)\,\mathbf{v}_p^{\text{PIC}}

로 쓰며, 보통 α\alpha를 0.9~0.99 정도로 잡는다. FLIP 쪽으로 크게 기울여 생동감을 살리되, PIC를 소량 섞어 노이즈를 잠재우는 것이다. 이 계수 하나가 물의 “느낌”을 좌우하기 때문에 아티스트의 최애 노브가 된다.

5. APIC와 그 후예들

FLIP의 노이즈를 근본적으로 다스리기 위해 2015년 제트(Jiang) 등이 제안한 것이 APIC(Affine Particle-in-Cell)이다. 입자가 속도 하나만 나르는 대신 국소 속도장의 아핀(1차) 성분까지 함께 나르게 해서, 전송 과정에서 각운동량을 보존하고 노이즈를 억제한다. PIC의 안정성과 FLIP의 생동감을 동시에 잡은 셈이라 요즘은 순수 FLIP보다 APIC/PolyPIC 계열이 선호되는 추세다.4

이 하이브리드 계보는 위상수학적으로 SPH나 물질점법(MPM)과도 사촌 관계다. 실제로 MPM은 눈·모래·젤리 같은 연속체 시뮬레이션에서 APIC 전송을 그대로 물려받아 쓴다.

6. 물 시뮬레이션에서의 위상

FLIP-PIC 기반 솔버는 컴퓨터 그래픽스 물 시뮬레이션의 왕좌를 오래 지켜왔다. Houdini의 FLIP Solver가 대표적이며, 수많은 블록버스터 영화의 파도·물보라·해일이 이 위에서 만들어졌다.

  • 장점: 자유표면(free surface) 추적이 자연스럽고, 물방울이 뛰고 합쳐지는 위상 변화(topology change)를 입자가 알아서 처리해준다. 순수 격자법이 골머리를 앓는 부분이다.
  • 약점: 입자 수가 많아 메모리와 계산이 무겁고, 얇은 물막·표면 재구성(surface reconstruction)에서 아티팩트가 생기기 쉽다.
  • 표면 렌더링: 입자 구름을 매끈한 물 표면으로 바꾸는 데는 대개 메타볼(metaball)이나 부호화 거리장 기반 재구성이 동원된다.

게임에서는 여전히 계산량이 부담스러워 실시간 대규모 물에는 잘 안 쓰이지만, 국소적인 물웅덩이나 컷신 물 이펙트에는 GPU FLIP 구현이 조금씩 실전 투입되고 있다.

7. 실무 팁

  • α 계수를 0.95 정도로 시작하고 시각적 피드백에 따라 조정하라.
  • 입자 수를 너무 늘리면 메모리가 폭증한다. 어느 정도 공간 해상도를 유지하는지가 관건이다.
  • 표면 재구성은 메타뿄보다 SDF 기반이 더 안정적인 경우가 많다.
  • 게임용으로 간단화할 때는 압력 투영을 근사하거나 GPU에 최적화하라.

8. 관련 문서

9. Footnotes

  1. FLIP은 “Fluid-Implicit-Particle”의 약자다. 게임 개발자가 스프라이트 뒤집을 때 쓰는 그 flip과는 무관하니 혼동하지 말 것. 물론 물이 뒤집어지는(flip) 장면을 만드는 데 자주 쓰이는 건 우연치고는 절묘하다. ↩

  2. Brackbill, J. U. & Ruppel, H. M. (1986). “FLIP: A method for adaptively zoned, particle-in-cell calculations of fluid flows in two dimensions”. Journal of Computational Physics. 원래는 플라즈마·천체 유동용으로 나왔는데, 20년 뒤 그래픽스 학계가 물 시뮬레이션에 갖다 쓰면서 제2의 전성기를 맞았다. ↩

  3. 순수 FLIP의 노이즈는 “격자 자유도보다 입자 자유도가 많아서 격자가 표현 못 하는 성분이 입자에 유령처럼 남는다”는 근본적 불일치에서 온다. 정보이론적으로 보면 초과 자유도가 갈 곳을 잃고 떠도는 셈. ↩

  4. Jiang, C. et al. (2015). “The Affine Particle-in-Cell Method”. ACM Transactions on Graphics (SIGGRAPH). APIC 이후 PolyPIC(다항식 차수를 더 높인 버전)까지 나오면서, 이 계보는 “입자에 얼마나 많은 정보를 실을 것인가”의 군비 경쟁이 되었다. ↩

이 문서가 문제를 푸는 데 도움이 됐나요? 한 번의 클릭이 다음 검수 순서를 정합니다.

의견을 반영할게요. 감사합니다.

다음으로 읽기 격자 약 5분 더 탐색 →