천 시뮬레이션

편집 역사 토론

천 시뮬레이션
Cloth Simulation
분야변형체 역학 × 수치적분 × 컴퓨터 그래픽스
대표 기법질량-스프링, 위치기반동역학(PBD)
핵심 난제자가충돌, 신축 억제(overstretch)
등장 매체게임 망토, 영화 의상, 패션 CAD

1. 개요[편집]

망토 하나 제대로 펄럭이게 하려고 인류는 30년을 갈아 넣었다.

천 시뮬레이션(Cloth Simulation)은 천·의류처럼 얇고 잘 휘는 변형체의 거동을 다수의 질점과 이들을 잇는 제약(스프링)으로 이산화하여 물리적으로 계산하는 컴퓨터 그래픽스 기법이다. 강체가 “안 찌그러진다”는 가정으로 세상을 단순화했다면(강체 동역학), 천은 정반대로 “잘 휘고 잘 늘어나지 않는다”는 상반된 요구를 동시에 만족시켜야 하는, 변형체 시뮬레이션의 대표 난제다.

정확도를 극한까지 밀면 천을 연속체로 보고 유한요소법으로 푸는 길도 있지만, 게임·영화 실무의 절대다수는 그보다 훨씬 값싼 입자 기반 모델을 쓴다. 프레임당 밀리초 단위로 수천 개 질점을 흔들어야 하니 정확성보다 “그럴싸하고 안 터지는” 것이 미덕이다.

2. 질량-스프링 모델[편집]

가장 고전적이고 직관적인 접근은 천을 격자 형태로 배치한 질점들과, 이들을 잇는 스프링의 그물로 보는 질량-스프링(mass-spring) 모델이다. 후크의 법칙에 따라 자연 길이 L0L_0 에서 벗어난 만큼 복원력이 작용한다.

Fij=k(xixjL0)r^ij\mathbf{F}_{ij} = -k\,(\lVert \mathbf{x}_i - \mathbf{x}_j \rVert - L_0)\,\hat{\mathbf{r}}_{ij}

핵심은 스프링을 세 종류로 깐다는 점이다. 이 삼종 세트가 천을 천답게 만든다.

  • 구조 스프링(structural): 인접한 상하좌우 질점을 잇는다. 천의 기본 신축을 담당.
  • 전단 스프링(shear): 대각선 질점을 잇는다. 천이 마름모꼴로 뭉개지는 전단 변형을 막는다.
  • 굽힘 스프링(bending): 한 칸 건너뛴 질점을 잇는다. 천이 종잇장처럼 빳빳한지, 실크처럼 흐물흐물한지를 결정한다.

각 스프링의 강성 kk 를 조절해 청바지부터 실크 스카프까지 재질감을 튜닝한다. 문제는 천을 진짜 천처럼 안 늘어나게 하려면 kk 를 크게 줘야 하는데, 그러면 스프링이 뻣뻣해져(stiff) 명시적 적분이 폭발한다는 것.1 이 신축 억제와 수치 안정성의 줄다리기가 질량-스프링 모델의 태생적 한계다.

3. 위치기반동역학 (PBD)[편집]

2007년 뮐러(Müller)가 제안한 위치기반동역학(Position-Based Dynamics, PBD)은 이 판을 갈아엎었다. 아이디어는 간단하고 불경하다. 힘·가속도를 거치지 말고 위치를 직접 밀어버리자.

절차는 이렇다. 먼저 외력([중력]·바람)만으로 질점을 예측 위치까지 옮긴 뒤, 각종 제약(스프링 길이, 충돌)을 만족하도록 위치를 반복적으로 투영(projection)해 보정한다. 그리고 보정된 위치와 이전 위치의 차이를 새 속도로 삼는다.

vn+1=xn+1xnΔt\mathbf{v}_{n+1} = \frac{\mathbf{x}_{n+1} - \mathbf{x}_n}{\Delta t}

이 “위치를 먼저 고치고 속도는 역산” 방식은 베를레 적분과 사상적으로 한 뿌리다. 최대 장점은 무조건 안정적이라는 것. 제약을 아무리 세게 걸어도 위치를 직접 만지니 발산할 수가 없다. 강성은 반복 횟수로 조절한다 — 많이 돌릴수록 천이 빳빳해진다. 나중에 나온 XPBD(eXtended PBD)는 강성이 반복 횟수·타임스텝에 의존하던 문제를 물리 단위로 정리해 지금은 이쪽이 대세다.2

