Body 리깅(16) 팔 스트래치 


 

1로케이터 생성

- 로케이터를 생성한다. 이름은, Arm_L_distance_loc로 지정한다.

- Arm_L_distance_loc를 그 자리에서 복사해서 손목에 v스냅으로 이동시킨다.(No Freeze) 이름을 Wrist_L_distance_loc로 지정한다. 


- 오른쪽에도 로케이터를 생성한다.


- Arm_L_ik_jnt를 선택하고, Arm_L_distance_loc를 선택한 후에 point constrain을 실행한다. (maintain offset 체크)


-> Wrist_L_ik_Ctrl를 선택하고, Wrist_L_distance_loc를 선택한 후에 point_constrain한다. (반드시 Wrist_L_ik_Ctrl여야 한다. Wrist조인트 아님! *주의)  


-> Arm(Elbow)_L(R)_spline_Crv ,  Arm(Elbow)_L(R)_twist_ikHandle을 모두 그룹해서, node 에디터로 갈 준비를 한다. <아웃라이너를 정리> (아래사진 참고)


2 노드 에디터 실행
- 노드 에디터를 실행한다.

- Wrist_L_distance_loc와 Arm_L_distance_loc를 갖고온다(no Shape)


- distanceBetwwen노드를 생성한다.

- Arm_L_distance_loc와 Wrist_L_distance_loc의 translate(not x,y,z)파이프를, distance노드의 point1과 point2로 연결한다.


- condition노드를 생성한다.

- distance노드의 distance값condition노드의 first term값에 연결한다. 


- Arm_L_ik_Ctrl를 살짝 이동시켜서, 해당 값이 distance node의 first term에 들어오도록 한다. 


- Arm_L_ik_Ctrl를 살짝 이동시켜서 얻은 first term의 값을 복사한다.

- multiplydivide노드를 생성하고,(operation:multiply) input 2의 x값에, 복사한 first term값을 붙여넣는다.


- Arm_L_ik_Ctrl의 위치를 제로세팅한다.


- main_ctrl를 불러온다.(no shape)

- main ctrl의 scale X값을, multiplydivide의 input 1X에 연결한다.


multiplyDivide의 output X값을, condition(operation: greater or equal )의 second term에 연결한다.


- multiplyDivide노드를 하나 더 생성한다. (multiplydivide2라고 부르겠음, operation:divide)


- distanceBetween노드의 distance값을, multiplyDivide2의 input 1X에 연결한다.


multiplyDivide1노드의 output X값을, multiplyDivide2의 input 2X에 연결한다.

- multiplyDivide2의 output X값을 condition 노드의 Color If True -> Color If true R에 연결한다.


- Arm_L_ik_jnt와 Elbow_L_ik_jnt를 불러온다. 

- condition 노드의 output R값을 Arm_L_ik_jnt와 Elbow_L_ik_jnt의 scale X와 연결한다.


- 현재 여기까지 진행하면, BSkin twist조인트는 움직이지 않는다. 왜냐하면 spline 커브가 stretch되지 않기 때문이다.


- 일단, 노드 에디터에 북마크로 stretch를 저장한다.