애니메이팅

[Maya] Body 리깅(2) 허리 Stretch 설정하기

by MoGL3D 2019. 5. 8.

 Body 리깅(2) 허리 컨트롤러 생성


 CG의 즐거움 '상상력 표현'에 있다. 확장성이 뛰어난 방식으로 리깅된 캐릭터는 애니메이터의 상상력에 날개를 달아준다. 따라서 리거(리깅 아티스트)는 애니메이터의 상상력을 극대화시켜 줄 수 있도록 장치를 구성해야 한다. 그중의 하나가 바로 '스트래치'이다. 


스트래치는 말 그대로 늘어나는 것을 의미한다. 실제 사람의 신체가 늘어나는 경우는 없지만 CG에서는 모든게 가능하다. 리거는 모든 가능성을 염두에 두고 캐릭터를 개발할 의무감이 필요하다.

__1컨트롤러 생성

 넙스 커브로 사각형 컨트롤러를 만든다. 컨트롤러 위치를 v스냅으로 Waist_Bottom_jnt와 Waist_Top_jnt조인트에 v스냅하고, freeze를 실행한다.


__2constrain설정

 Waist_Top_컨트롤러를 먼저 선택하고, Waist_Top_jnt를 선택한 후에 constrain parent를 한다. 곧바로, Waist_Bottom_컨트롤러를 선택하고, Waist_Bottom_jnt를 constrain parent까지 실행하자.


__3노드 에디터 설 

 노드 에디터(window메뉴)를 열고, Waist_ik_Crv_shape노드를 불러온다. ( waist_ik_spline으로 생성된 커브) 탭 키를 이용해서, curveinfo노드를 검색하고, 노드 에디터 창에 불러온다. 


캐릭터 전체를 움직이거나 크기를 조절할 수 있는 Main컨트롤러를 아래처럼 생성한다. (nurbs 커브 이용)


- Waist_ik_Crv_shape노드의 world space[0]노드를 curveinfo의 'input Curve'와 연결한다

- multiplyDivide노드를 생성한다. (operation:divide)


- curveinfo노드에서 Arc Length노드를 multiplyDivide노드의 input 1X에 연결한다. 

- Main 컨트롤러를 불러온 후에(shape노드 아님) scale X 노드를 multiplyDivide의 input 2X에 연결한다. 


- multiplyDivide1을 복사해서 multiplyDivide2를 만든다. (operation : divide) 

- multiplyDivide1의 output 1X 노드를 multiplyDivide2의 input1X와 연결한다. 

- multiplyDivide2의 input1 수치값을 복사해서 input2에 붙여넣기 한다.


- Waist_ik_jnt1~4까지 불러온다.

- multiplyDivide2의 outputX값과 각 Waist_ik_jnt1~4까지의 scaleX값을 연결한다.


__4main컨트롤러 구조정리 

 지금까지 생성한 조인트와 컨트롤러 그리고 ikHandle 및 curve를 모두 main_Ctrl 아래로 parent한다. (아래사진 참고)


 main 컨트롤러를 움직이면, 커브가 밖으로 튀어나가는데, 이는 상위노드의 영향값을 중복으로 받고 있기 때문이다. 이 문제를 해결하려면, Waist_ik_Crv의 Attribute창으로 가서, inherit Transform을 체크해제하면 된다.


main컨트롤러 아래에 각 신체부위에 해당하는 조인트와 컨트롤러 그리고 Etc를 그룹화한다. (아래사진 참고)