4. 자가충돌 — 진짜 지옥[편집]

천의 진짜 난이도는 스프링이 아니라 자가충돌(self-collision)에 있다. 천은 접히고 겹치는데, 이때 서로 다른 부분이 서로를 뚫고 지나가면 안 된다. 문제는 천이 NN 개 삼각형으로 되어 있을 때 순진하게 모든 쌍을 검사하면 O(N2)O(N^2) 이라 답이 없다.

그래서 충돌 감지 문서가 다루는 공간 가속구조 — 균등 격자(spatial hashing), BVH 등 — 로 후보를 추려 브로드페이즈에서 거른다. 내로우페이즈에서는 삼각형끼리의 관계를 점-삼각형(vertex-triangle)과 모서리-모서리(edge-edge) 두 종류로 나눠 최근접 거리를 재고 밀어낸다. 여기에 빠르게 움직이는 천이 한 스텝에 상대를 통과해 버리는 터널링을 막으려면, 스텝의 시작과 끝 사이 궤적까지 보는 연속 충돌 감지(CCD)까지 동원해야 한다.3

자가충돌이 실패하면 천이 자기 자신과 엉켜(tangle) 영영 못 풀려나는 대참사가 벌어진다. 영화 VFX에서 천 시뮬레이션이 밤새 렌더 팜을 돌리는 이유의 절반은 이 자가충돌 처리다.

5. 바람, 감쇠, 그리고 현실[편집]

그럴싸한 펄럭임에는 몇 가지 양념이 더 필요하다.

  • 공기 저항/바람: 삼각형 면의 법선과 상대 풍속으로 항력을 준다. 대충 넣어도 망토가 확 살아난다.
  • 감쇠(damping): 아무 감쇠가 없으면 천이 영원히 진동한다. 속도에 비례하는 감쇠나 XPBD 계열의 감쇠 항으로 진정시킨다.
  • 찢어짐(tearing): 스프링 신장률이 문턱을 넘으면 제약을 끊어 천을 찢는다. 게임에서 옷 찢기는 연출이 이것.
  • 핀 제약(pinning): 특정 질점을 고정해 깃발을 깃대에, 옷을 캐릭터 뼈대에 붙인다.

6. 어디에 쓰이나[편집]

  • 게임: 캐릭터 망토·치마·깃발. 실시간이라 PBD/XPBD가 표준. 언리얼·유니티에 내장.
  • 영화 VFX: 인물 의상 전체. Houdini의 Vellum, Marvelous Designer 등. 정확도·자가충돌 최우선.
  • 패션·의류 CAD: 재봉 패턴을 3D 아바타에 입혀 실물 제작 전 핏을 검증. 여기서는 신축·전단 물성이 실측값과 맞아야 한다.

정리하면, 천 시뮬레이션은 “잘 휘되 안 늘어나고, 자기 자신을 뚫지 않는” 세 가지 조건의 절묘한 균형점을 프레임당 몇 밀리초 안에 찾는 기예다. 이 균형이 무너지는 순간 캐릭터의 망토는 어깨를 뚫고 나오거나 다리에 엉켜 붙는다.

7. 관련 문서[편집]

8. Footnotes[편집]

  1. 뻣뻣한(stiff) 미분방정식은 수치해석의 고전적 난제다. 명시적 적분으로 stiff 문제를 풀려면 타임스텝을 극도로 줄여야 해서, Baraff & Witkin(1998)은 아예 암시적(implicit) 적분으로 큰 스텝을 쓰는 길을 열었다. “Large Steps in Cloth Simulation”이라는 그 논문 제목이 곧 선언이었다.

  2. PBD의 원죄는 강성이 물리량이 아니라 반복 횟수와 프레임레이트에 딸려 온다는 것이었다. 60fps에서 조율한 천이 30fps에서 흐물흐물해지는 참사가 흔했다. XPBD(Macklin, 2016)가 컴플라이언스(compliance) 개념으로 이를 물리 단위로 못 박았다.

  3. 점-삼각형과 모서리-모서리 검사는 결국 5차 다항식의 근을 찾는 문제로 귀결된다. 천 시뮬레이션 개발자들이 “근 찾기(root finding) 지옥”을 입에 달고 사는 이유다. 근 하나 놓치면 천이 상대를 뚫고 지나간다.