Body리깅 (12) 다리 fk조인트 설정 & 마무리


1조인트 & 컨트롤러 설정

- ik조인트와 ik컨트롤러를 모두 hide시킨다.

- 다리 fk조인트들만 show로 변경한다.

 

2 fk컨트롤러를 생성
- 넙스 커브를 생성하고, v스냅으로 Thigh_fk_joint에 피봇을 맞추고, freeze한다. -> Thigh_L_FK_Ctrl


- 종아리~발목 ~ 발목에서 toe, toe ~ toetip까지 총 4개의 넙스 커브를 만든다.

- parent로 thigh_L_fk_Ctrl 아래로 하위구조를 만들어준다. ( parent ) 


- 복사 그룹 해서 오른쪽 fk 컨트롤러도 만들어준다. 


3 오른쪽 fk컨트롤러 behavior 설정
- 빈 empty그룹을 만든다. -> x축으로 -180도 설정한다.

- 그룹 아래에 오른쪽 fk 다리 컨트롤러를 하위구조로 넣고, 모두 freeze한다.

- 왼쪽 fk컨트롤러 상위에도 그룹을 만들어줘서 하이러키 구조를 동일하게 만들어준다. (아래사진 참고)


- 다리 fk_컨트롤러 먼저 클릭하고, 해당되는 조인트를 선택해서 모두 constrain parent를 설정한다. (fk조인트 리깅 끝)


4 다리 ik fk변환 스위치 만들기
- ikfk 변환 스위치 커브를 만든다.

- 오른쪽으로 그룹복사하고, add Attribute설정으로, ikfk switch항목을 왼쪽,오른쪽 동시에 넣어준다. (Float:0 ~ 1)


- 각 다리에 맞는 Ankle_L(R)_BSkin_jnt를 선택하고, ikfk 스위치를 선택한 후에 parent constrain을 실행한다.  


5 fk ik show/hide 기능 만들기
- Foot_L_Main_Ctrl_Grp과 Knee_PV_L_Ctrl_Grp을 동시에 선택하고, 그룹을 설정한다. -> Foot_L_ik_visibility_Grp로 이름을 지정한다.


- 오른쪽도 ik_visibility_gr을 만든다.

- fk 컨트롤러도 Group을 한다. ex) Foot_L_FK_visibility_Grp (아래 사진참고)

- ik,fk조인트들은 모두 숨긴다. (visibility:off)  BSkin_joint들을 모두 visibility:on한다. 


- set driven key를 설정한다. 


- Foot_L_fk_visibilty_Grp와 Foot_L_ik_visibility_Grp을 모두 선택(visibility 채널창 선택)하고, set Driven을 실행한다. 


- ik fk 스위치값이 0일때는 fk가 보이도록 설정하고, 1일 때는, ik가 보이도록 set key를 설정한다. 


6 Bskin 조인트 종속설정
- Thigh_ik_jnt를 각각 선택하고(Thigh->Knee->Ankle->Toe->ToeTip부터 차례대로 하나씩 선택), 해당되는 BSkin_joint를 선택한 후에 하나씩 parent constrain을 한다. 


- Thigh_fk_jnt를 각각 선택하고(Thigh->Knee->Ankle->Toe->ToeTip부터 차례대로 하나씩 선택), 해당되는 BSkin_joint를 선택한 후에 하나씩 parent constrain을 한다. 


- toe tip까지 총 5회가 진행한다.


위의 과정을 거치면, BSkin은 ik,fk parent constrain모두에 걸려있기에 각각 반씩 영향값을 받는다. 이를 fkik 스위치에 따라서 한쪽만 받도록 만들어줘야 한다.


7 fk ik스위치 영향값 설정하기
- BSkin_joint에 생겨난 parentConstrain 5개를 선택하고, set Driven키를 실행한다. W0,W1이란 항목을 채널박스에서 선택


- Leg_L_ikfk 스위치를 load Driver에 놓고,  ikfk:1일때(ik만 작동)와 0일때에 맞춰서, 5개의 parentConstrain의 ik와 fk값을 1과 0에 맞춰 set key를 설정한다.


- ik,fk 다리 조인트들은 모두 hide한다.


8 다리 하이러키 구조 정리하기
- upperBody_Ctrl아래에도 ---joints---- ----Ctrl----- 과 같은 경계선를 만든다. 

- joint들은 모두 선택해서, Leg_Joint_Grp로 이름을 지정해서, UpperBody_Ctrl 하위구조로 설정한다.(아래사진 참고) 


- Leg컨트롤러는 그룹으로 만들어서 Leg_Ctrl_Grp로 이름을 지정하고, upperBody밖에 위치시킨다. Main_Ctrl 하위구조로써 UpperBody_Ctrl과 동등한 위치로 만든다. 왜냐하면 upperBody컨트롤러를 아래로 내렸을 때, 다리가 접혀야 하기 때문이다.


- Leg로케이터들은 그룹으로 만들어서 Main_Ctrl 밖에 위치시킨다. (아래사진 참고)

- Waist_Bottom_jnt를 선택하고, Foot_L_Fk_visibility_Grp을 선택한 후에 constrain parent를 한다. (오른쪽도 동일하게 진행한다.)