본문 바로가기

Numerical Analysis/회사 이야기

[컴퓨터그래픽] 실사같은 머리카락 시뮬레이션 이야기 - 디즈니, 배틀엔젤 알리타, 워크래프트

 안녕하세요 이노도리입니다. 오늘은 저번 시간에 이어 머리카락 또는 털 시뮬레이션에 대해 이야기해 보려고 해요.

갑자기 느닷없이 웬 털이냐구요? 사실 털도 상당히 많은 영화에서 컴퓨터 그래픽으로 구현이 된답니다.

머리카락 시뮬레이션은 이런거랍니다 ㅎㅎ 

 먼저 머리카락 시뮬레이션에 대해 이야기하기 전에 한번 사람 몸에 있는 머리카락 개수가 얼마나 되는지 한번 알아볼까요? 네 Google에 찾아본 결과 무려 10만 개나 되는 머리카락이 있다고 하네요 ㅎㅎ 10만 개나 되는 머리카락이라니 그 수가 엄청난데요, 예전에는 이 머리카락의 개수가 너무 많았기 때문에 연산량을 조절하기 위한 여러 방법들이 고안되었답니다.

라푼젤의 머리카락은 몇가닥일까요 ㅎㅎ

 대표적인 방법으로는 먼저 Position Based Dynamics(PBD)라고 하는 방법이 있는데요, 이 방법은 머리카락의 움직임을 단순한 스프링처럼 만들어서 그럴듯하게 움직이게 하는 방법입니다. 이 방법의 장점은 먼저 계산 속도가 무지막지하게 빠릅니다. 그러다 보니 게임에서도 이 기술이 많이 응용되곤 한답니다. 단점은 그럴듯하게 움직이게 만드는 방법이다 보니 실제 물리적인 움직임을 구현하기에는 한계가 있고 일종의 튜닝이 필요합니다. 튜닝이 잘못되면 정말 엄청난 결과가 기다리고 있기도 하죠. 한번 아래 영상을 볼까요? 아래 영상은 디즈니의 라푼젤 제작과정에서 얼마나 많은 고생을 했는지를 보여주는 영상이랍니다.

디즈니의 라푼젤도 이렇게 엄청난 고생들을 거쳐서 저렇게 아름다운 머리카락이 완성됐답니다. 엔지니어들의 빠진 머리카락 한올 한올 모아...

 디즈니의 라푼젤에서 사용된 기술 역시 PBD의 일종으로 알고 있습니다 ㅎㅎ 그리고 보시면 애니메이션에서의 머리카락 수와 시뮬레이션에서의 머리카락 수가 다른 것을 알 수 있습니다. 시뮬레이션에서는 뭔가 굵은 줄 같은 게 달려 있죠? 이건 가이드 헤어(guide hair)라고 하는 기술로 실제로 저 많은 머리카락을 다 시뮬레이션 하기는 너무도 어렵기 때문에 저렇게 대표되는 머리카락을 계산하고 저 대표 머리카락으로 얇은 머리카락을 재현해 내는 거랍니다. 당연히 저렇게 하면 정확한 시뮬레이션이 되기 어렵습니다. (물리적으로 완벽에 가까운 머리카락 시뮬레이션은 정말 어렵답니다 ㅜㅜ) 한번 또 다른 디즈니 애니메이션의 머리카락 시뮬레이션에 대한 영상을 볼까요? 곱슬머리를 시뮬레이션하기 위한 엔지니어들의 노력은 정말 엄청나답니다.

이 방법 역시 PBD의 일종입니다 ㅎㅎ 

 다음 방법으로는 실제 머리카락의 물성을 그대로 넣어 유한요소법(Finite Element Method)을 적용하는 방법입니다. 이 방법을 적용하게 되면 실제 머리카락의 거동을 그대로 구현해낼 수 있는 장점이 있습니다. 대신 이 방법은 속도가 매우 느리답니다. 계산해야 되는 정보가 너무 많아서 시뮬레이션에 하루가 넘게 걸리기도 합니다 ㅜㅜ

 실제로 이 방법을 사용해 만들어진 영상을 한번 볼까요? 배틀엔젤 알리타는 제가 만든 프로그램 역시 포함된 영화인데요, 이 알리타의 머리카락은 PBD가 아닌 유한요소법과 비슷한 방법으로 만들어졌답니다 ㅎㅎ 실제로 알리타의 머리카락은 서양인과 다르게 동양인의 굵은 머리카락이기 때문에 영화 제작자는 이 느낌을 살리고 싶어 했습니다. 그리고 PBD로는 이러한 느낌을 완전히 구현하기가 쉽지가 않았다고 합니다. (저는 유한요소법을 이용해 만들어낸 방정식을 풀어내는 솔버 제작을 맡았습니다 ㅎㅎ 기존 상용 프로그램을 이용하면 이 방정식을 푸는 시간이 너무 오래 걸려 수백 시간의 시뮬레이션 시간이 필요한 지경이었어요. 당연히 영화 제작에 문제가 발생하게 될 수 도 있었답니다 ㅜㅜ)

이 영상은 주로 모션캡쳐에 대한 내용을 많이 담고 있는데요, 머리카락을 봐주세요. 놀라운 사실은 저기에서 표현된 모든 머리카락이 가이드헤어 없이 한가닥 한가닥 모두 다 시뮬레이션 되었다는 사실!

 어떤가요? 정말 감쪽같죠? 정말 고생 고생해서 저 정도까지 만들어냈답니다. 덤으로 물에 머리카락 젖는 장면 역시 신기술이 적용되었고 당시로서는 정말 획기적이었어요. (시뮬레이션뿐만 아니라 렌더링 역시 미세한 물방울 효과를 잡아내기 위해 평소보다 훨씬 많은 시간의 렌더링이 필요했다고 해요.)

 얘기를 하다 보니 너무 산으로 갔네요. 제가 참여한 영화 이야기가 나오니 너무 흥분해버렸습니다. 이렇게 FEM과 비슷한 방법을 사용하여 머리카락을 물리적으로 정확에 가깝게 시뮬레이션 함으로써 저렇게 실감 나는 머리카락 그래픽이 가능해졌습니다. 그럼 다른 영화들도 한번 살펴볼까요? 

 아쿠아맨 역시 머리카락 시뮬레이션이 많이 들어갔답니다. 물에서 찰랑거리는 머리카락을 표현하기 위해 실제 배우들은 머리카락을 묶어서 고정시킨 채 촬영하고 후처리로 머리카락이 찰랑찰랑 거리게 만들었어요. (꼭 샴푸 CF 보는 것 같았어요 ㅎㅎ)

아쿠아맨도 CG로 칭찬을 상당히 많이 받았답니다.

 워크래프트 역시 CG로는 나쁘지 않은 평가를 받았습니다. 여기에도 머리카락 이야기가 나오네요.

개인적으로 워크래프트 게임을 워낙 재미있게 해서 기대를 많이 했었어요.

 어떤가요? 영화를 만들 때 이렇게 머리카락 역시도 시뮬레이션을 통해 만들어진다고 하니 신기하지 않나요? 다음에도 또 재미있는 이야기들로 찾아뵙도록 하겠습니다 ㅎㅎ