Body 리깅(10) 무릎 리깅



1무릎 컨트롤러 만들기

- 무릎 컨트롤러를 화살표 모양으로 생성하고, freeze한다.

- 이름을 Knee_PV_L_Ctrl으로 만들고, 오른쪽으로 복사한다.

- 오른쪽도 컨트롤러를 freeze한다. 

- 오른쪽에는 empty그룹을 만들고, x축으로 -180도 회전시킨다.

- x축으로 -180도 회전시킨 그룹 아래에 오른쪽 컨트롤러를 넣는다.(parent) 그룹 아래에 들어간 오른쪽 컨트롤러는 freeze한다.


- 왼쪽에도 그룹을 만들어서 하이러키 구조를 맞춰준다. 무릎 그룹은 모두 센터피봇한다.


2 폴벡터 연결
- 무릎 컨트롤러를 먼저 선택하고, Ankle_ikHandle을 선택한 후에 constrain -> pole vector를 적용한다.


- 오른쪽도 폴벡터를 적용해준다. 

 

3 무릎 종속자 설정

 무릎 컨트롤러는, 하체가 움직일 때 따라가야 하지만 가끔씩 상체가 움직일 때도 따라가는 구조가 필요할 때가 있다. 리깅 작업자는 모든 경우의 수를 생각해야 한다.

- Knee_L(R)_PV_Ctrl 무릎 컨트롤러를 왼쪽 오른쪽 동시에 선택하고, 

add Attribute에서 'parent'란 이름을 enum 값으로 upperBody와 Ankle로 Add한다.


- 로케이터를 3개 만들어서, 한개는 Waist_bottom_jnt에 V스냅하고, 하위구조로 넣어준다. 이후 freeze한다.  이름은 parent_upperBody_loc로 지정한다.


- 나머지 로케이터 중 하나는, Ankle_L_ikHandle아래에 넣어준다. freeze  -> 이름은 parent_L_Ankle_loc로 지정한다.


- 각 로케이터를 먼저 선택하고, 각 폴벡터 그룹(센터피봇)을 선택한 후에 constrain parent를 한다. 



이렇게되면 폴벡터 그룹은 각각 parent_upperBody_loc와 parent_L_Ankle_loc 두개의 움직임에 동시 종속을 받게 된다.


- 폴벡터 그룹 아래를 살펴보면, parent_upperBodyAnkle_Constrain이 생겼는데, 여기의 W0,W1값을 채널박스에서 드래그한 이후에 set Driven key를 실행한다. 


- load driver에 Knee_PV_L(R)_Ctrl의 parent를 선택한다. 


- 무릎 폴벡터 컨트롤러의 parent항목을 'upperBody'에 놓고, Parent UpperBody Loc값이 작용하도록 (수치값:1), parent_Ankle_Loc(수치값:0) Set키를 설정한다.


- 반대로 무릎 폴벡터 컨트롤러의 parent항목이 Ankle일때, Parent Ankle loc값이 작용하도록(수치값:1), parent_ankle_loc(수치값:1) , upperBody loc(수치값: 0)에 놓고 set키를 설정한다.


- 오른쪽 무릎도 왼쪽과 똑같이 설정한다. 


단, 오른쪽에서 주의해야 할점은, 폴벡터 무릎 그룹이 x축으로 -180도 돌아가 있기때문에 그룹을 한번 더해야 한다는 점이다. (아래사진 참고) 아래 사진처럼, 오른쪽 폴벡터 무릎Group 한번 더 그룹해서, 센터피봇과 freeze를 한다. 나머지는 왼발과 동일하다.


4 heel,toe rotate 설정하기
- ankle_L(R)main_Ctrl에 heel rotate, toe rotate 항목을 add ATtribute한다.

  -1 ~ 1 ,default:0


- Toe_L_ikHandle_Grp의 rotate X값을 set Driven키로 설정한다.(Driven)


- Ankle_L_Main_Ctrl의 "heel rotate"값이 1일 때는, Toe_L_ikHandle_Grp의 x축 로테이션을 회전해서 발끝을 들어올리는 형태로 만들어준다. -> default에 먼저 키를 설정하고, 이후에 키 설정한다.


- heel rotate값이 -1일 때는 Toe_L_ikHandle_Grp값을 x축 로테이션으로 -30도 정도 뒤로가는 모션으로 설정한다.


- 발끝을 설정하는 방법은, 발 뒷꿈치랑 다르다. 

- 현재 Toe_L_Tip_ikHandle의 피봇 위치가 발끝이기 때문에 회전이 되지 않는다. 따라서Toe_L_Tip_ikHandle을 그룹으로 만든다. (아래 사진참고) 이후, 피봇을 Toe_L_ik_jnt에 위치시킨다. 


- Toe_Tip_L_ikHandle_Grp을 set driven 키로 driven에 걸어준다. (rotate X축.)

- Foot_L_Main_Ctrl의 toe_rotate값이 -`1부터 1사이까지 설정하고, Toe_Tip_L_ikHandle_Grp의 rotate X축의 값을 Key설정한다.


- 오른쪽 발의 heel_rotate, toe rotate도 왼발과 똑같은 작업을 한다.