Body 리깅(11) 다리 Stretch, AutoVolume 설정


1로케이터 생성

 다리전체 길이를 재어야하기 때문에 로케이터를 2개 생성한다.

 

- 로케이터를 만들어서, Thigh_L_ik 조인트에 v스냅한다. 로케이터 이름도Thigh_L_Ik_distance_loc로 한다.


- 이 로케이터를 복사해서 Ankle_L_조인트에 V스냅다. 이름은, Ankle_L_distance_loc로 하고, 절대로 freeze를 하지 않는다. 그 이유는, 길이를 재어야되기 때문이다.


- L_Thigh_ik_jnt를 먼저 선택하고, Thigh_L_ik_distance_loc를 선택해서 point constrain을 한다.


- Foot_L_Main_Ctrl를 먼저 선택하고, Ankle_L_ik_distance_loc를 선택해서 point constrain을 한다. 



2 node 에디터 설정
- Thigh_L_distance_loc, Ankle_L_distance_loc를 노드 에디터에 가져온다. (shape노드는 감춘다)


- distanceBetween 노드 생성하기 -> leg_L_ik_stretch_distanceBetween으로 이름을 지정한다.

 

- Thigh_L_ik_distance_loc의 translate 노드와 distanceBetween노드의 point1을 연결한다.

- Ankle_L_ik_distance_loc의 translate노드와 distanceBetween노드의 point2를 연결한다.


- condition노드를 생성한다. -> Leg_L_ik_stretch_condition 이름을 설정하고, operation은, "greater or equal"로 설정한다.


- main컨트롤러를 가져 온다(no Shape)

- leg_L_ik_strectch_distance노드의 distance를 Leg_L_ik_stretch_condition노드의 first term으로 연결한다.


- Foot_L_Ankle_ctrl를 선택하고, 살짝 밑으로 내린다. 그리고나서 distance 속성창을 보면, First term값에 수치가 생겨났음을 알 수 있다. 이 수치를 복사한다.

 

- multiplydivide노드를 생성(operation:multiply)한다.  multiplyDivide노드의 input2의 x값에, 위에서 복사한 수치값(distance노드) 붙여넣는다.


- Foot_L_Main_ctrl는 다시 제로세팅한다.


- main_ctrl의 scale -> scale X를 multiplyDivide1노드의 input 1X에 연결한다.


- multiplyDivde1노드의 outputX를 Leg_L_ik_stretch_condition의 second term과 연결시킨다. 


- multiplyDivide노드를 한개 더 생성한다. 새로 생성한 multiplyDivide노드 이름을 stretch_Multiplydivide로 지정한다.


- Leg_L_ik_stretch_distance노드의 distance노드를 새로 생성한 multiplyDivide노드의 input1X와 연결한다.


- Multiplydivide1의 outputX를 stretch_Multiplydivide(새로 생성한)의 input 2X와 연결한다.

 

- stretch_Multiplydivide노드의 operation을 divide로 바꾼다.

- stretch_Multiplydivide노드의 output 1X를 Leg_ik_stretch_condition의 Color If True -> Color If True R에 연결한다. 


- Thigh_L_ik_jnt와 Knee_L_ik_jnt를 노드 에디터로 가져온다.


- Leg_L_ik_stretch_condition의 output R값을 Thigh_L_ik_joint의 scale -> scaleX에 연결한다. knee조인트에도 같은 방식으로 연결한다.


3 stretch on/off 스위치 만들기
- Leg_L_ik_stretch_condition 노드를 복사한다.(operation:equal)  Leg_L_ik_stretch_onoff_condition으로 이름지정.


- Foot_L_main_Ctrl을 선택하고, Auto_stretch를 add attribute한다.

- 노드 에디터에 Foot_L_Main_Ctrl을 가져온다. (no Shape)

- Foot_Main_L_Ctrl의 auto stretch값을 Leg_L_ik_Stretch_condition2(복사본)의 first Term에 연결한다.


- Leg_L_ik_stretch_condition1의 output R노드를 Leg_L_ik_stretch_onoff_condition의 color If True -> R로 연결한다.


- Leg_L_ik_stretch_onoff_condition의 output R을 Thigh_ik_joint의 scaleX와 연결한다. (knee조인트도 동일)


4 auto볼륨 기능설정
- Foot_L_main_ctrl에 auto_volume항목을  add Attribute 한다. ( Float, min:0, max:1 )

- Leg_L_Stretch_onoff_condition 노드를 복사해서, Leg_L_autovolume_condition1 (operation:equal)으로 이름을 지정한다.


- Foot_L_main_Ctrl의 auto_volume을 Leg_L_autovolume_condition의 first term에 연결한다. second term값에 1을 타이핑한다. 


- Leg_L_ik_stretch_onoff의 output R값을 autovolume_condition의 Color If True -> Color If True R에 연결한다.


- multiplyDivide노드를 생성한다 -> 이름은 leg_L_autovolume_multiplyDivde로 지정

- Leg_L_ik_autovolume_condition의 output R값을 autovolume_multiplyDivide의 input1X에 연결한다.

 

- operation을 power로 놓고, input 2X값에 0.5를 넣는다.


- autovolume multiplyDivide를 복사해서 autovolume_multiplyDivide2를 만든다. 

- autovolume_multiplyDivide1의 ouput 1X값을 autovolume_multiplyDivide2의 input 2X와 연결한다. operation을 divide로 한다.


- autovolume_multiplyDivide2의 ouput X값을 leg,knee의 scale Y,Z와 연결한다.