애니메이팅

[Maya] Body 리깅(17) 팔 리깅 - autoVolume 설정 -

by MoGL3D 2019. 5. 23.

Body 리깅(17) 팔 리깅 - autoVolume 설정 -


1auto stretch 항목설정

- Arm_L_ik_Ctrl에 auto_stretch와 auto_volume을 add attribute한다.


2 노드 에디터 설정
- 북마크로 저장해둔 stretch 노드 에디터를 열고, 컨디션 노드를 복사한다.  -> Arm_L_onOff_condition으로 이름 지정


- Arm_L_ik_Ctrl를 노드 에디터에 불러온다. (no shape)


- Arm_L_ik_Ctrl의 auto_stretch값을, Arm_L_stretch_onOff_condition의 first term과 연결한다.operation:equal, Second term : 1, 아래사진 참고 )


- Arm_L_stretch_condition(stretch노드 설정에서 생성한 condition노드)의 outColor R값을, Arm_L_onOff_condition노드의 Color If true R과 연결한다.


- Arm_L_onOff_condition의 outColor R값을, Arm_L_ik_jnt, Elbow_L_ik_jnt의 scaleX와 연결한다. (기존의 연결은 자동으로 해제됨)


3 auto volume 설정하기

- condition노드를 복사한다. Arm_L_stretch_autovolume_condition으로 이름을 지정한다. (아래사진 참고)


- Arm_L_ik_Ctrl의 autoVolume값을, Arm_L_stretch_autovolume_condition의 first Term과 연결한다. (second Term에 1입력,operation:equal)


- Arm_L_stretch_onOff_condition의 outColor R값을, Arm_L_stretch_autovolume_condition의 color If True R과 연결한다.


- multiplyDivide노드를 생성한다. -> Arm_L_autovolume_multiplyDivide 이름 지정 (operation:power, input 2X에 0.5입력)


- Arm_L_stretch_autovolume_condition의 output R값을, Arm_L_autovolume_multiplyDivide의 input 1X와 연결한다.


- Arm_L_autovolume_multiplyDivide를 복사해서 Arm_L_autovolume_multiplyDivide2를 만든다. (operation:divide)


-Arm_L_autovolume_multiplyDivide의 output X값을 Arm_L_autovolume_multiplyDivide2의 input 2X와 연결한다. (input 1X값엔 1을 입력, 아래사진 참고)


- Arm_L_autovolume_multiplyDivide2의 output X를 Arm_L_ik_jnt와 Elbow_L_ik_jnt의 scale Y,Z와 연결한다.


- 오른팔도 같은 방식으로 작업을 진행한다.


4 Arm_L(R)_spline_Crv 설정
- 현재 BSkin조인트의 스트래치는 작동되지 않는다. 왜냐하면, 커브의 scale값이 영향을 받고있지 않기 때문이다. 


- 노드 에디터에 Arm_L_ik_spline_Crv shape 노드를 불러온다. 

- curveinfo노드를 생성한다. (Arm_L_ik_splineCrv_curveinfo로 지정)


- multiplydivide노드를 2개 생성한다. (2개 모두 operation: divide 설정 ) 

- main_ctrl노드를 불러온다. (not shape노드)

- Arm_L_BSkin_jnt, Arm_L_BSkin_twist_jnt1~3 (총4개, 끝 조인트는 필요없음)조인트를 노드에디터에 불러 온다.

 

- Arm_L_ik_spline_Crvshape의 worldspace[0]값을 curveinfo의 ( other->  inputCurve)와 연결한다.


- curveinfo의 ArcLength값을, Arm_L_ikSpline_multi1(위에서 생성한 multiplydivide노드 2개중의 1개)의 input 1X에 연결한다.


- main_Ctrl의 scale X값을, Arm_L_ikSpline_multi1의 input 2X와 연결한다.

- Arm_L_ikSpline_multi1의 output X를, Arm_L_ikSpline_multi2의 input 1X와 연결한다.


- Arm_L_ikSpline_multi2의 input 1X값을 복사해서, input 2X에 붙여넣는다.

- Arm_L_ikSpline_multi2의 output X값을 Arm_L_Bskin_jnt ~ Arm_L_BSkin_twist_jnt1 ~ 3의 scale X값과 연결한다.


* 노드를 bookMark한다.


5 Elbow_L_spline_Crv 설정
- Arm_L_spline_Crv의 노드를 그대로 이용한다. curveinfo, multiplydivde1,2를 복사한다.

- Elbow_L_splineCrv shape을 노드에디터로 불러온다.

- Main컨트롤러는 재사용한다.

- Elbow_L_BSkin_jnt ~ Elbow_L_BSkin_twist_jnt_jnt1 ~ 3까지 불러온다.

- 노드설정은, Arm_L_ik_splineCrv와 같은 방식으로 진행한다


- 오른쪽의 노드도 왼팔과 같은 방식으로 진행한다.


6 그룹정리

- upperBody 아래로 조인트와 컨트롤러 그룹들을 넣어준다. (아래사진 참고 


- Arm(Elbow)_ik_splineCrv에서,  inherit transform은 모두 체크해제한다. (main컨트롤러의 움직임에 이중적용 방지)

 

- 손목fkik 스위치를 그룹한다. (센터피봇은 상관없음)


* Elbow_L(R)_BSkin_jnt4를 선택하고, 그룹한 손목 fkik스위치를 선택한 뒤에, point constrain해준다. (이 과정은 손가락 리깅이 끝난 후에 해도 무방하다)