1. 개요[편집]
| 질량-스프링 모델 Mass-Spring System | |
|---|---|
| 분야 | 컴퓨터 그래픽스 × 게임 물리 × 변형체 |
| 지배 법칙 | 후크의 법칙 $F = -kx$ |
| 구성 요소 | 질점(node) + 스프링(edge) |
| 대표 용도 | 천 시뮬레이션, 소프트바디 |
| 고질병 | 명시적 적분의 스프링 폭발 |
옷감이든 젤리든 고무공이든, 일단 점을 찍고 용수철로 이어버리면 대충 다 흐물거린다.
질량-스프링 모델(mass-spring system)은 변형 가능한 물체를 유한한 개수의 질점(point mass)으로 이산화하고, 그 점들을 후크의 법칙을 따르는 스프링으로 연결해 물체의 변형과 운동을 근사하는 물리 모델이다. 각 질점은 뉴턴 운동방정식을 따르고, 스프링은 이웃 질점 사이 거리가 자연 길이에서 벗어나면 되돌리려는 복원력을 만든다.1
원리가 초등학교 과학 수준으로 단순하고 구현이 쉬우며 계산이 가벼워서, 실시간이 생명인 게임과 그래픽스에서 천 시뮬레이션, 소프트바디, 머리카락, 밧줄, 식생 흔들림 등에 두루 쓰인다. 정확도는 유한요소법에 밀리지만, “그럴듯하게 흐물거리면 장땡”인 인터랙티브 응용에서는 이 가성비를 이길 방법이 마땅치 않다.
2. 스프링의 종류[편집]
천 한 장을 격자로 깔았다고 하자. 이웃 질점을 그냥 다 이어버리면 종이처럼 뻣뻣하거나 반대로 축 늘어져 무너진다. 그래서 역할이 다른 세 종류의 스프링을 겹쳐 건다. Provot(1995)의 고전적 분류다.
- 구조 스프링(structural) — 가로·세로로 바로 옆 질점을 잇는다. 인장·압축, 즉 천이 늘어나고 줄어드는 것을 저항한다.
- 전단 스프링(shear) — 대각선 질점을 잇는다. 격자가 마름모로 찌그러지는 전단 변형을 막는다. 이게 없으면 천이 평행사변형으로 흐물흐물 무너진다.
- 굽힘 스프링(bending) — 한 칸 건너 질점을 잇는다. 천이 접히거나 구겨지는 것에 저항해, 종이 같은 뻣뻣함부터 실크 같은 낭창함까지 조절한다.
이 셋의 강성 비율을 조절하는 것이 곧 재질 튜닝이다. 물리적으로 유도한다기보다 아티스트가 눈으로 보며 맞추는 경우가 많다.
3. 지배 방정식[편집]
질점 의 위치를 라 하면 뉴턴 제2법칙은 그대로다:
외력 에는 중력·바람·충돌 반력이 들어간다. 이웃 가 질점 에 주는 스프링 힘은 후크의 법칙에 감쇠를 더한 꼴이다:
여기서 , 는 자연 길이, 는 강성, 는 감쇠 계수다. 앞 항이 거리를 자연 길이로 되돌리는 복원력, 뒤 항이 진동을 잦아들게 하는 감쇠력이다. 감쇠가 없으면 계는 영원히 부르르 떨며 에너지가 안 잦아든다.
4. 명시적 적분과 스프링 폭발[편집]
가장 간단한 시간 적분은 명시적 오일러(explicit Euler)나 심플렉틱 오일러다. 힘으로 가속도를 구하고, 속도와 위치를 순서대로 갱신하면 끝. 문제는 이게 뻣뻣한 스프링에서 폭발한다는 점이다.
강성 가 크면 스프링의 고유 진동 주기가 짧아지는데, 명시적 적분은 시간 스텝 가 이 주기에 비해 크면 진동을 과대 보정한다. 한 번 삐끗한 위치가 다음 스텝에 더 큰 힘을 부르고, 그 힘이 더 큰 위치 오차를 낳으며 값이 지수적으로 발산한다. 화면에서 천이 갑자기 우주로 날아가 버리는 그 유명한 장면이다.2 안정 조건은 대략 꼴이라, 뻣뻣한 천을 명시적으로 안정화하려면 시간 스텝을 살인적으로 줄여야 한다 — 실시간에서는 사형선고다.
5. 암시적 적분[편집]
이 딜레마의 정통 해법이 암시적 오일러(implicit/backward Euler) 적분이다. 명시적 적분이 “현재 힘으로 미래 위치를 예측”한다면, 암시적 적분은 “미래 위치에서의 힘이 자기 자신과 맞아떨어지도록” 방정식을 세워 푼다:
이러면 미지수 가 우변에도 들어가 매 스텝 큰 (희소) 선형계를 풀어야 하지만, 대신 어떤 큰 시간 스텝에서도 폭발하지 않는 무조건적 안정성을 얻는다. Baraff와 Witkin의 1998년 논문 “Large Steps in Cloth Simulation”이 이 접근을 그래픽스에 정착시켰다.3 대가로 암시적 적분은 에너지를 과하게 까먹어(수치적 감쇠) 천이 실제보다 축 처져 보이는 경향이 있어, 요즘은 에너지를 잘 보존하는 심플렉틱·IMEX 절충안도 많이 쓴다.
6. 위치 기반 동역학·유한요소와의 대비[편집]
질량-스프링만이 변형체를 다루는 유일한 길은 아니다.
- 위치 기반 동역학(PBD) — 힘과 가속도를 거치지 않고, 위반된 거리·부피 제약을 위치 수준에서 직접 투영해 고친다. 무조건 안정하고 제어가 쉬워 현대 게임 엔진(특히 XPBD)의 주류가 됐다. 질량-스프링을 “제약”의 언어로 다시 쓴 사촌쯤 된다.
- 유한요소법(FEM) — 연속체 탄성론을 요소 단위로 정직하게 이산화한다. 응력·변형률을 물리적으로 정확히 다뤄 공학 시뮬레이션의 정석이지만, 무겁고 구현이 까다롭다.
정확도가 목숨인 공학 해석이면 FEM, 안정성과 제어가 중요한 게임이면 PBD, 그리고 “가볍고 직관적이며 일단 돌아가는” 원조가 필요하면 질량-스프링이다. 셋의 경계는 최근 들어 점점 흐려지는 중이다.
7. 관련 문서[편집]
8. Footnotes[편집]
-
물리학적으로는 연속체 탄성 방정식을 유한 차분으로 조잡하게 이산화한 것과 비슷하지만, 질량-스프링은 응력·변형률 텐서를 명시적으로 다루지 않는다는 점에서 FEM과 근본적으로 다르다. 그래서 스프링 강성 와 실제 재료의 영률(Young’s modulus) 사이에는 격자 해상도에 의존하는 지저분한 변환 관계가 있고, 격자를 바꾸면 재질감이 달라지는 게 이 모델의 태생적 약점이다. ↩
-
이 현상을 커뮤니티에서는 그냥 “스프링이 터졌다(the springs exploded)“고 부른다. 원인은 대개 강성을 너무 키웠거나 시간 스텝이 너무 컸거나 둘 다. 초보자가 천을 빳빳하게 만들겠다고 만 올리다가 폭발시키는 게 통과의례에 가깝다. ↩
-
논문 제목 그대로, 이 방법의 세일즈 포인트는 “큰 스텝”이다. 명시적 적분이 안정성 때문에 못 밟던 큰 를 밟을 수 있게 되면서, 프레임당 계산을 왕창 줄였다. 대신 매 스텝 켤레기울기법 같은 반복 선형 솔버를 돌려야 해서, 공짜 점심은 없다는 교훈도 함께 남겼다. ↩