애니메이팅

[Maya] Body 리깅(1) 허리 조인트 & Constraint 설정

by MoGL3D 2019. 5. 7.

 Body 리깅(1) 허리 조인트 리깅 설정


과거(2008~2011) cluster나 폴리클을 이용한 리깅법으로, 바디 리깅을 시작했었다. 최근에는 '이남국 DVD'덕분에 국내에도 세련된 리깅법이 보편화되고 있다. 제작은 복잡하지만 애니메이터 입장에서 동작잡기가 훨씬 간편한 방향으로 추세가 진행되고 있다. 리깅 포스팅은 최근 흐름을 반영해서 공부할 겸 작성했다.(개인적 연구가 아님)


* 해당 포스팅의 Body리깅법은 '이남국 maya리깅' DVD내용을 참고하였으니, 좀더 자세하게 알고 싶은 분들은 해당 DVD를 추천합니다 *

__1『폴리곤 template화 & 조인트 설정』

본격적인 리깅작업을 시작하기 전에 폴리곤 Mesh를 레이어에 넣고, 템플릿 모드로 변경한다. (매시를 선택하는 실수를 줄일 수 있음)


측면에서 아래와 같이 5개~6개 정도의 조인트을 찍어주자.


목에 조인트를 연결할 것까지 고려해서, 길이는 좌 우 쇄골뼈가 만나는 지점 정도까지 설치한다. 


__2『조인트 Axis설정

 리깅에서 가장 중요한 '조인트' 그중에서도 핵심은 'Axis(축)'이다. 조인트 방향이 서로 다르면, 온갖 장치를 설치해봤자 무용지물이 된다. 따라서 조인트 체인을 만들었다면 반드시 조인트의 회전축을 확인하자.


조인트를 모두 선택하고, ' select -hi (Mel명령어) ' skeleton -> orient joint로 가서 아래처럼 조인트 방향을 맞춰준다. 여기서 중요한 부분은 조인트가 흐르는 방향이 x축이 되어야 한다는 점이다. 


 조인트를 생성할 때, 측면 카메라 모드였기 때문에 깊이감이 있는 z축이, perspective 뷰에서는 오른쪽으로 와야 한다. 아래사진을 보면, 첫 번째 조인트 방향과 두번째,세번째가 다르다. 이렇게되면 z축으로 움직이거나 y축으로 움직일때 조인트들이 뒤틀린다.


Orient option에서 Primary Axis : x축, Secondary Axis : Z축, 마지막 world는 x축으로 설정한다. (아래사진 참고)


 마지막 조인트 축은 굳이 안 맞춰도 상관없지만, 아래 조인트와 똑같이 맞추고 싶다면, orient 옵션에서 Orient Joint to World에 체크하고 apply를 한다.


**조인트 축을 모두 맞춘 모습


__3『조인트 이름 설정

 리깅에서 '이름설정'은 너무나 중요하다. 조인트와 컨트롤러 ik핸들이나 각종 커브와 로케이터가 엄청나게 많아지면, 이름없이 찾기가 불가능하다. 가령, 마야에서 자동으로 설정되는 로케이터 이름, 'Locater_XX'식으로 된 부분을 삭제했더니 컨트롤러 몇개가 같이 사라지는 경우가 발생할 수도 있다. 점차 복잡해지는 작업에서 대충 지어버린 이름은 치명적인 실수로 이어질 수 있다는 점을 명심하자.


 'Waist Joint' 하위구조로 _sk(skin약자) or BSkin이라 이름을 짓자 (ps. sk는 좋지 못한 이름이었다. 검색으로 찾아서 bind했더니 에러가 나옴) 조인트에 BSkin을 붙여놓으면, 리깅이 끝나고 bind할 조인트를 찾을 때 쉽게 선택할 수 있다.


__4『ik spline핸들 설치

 ik spline핸들을 설치하기 전에, 혹시 조인트 무브툴(더블클릭)에서 아래와 같은 auto기능이 체크돼 있는지 확인하자. (체크되어 있다면 체크해제)


rigging메뉴에서 skeleton -> create ik spline handle로 '시작 조인트'를 클릭하고, '마지막 조인트'를 선택하자. (자동으로 커브가 생성되고, 조인트는 커브에 의해 작동됨) 


ik spline커브가 생성되면, 아래처럼 컴포넌트 모드(F8)에서 커브를 움직이면, 조인트들이 따라온다.  


__5『y축 회전 기능 활성화하기

 spline 핸들을 y축으로 회전시키면, 조인트들이 정면을 향한채로 돌아가지 않고 위치만 이동된다. 이를 해결하기 위해서 조인트 2개를 생성한다. 그리고 Waist_bottom_jnt, Waist_Top_jnt 조인트를 하나씩 만든다.(v스냅으로 위치시킨다)


bottom,top조인트를 클릭하고, ik handle curve를 선택한 상태에서 bind skin을 한다.(max influence값:2로 설정) 다음 설정을 위해 Waist_ik handle shape노드를 찾아보자.  


Waist_ik_handle shape노드의 Attribute속성창을 살펴보면, ik solver Attr이란 항목이 있다. 여기서  advanced twist control의 기능을 활성화시켜야만 조인트들의 y축 회전이 가능하다


Advanced twist속성의 object rotation up(start/end)를 선택한다.


world up object에  Waist_bottom_jnt 이름을 붙여넣는다. world up object2에는 Waist_Top_jnt 이름을 넣는다. 그리고 아래처럼, up vector와 up vector2의 z축에 각각 1을 넣는다.


__6『아웃라이너 기본정리

 아웃라이너에서, ctrl+g 단축키로 빈 그룹을 만들고, 아래와 같이 geometry, joint, ctrl, Etc 경계를 만든다. 아래 사진의 아웃라이너처럼, 지금까지 생성한 조인트와 컨트롤러 그리고 ik핸들과 커브를 해당 영역 아래로 위치시킨다.                    [이후 과정은 다음 포스팅에서]