레벨셋 방법

편집 역사 토론
전산유체역학 컴퓨터 그래픽스 마지막 수정: 2026-07-10 04:33:52

1. 개요[편집]

레벨셋 방법(level set method)은 움직이고 변형하는 계면(interface)을, 한 차원 높은 스칼라 함수의 특정 등고선(level set)으로 암시적으로 표현하여 추적하는 수치 기법이다. 물과 공기의 경계처럼 시간에 따라 휘고 갈라지고 합쳐지는 곡면을 직접 좌표로 좇는 대신, 그 곡면을 부호거리함수 ϕ\phi의 0-등고선(ϕ=0\phi = 0)으로 정의한다. 1988년 스탠리 오셔(Stanley Osher)와 제임스 세시안(James Sethian)이 제안했다.1

핵심 통찰은 이것이다. 계면을 명시적으로 추적하면(예: 마커 점들을 이어 붙이면) 두 물방울이 합쳐지거나 하나가 둘로 쪼개질 때 점들을 어떻게 연결할지 코드가 지옥이 된다. 그런데 계면을 함수의 등고선으로 두면, 이런 위상 변화(topology change)가 그냥 저절로 일어난다. 함수는 그저 매끄럽게 흐를 뿐이고, 등고선이 알아서 붙었다 떨어진다. 이 우아함 덕에 다상유동, 화염 전파, 그리고 영상 분할·CG 물 시뮬레이션까지 폭넓게 쓰인다.

2. 부호거리함수[편집]

레벨셋 함수 ϕ(x,t)\phi(\mathbf{x}, t)는 보통 부호거리함수(signed distance function)로 잡는다. 즉 공간의 각 점에서 계면까지의 최단 거리를, 계면 안쪽이면 음수·바깥쪽이면 양수로 부호를 붙인 값이다.

ϕ(x)=±minxIΓxxI\phi(\mathbf{x}) = \pm \min_{\mathbf{x}_I \in \Gamma} \|\mathbf{x} - \mathbf{x}_I\|

이렇게 두면 좋은 점이 많다. 계면은 ϕ=0\phi = 0인 곳이고, 계면의 법선 벡터는 n=ϕ/ϕ\mathbf{n} = \nabla\phi / |\nabla\phi|로 곧장 나온다. 계면의 곡률도 κ=(ϕ/ϕ)\kappa = \nabla \cdot (\nabla\phi/|\nabla\phi|)로 깔끔하게 계산된다. 표면장력 항이 곡률에 비례하므로, 레벨셋은 표면장력을 다루기에 특히 편하다. 부호거리함수는 ϕ=1|\nabla\phi| = 1이라는 성질을 만족하는데, 이 성질이 유지되어야 위 계산들이 정확하다. 문제는 시간이 지나면 이게 깨진다는 것이고, 그래서 뒤에 나올 재초기화가 필요해진다.

3. 이류 방정식[편집]

계면이 유동장 속도 u\mathbf{u}를 따라 움직이면, 레벨셋 함수는 다음 이류(advection) 방정식을 따른다.

ϕt+uϕ=0\frac{\partial \phi}{\partial t} + \mathbf{u} \cdot \nabla \phi = 0

이 방정식은 “ϕ\phi의 각 등고선이 유체 속도를 그대로 타고 흘러간다”는 뜻이다. 0-등고선이 곧 계면이므로, 이 한 줄만 풀면 계면이 저절로 따라 움직인다. 명시적으로 점을 옮길 필요가 전혀 없다.

실무에서는 이 이류 항을 고차·비진동 도식으로 이산화해야 한다. ϕ\phi가 급하게 변하는 계면 근처에서 저차 도식을 쓰면 계면이 뭉개지기 때문에, WENO 같은 고차 상류 도식과 TVD Runge–Kutta 시간 전진을 흔히 조합한다. 도식 선택이 곧 계면 선명도를 결정한다.2

4. 재초기화[편집]

