Body 리깅(14) 팔 리깅 - fk,BSkin 조인트 설치-


 

1fk컨트롤러 생성

- 넙스 커브를 생성해서, Arm_L_fk_Ctrl ~ Elbow_L_fk_Ctrl ~ Wrist_L_fk_Ctrl 이름으로 피봇을 각 조인트 위치에 맞춰준다. (아래사진 참고)

 

- Arm_L_fk_Ctrl를 상위구조로 Hiearchy 구조를 만든다. (모두 Freeze한다.) 



- 왼팔 fk 컨트롤러를, behavior 방식으로 오른쪽에 복사 & 적용한다. 

- 오른팔 fk 컨트롤러도 왼쪽과 같은 parent 하위 Hiearchy 구조를 만든다. (아래 사진 참고)


2 fk 조인트 & 컨트롤러 연결
- Arm_L_fk_Ctrl먼저 선택하고, Arm_L_fk_jnt선택해서 parent constrain(maintain offset 체크)을 한다.


- Elbow ~ Wrist fk컨트롤러들도 Elbow_L_fk_jnt와 Wrist_L_fk_jnt와 parent constrain한다. 


3 BSkin조인트 생성하기
- Arm_L_fk_조인트 체인을 복사(Ctrl + D)한 후, 내부 constrain들을 모두 삭제한다. 이름을 BSkin으로 만든다. 


- Arm_L_BSkin_jnt , Elbow_L_BSkin_jnt , Wrist_L_BSkin_jnt로 이름을 설정한다.



4 advance twist 조인트 생성
 
- 상단 메뉴의 "skeleton -> insert joint"를 실행한다. 


- Arm_L_BSkin_jnt를 선택한다.


- 조인트 4개를 추가한다. LRA 확인하기 (조인트 축이 ik와 같아야 한다)


- 마지막 조인트는 insert키를 눌러서 elbow에 붙인다.


- 나머지 3개의 조인트는 간격을 비슷하게 조절해준다. (아래사진 참고)


- elbow아래도 위와 같은 방식으로 적용해준다. (마지막 조인트는 Wrist에 붙이고, 나머지 3개는 간격을 조절)


- 생성한 조인트들의 축을 확인해본다. (fk,ik 조인트의 축과 같아야 한다)


- 이름을 설정한다.

* Arm_L_BSkin_jnt --> Arm_L_BSkin_twist_jnt1 --> Arm_L_BSkin_twist_jnt2  --> Arm_L_BSkin_twist_jnt3  --> Arm_L_BSkin_twist_jnt4 


* Elbow_L_BSkin_jnt --> Elbow_L_BSkin_twist_jnt1 --> Elbow_L_BSkin_twist_jnt2  --> Elbow_L_BSkin_twist_jnt3  --> Elbow_L_BSkin_twist_jnt4 

(아래사진참고)


5 Twist조인트 복사

- 왼쪽 Bskin 조인트 체인 전체를, 오른쪽으로 미러복사한다.


6 ik spline 커브 만들기 

- 조인트를 y축으로 회전시키려면, ik spline 핸들을 설치해야 한다. 

- cv커브를 생성해서, v스냅으로 시작과 끝을  "Arm ~ Elbow" , "Elbow ~ Wrist" 각각 2개의 선을 생성한다.


- 커브 이름은, Arm_L_ikSpline_crv, Elbow_L_ikSpline_crv로 지정한다. 


7 ik spline설치
- 상단 메뉴에서, "create ik Spline Handle" 옵션을 선택한다. 


- 옵션창에서 auto create curve항목을 체크해제한다. (수동으로 커브를 만들어놨기 때문에)


- Arm_L_BSkin_jnt를 먼저 선택하고, Elbow_L_BSkin_jnt과 같은 피봇 위치에 붙어 있는Arm_L_BSkin_twist_jnt4를 클릭하고, Arm_L_ikSpline_crv를 선택한다. (ikSpline 생성됨)


- 생성된 ikHandle이름은 Arm_L_twist_ikHandle로 지정한다.


- Elbow역시 Arm과 같은 방식으로 ikSpline 핸들을 생성한다. 


- Elbow_L_BSkin_jnt를 선택하고, Wrist_L_BSkin_twist_jnt4를 선택하고, Elbow_L_spline_Crv를 선택한다. 

 

- 생성된 ikHandle이름은 Elbow_L_twist_ikHandle로 지정한다.


8 skin바인드
- 허리 리깅에서 했던 것과 같은 방식으로 Arm_L_Start_jnt , Arm_L_Middle_jnt, Arm_L_End_jnt를 생성해서, Arm, Elbow,Wrist에 v스냅한다. (radius 3정도로 가장크게)


- Arm_L_Start_jnt와 Arm_L_Middle_jnt를 동시에 선택한 뒤에, Arm_L_twist_crv를 선택한다. 


- bind메뉴로 가서, skin bind를 실행한다. (Max influence:2, 아래사진 참고)


-Arm_L_Middle_jnt와 Arm_L_End_jnt를 선택한 뒤에, Eblow_L_twist_crv를 선택하고, skin->bind한다. ( Max influence : 2 )


- ikspline핸들 이름을 Arm_L_twist_ikHandle, Elbow_L_twist_ikhanlde로 지정한다.

- skin->bind를 끝내고나면, 아래처럼 ikBSkin조인트의 움직임은 Arm_L_Start ~ Arm_L_End 조인트가 조절한다.


9 ikBSkin twist 설정
- Arm_L_twist_ikHandle의  Attribute창에서, Advanced Twist Controls 항목으로 간다.

- 'Enable twist control'에 체크하고, World Up Type을 "object Rotation up( Start / End)"로 설정한다. 


- World Up object에는 Arm_L_Start_jnt 이름을 타이핑하고, World Up object2에는 Arm_L_Middle_jnt를 타이핑한다.


- Up Vector, Up Vector2의 값은, y값을 1로 지정하고, x와z방향은 0으로 설정한다.

- Elbow_L_BSkin_ikHandle에도 Arm과 같은 방식의 Advanced twist controls 설정을 적용한다.


- 오른팔 Twist 컨트롤 설정도 왼팔처럼 진행한다.

- 오른팔에서 주의해야 할 점은, advanced Twist Controls의 Forward Axis, Up Axis값을 "Negative X, Negative Y"로 설정해야 한다는 점이다.  (mirror로 조인트 축 방향이 왼쪽과 반대)


10 ikfk 스위치 생성하기

- 아래 사진처럼 ikfk 스위치를 넙스커브로 생성한다.

- add attribute기능에서, ikSwitch항목을 생성한다. ( float방식, min : 0, max : 1로 설정 )

- ik스위치에서 0값은 fk를 의미하고, 1은 ik를 의미한다. 여기서 enum방식으로 하고, fk,ik를 설정해도 상관없다. 


11  아웃라이너 정리
- 조인트, 컨트롤(그룹화), Etc항목을 정리해서 아웃라이너에 넣어준다. (아래사진 참고)