본문 바로가기
Maya

개 리깅연습3 : ik handle편 (feat. 컨트롤러)

by 흘림보 2020. 11. 12.

조인트작업을 마쳤다면 다리에 ik작업을 해줘야한다.

 

ik(inverse kinematics)는 발목을 잡고 움직였을때 그것에 따라서 역 운동을 한다고해서 붙여진 이름이다. 

그럴려면 발목있는 곳에 피봇이 있어야겠네, 

하지만 개의 경우 사람보다 다리에 조인트를 더 많이 사용하기 때문에 헷갈렸다.

 

IK에 대해서 먼저 알아보도록 하자.

 ik작업을 하는 방식은 여러개인데 내가 선택한 방법은 3개의 ik를 사용하는 방식이었다.

 

기본적으로 ik옵션에는

Pole이 필요없는 Single-Chain Solver

Pole을 필요로하는 Rotate-Plane Solver가 있다.

 

그런데 기본옵션에 없는게 하나 더 있다.

바로 ikSpringSolver인데, 주로 곤충다리처럼 여러번 꺽이는 조인트에 쓰인다고 한다.

기본옵션에 없기때문에 mel script를 이용해서 불러줘야한다.

 

조인트가 선택된 상태로 스크립트를 저렇게 쓰면

 

옵션에서 이렇게 새로 생긴 것을 볼 수있다.

개 다리의 리깅도 이걸로 할 수 있었다.

 

근데 새롭게 알게된 옵션이라서 나에겐 조금 어렵게 느껴져서 그냥 기본옵션 두가지를 사용하기로 결정!

먼저 Rotate-Plane Solver를 이용해서 대퇴골(femur)-윗발목(metatarsus) 까지를 연결한다.

 

아웃라이너에 생긴 ik 아이콘 네이밍은 r또는l_ankle_ik_handle 로 헷갈리지않게 적어둠

 

 

그리고 윗발목뼈(metatarsus) - 발목뼈(metacarpus) 까지를 Single-Chain Solver를 사용해서 연결,

발목뼈(metacarpus) - 발끝까지 또 Single-Chain Solver를 사용해서 연결해주었다.

 

네이밍은 각각 l_ball_ik_handle 그리고 l_toe_ik_handle 라고 해줌

그런데 나는 발가락 조인트를 다 따로해줘서 ik연결이 좀 곤란했다. 

발가락 rig를 해주려면 ik를 다르게 해줬어야 할텐데,, 결국 발가락 rig는 포기하고 두번째 발가락에 ik handle을 연결해주었다.

 

 

 

이렇게 총 세개의 ik를 사용한 셈인데, 이 ik체인을 컨트롤러와 하이어라키 구조를 이용해서 정리해주어야한다.

그래서 갑자기 컨트롤러를 만들어 줄거임

 

멜스크립트를 이용해서 컨트롤러를 만들어주는 기특한 창을 띄울건데,

Sin_RigController.mel
0.01MB

첨부된 이 mel을 다운받아서 실행시키면 아래와같이 사용할 수 있다.

 

 

저 친구를 이용해서 아주 금방 컨트롤러를 만들었다.

컨트롤러는 그 생김새와 상관없이 내가 움직이고자 하는 조인트에 피봇을 옮겨서 셋팅한다.

이후 freeze transformation / delete by history 를 잊지않고 해주면 전체적인 컨트롤러 셋팅은 끝난다.

 

그리고 ik핸들과의 하이어라키 구조를 아래와같이 짜주었다.

이 때에 주의 할점은, 피봇셋팅을 다시 해주기 위해 세개의 ik handle 들을 그룹화하는 작업을 여러번해주는데, 

ankle_ik_group / ball_ik_group / toe_ik_group 의 피봇은 발목조인트 중심에,

위 세개를 그룹짓는 toe_roll_group의 피봇은 발끝조인트 중심에 있어야한다는 점이다.

더 상위에 있는 foot_group은 발목조인트에 두어야한다.

 

그 그룹을 마침내 발 컨트롤러 아래에 넣는다.

 

 

이러면 뒷발의 연결이 끝남,

오른쪽 뒷발도 마찬가지로 작업해주면 된다.

 

이제 앞발의 차례,

앞발은 다행히 뒷발보다는 비교적 간단하다.

 

먼저 Rotate-Plane Solver를 이용하여 조인트 아래팔뼈(radius) - 발목뼈(metacarpus)까지를 연결해준다.

이후 Single-Chain Solver를 사용해서 발목뼈(metacarpus) - 두번째발가락뼈를 연결해주었다.

 

 

이후 뒷다리했던것 처럼 각각 ik handle을 그룹화해서 발목뼈 중심에 피봇을 설정하고

그 그룹들을 다시 그룹화 해서 똑같이 발목뼈 중심에 피봇을 설정한다. 

 

 

그리고 그 그룹을 컨트롤러 아래에 종속시킨다.

 

그러면 끝!! 이 아니고 Rotate-Plane Solver ik핸들을 사용한 부분에 Pole vector를 설정해줘야한다.

 

 

 

컨트롤러, ik 핸들을 잡고 Constrain - Pole Vector를 눌러주면 폴벡터 컨스트레인이 체인모양으로 ik핸들아래 아이콘이 생긴다.

 

 

 

이렇게 컨트롤러 만들어주고, 폴벡터까지하면 끝!!

 

(아직 스킨바인드 하기전입니다.)