이류를 거듭하다 보면 ϕ\phi가 더 이상 부호거리함수가 아니게 된다. 어떤 곳은 등고선이 촘촘히 뭉치고 어떤 곳은 성기게 벌어져 ϕ1|\nabla\phi| \ne 1이 된다. 그러면 법선·곡률 계산이 부정확해지고 계면 위치도 흔들린다.

이를 고치는 절차가 재초기화(reinitialization)다. 0-등고선의 위치는 그대로 두면서, 그 주변의 ϕ\phi 값을 다시 부호거리함수가 되도록 다림질하는 과정이다. 보통 다음 보조 방정식을 가상 시간 τ\tau에 대해 정상 상태까지 푼다.

ϕτ+sgn(ϕ0)(ϕ1)=0\frac{\partial \phi}{\partial \tau} + \text{sgn}(\phi_0)\left(|\nabla\phi| - 1\right) = 0

재초기화는 매 몇 스텝마다 반복해야 하는 필수 유지보수 작업이다. 그런데 여기에 함정이 있다. 재초기화 과정에서 0-등고선이 미세하게 밀려나면, 그때마다 계면이 조금씩 움직여 질량이 새어 나간다. 레벨셋의 고질병인 질량 비보존이 바로 여기서 상당 부분 발생한다.3

5. VOF와의 비교[편집]

계면 추적의 양대 산맥은 레벨셋과 VOF 방법(Volume of Fluid)이다. 둘의 성격은 서로의 장단이 거의 정확히 반대다.

항목레벨셋VOF
표현 변수부호거리함수 ϕ\phi셀별 체적분율 FF
계면 매끄러움매우 매끄러움계단식, 재구성 필요
곡률·법선계산이 깔끔·정확상대적으로 부정확
질량 보존약함(질량 샘)강함(체적 보존)
위상 변화자동으로 자연스럽게자동이나 재구성 복잡

요약하면 레벨셋은 기하학적으로 매끈하고 곡률·표면장력을 다루기 좋지만 질량을 흘리고, VOF는 질량은 철저히 지키지만 계면이 거칠고 곡률 계산이 까다롭다. 그래서 둘의 장점을 합친 CLSVOF(Coupled Level Set and VOF) 같은 하이브리드가 나왔다. 레벨셋으로 매끄러운 곡률을 얻고, VOF로 질량을 붙잡는 식이다. 요즘 다상유동 상용·연구 코드가 즐겨 쓰는 조합이다.

6. 그래픽스와 그 너머[편집]

레벨셋은 CFD만의 도구가 아니다. 컴퓨터 그래픽스에서 물·연기·액체 표면을 렌더링할 때, 레벨셋으로 표현한 계면을 마칭 큐브로 삼각형 메시로 뽑아내 화면에 그린다. 영화 속 출렁이는 바다와 튀는 물방울 상당수가 레벨셋 계열 기법의 산물이다.4 영상 처리에서는 능동 윤곽선(active contour)으로 물체 경계를 분할하는 데, 위상 최적화에서는 재료가 있고 없는 경계를 표현하는 데 같은 아이디어가 쓰인다. 하나의 등고선으로 경계를 표현한다는 발상이 이렇게 여러 분야를 관통한다.

7. 관련 문서[편집]

8. Footnotes[편집]

  1. Osher & Sethian (1988), Journal of Computational Physics. 세시안은 이후 고속 행진법(Fast Marching Method)으로 이 계열을 한 번 더 크게 밀어붙였다. 두 사람 다 이 공로로 응용수학계의 큰 상을 받았다.

  2. WENO(Weighted Essentially Non-Oscillatory)는 급변 영역에서 진동을 억제하면서도 매끄러운 영역에서는 고차 정확도를 유지한다. 계면 추적에 사실상 국룰처럼 쓰인다.

  3. 물방울 하나를 오래 굴리면 슬금슬금 작아지는 걸 볼 수 있다. “물이 증발하는 게 아니라 코드가 증발시키는 것”이라는 웃픈 표현이 있다.

  4. 다만 영화 물리는 정확성보다 “그럴듯함”이 우선이라, 질량 보존을 좀 어겨도 아무도 신경 쓰지 않는다. 오히려 이 지점에서 레벨셋의 약점이 약점이 아니게 된다.