Wednesday, May 11, 2011

구부러지는 관절을 제대로 표현하는 방법

질문 : Feature Film 에서 겨드랑이, 사타구니, 무릎 등의 접히는 부분을 찌그러지지 않도록 하기 위해 사용하는 방법?
요약 : 오늘날의 영화제작에서는 Pose Space Deformation을 Muscle System 과 함께 사용한다.
Muscle System 은 Maya 에 이미 있으므로 여기서는 PSD(Pose Space Deformation)만 설명.

설명 :
PSD 는 2000년에 J.P. Lewis 의 SIGGRAPH 논문으로 처음 알려진 방법으로,
관절의 각도에 따른 형태를 모델러가 잡아주어, 관절을 어느 방향으로 구부려도
찌그러지거나 깨지지 않도록 만드는 방식이다. 이는 애니매트릭스 제작에서 여자 캐릭터의
타이트하게 달라붙는 옷 등을 표현하는데 쓰이기도 했다.

그런데 PSD 는 아직 Maya 등의 상용 툴에 기본으로 제공되고 있지 않다.
ILM, Weta, Dreamworks, Pixar 등에서는 feature film 제작시 내부적으로 툴을 만들어
Pose Space Deformation (PSD) 를 사용한다. 이러한 툴 제작은 Technical Director 의 역할이다.

Maya Help 를 보면 조인트 부위에 influence objects 를 넣어서 해결하라고 하는데
이것만 쓰기에는 불편하고 feature film 제작에는 부적합하다.
따라서 Helper Joint 나 influence object 는 Muscle 과 PSD 에 보조적으로 함께 쓰곤 한다.

필요한 툴 :
Corrective Shapes를 구현한 스크립트나 플러그인이 필요하다.
플러그인은 마야 버전이 올라가면 지원이 종종 중단되는 단점이 있음
JoeAlter 의 LipService/LBrush (상용 툴)
Michael Comet 의 poseDeformer (마야 플러그인)
cvShapeInverter (Corrective Shapes 구현한 Python script)
poseReader (Corrective Shapes 구현. 원래 플러그인인데 Python script 버전 있음)

설명 :
poseDeformer 는 오픈소스라 소스코드가 공개되어 있는데
제작자 본인은 컴파일된 버전 공급을 중단한 상태이다.
현재 다른 사람들이 소스코드를 컴파일하여 배포하고 있어서
마야 2011까지는 쓸수가 있지만 이후로도 계속 쓸수 있을지는 불투명한 상태.

Joe Alter 의 LipService/LBrush 는 PSD 를 구현한 상용 툴인데 상당히 기능이 탁월하다.
포즈 별로 형태를 sculpt 해줄 수 있을 뿐 아니라
애니메이션이 완료된 후 형태를 sculpt 해서 수정해줄 수도 있다.
(현재 베타 버전이라 무료 배포중)

PSD 는 업계에서 많이 쓰이는 기술이라 앞으로 상용 패키지에 기본으로 들어갈 지도 모르지만
그때까지는 이들 플러그인이 PSD 를 쓰는 유일한 방법일 것이다. 하지만
Joe Alter 의 LipService/LBrush 는 sculpt 기능이 완전하지 않아 실용적으로 쓰기에 무리가 있음

참고 : Weta 에서 Avatar 를 제작할때 쓴 방법은
  1. Muscle system 을 만든 후 포즈를 잡은 후
  2. 각 포즈에 대해 Pose Space Deformation 을 만들고
  3. 그 후 Muscle system 을 버리고 Pose Space Deformation 만을 사용한 것이다
Muscle system 은 느린데다 형태를 컨트롤하기 어렵기 때문에 이런 방법을 쓰면
muscle 의 장점을 살리면서도 artist 의 의도대로 형태를 컨트롤할수 있다.

레퍼런스 :
Joe Alter’s LipService Pose Space Deformer Coming to Maya
LipService w/LBrush for Maya BETA
poseDeformer

키워드 : bent, bend, joints, volume preservation, in-house tool, Smooth bind, knee, elbow, crotch, armpit, James Cameron, Avatar

1 comment: