ControlRigSamplesPack #1 Mannequin Body (foot)


 

뻘짓의 아픔을 딛고 이번엔 빠르게 진행 해 봐야겠다.

이번에도 내 관심사는 발.근데 이건 이전에 해 본 발이라 특이사항은 없을거 같지만,

그래도 천천히 분석 해 보자.

일단 구조 잡기.

다리 IK를 위해 골반작업.
hip_tan_ctrl 이라는 컨트롤러가 있다. 위치는 첫번째 스파인과 같은 위치에 있고
일단 기억해 두자.
이거 그냥 IK 모드일때 첫번째 스파인 위치.
내 생각엔 스파인이 IK FK 나뉠 이유는 없어 보인다.
난 이 부분을 생략 하고 진행 하기로 했다.

첫번째 함수
ForwardSpine

스파인 스위치 모드 삭제
내부에 사용하는 함수 FK Point At
에라이 


뭔가 쓸때없이 복잡한거 같아서 그냥 난 간단하게 새로운 함수로 만든다.

난 그냥 이렇게 일단 만들었다.
함수는 


이렇게 심플하게 , 왜냐면 IK 전환을 안할꺼고 그냥 스파인처럼만 움직이게 할꺼니까.
나중에 필요하면 추가한다.

이제 발!

fk컨트롤러
발가락. 이건 필요 없고
ik컨트롤러
폴벡터


FK 부터 만들어보자
FK는 스위치가 false 일때
3개의 관련 함수를 만들어 줘야 한다.



레그부터 만들자.

이런 인풋 요소들이 필요하고
previous ik mode와 negative side 그리고 softness 이 3개의 역할을 이름만 보고는 잘 모르겠다.


로컬 변수 IK mode(기본값 true)로 스위치 컨트롤 값을 받아와 불리언으로 선언을 해 주는데
왜 이렇게 하는진 잘 모르겠네 그냥 참거짓으로 하면 안되나? 이건 나중에 한번 생각해 보자.



이렇게 해주는데 여기서 
FK Point at 은 






이렇게 구성 되어 있는데 솔직히 잘 모르겠다...이것도 나중에 천천히 분석 해 보자.

지금 난 IK가 없기때문에 이렇게만 FK만 우선 구성한다.



FK다리는 이렇게만 해도 OK
발은 발가락은 필요 없으니까 삭제하고 발 함수도 만들어 준다.
다리와 마찬가지로 일단 FK만 만들어 준다.


아주 간단하다.

Previous IK Mode 는 모드 스위치를 할때 키를 찍어주기 위해 사용하는거 같다.




근데 왜 구분을 해 둔걸까? 이건 아직 잘 모르겠다. 



FK는 이게 다 니까 오른쪽도 복사를 해주고, 드디어 재미있는 IK를 만들어주자!

Negative Side 는 Axis 방향이 반대일 경우 사용한다.




이해를 하고 보니 확실히 이해가 간다. 네거티브 사이드일 경우 뒤집힌 방향이니 180을 곱해주고 그 값으로 셋팅을 해 준다.



IK 셋팅 전에 visibility 만들어서 FK를 숨겨준다.
여기서 추가되는 함수 Set IKFK Visibility



이렇게 만들어주고



복잡한건 없다.
Not을 사용하는 이유는 두 조건이 항상 같아야 하기 때문이다.
쇼 컨트롤 컨디션이 참이기 때문에


요렇게 말이다.

IK 컨트롤러와 폴벡터를 만들어 주자


용도가 다 있겠지만, 만약 내가 키를 잡는 사람이면 구성을 이렇게 하지 않을것이다.
함수를 추가 하면서각각의 용도를 분석하고 구성을 좀 바꿔봐야 겠다.

일단은 뭐가 뭔지 나도 잘 모르니까 다 달아주고

두개의 함수를 추가해 준다.
Compute Pole Vector Parent
IK 2 Bones


Compute Pole Vector Parent

이렇게 만든다.
thigh본 월드 좌표 기준으로 폴벡터 컨트롤러를 정렬시켜주는 역할을 한다.
널을 사용하는 이유는 아무래도 컨트롤러의 좌표를 0으로 유지 시키며 위치 시키는 역할 아닐까? 내가 맥스에서 더미나 포인트를 사용하듯이?
정말 align이 되는지 확인해 봤는데


안된거 같은데? 일단 넘어가자.
드로우는 지우자.

IK 2 Bones






calf 에서 폴벡터까지 라인을 그려준다.
이건 딱히 중요하진 않다.
 primary axis 본의 진행방향. 부모-> 자식
secondary axis 접히는 관절의 앞방향

이런 경우 primary axis x1 secondary axis y -1


난 지금 왼쪽 다리 기준으로 만드는 중이다. 이부분은 기록 하지 않아도 보면 알수 있을거야!


이펙터 
드디어 softness 를 만났다.
스트레치 범위설정인거 같다. 이 변수의 셋팅한 맥스값이 2였으니 stretch maximum ratio 도 2로 설정해준다
이걸 근거로 softness float 값은 알파값임을 추측할수 있다.

IK 2 Bones 함수의 내부 함수 들이라 다른곳에 영향을 주지는 않을것이니 없어도 상관없고,
난 이게 딱히 필요 없는 기능이긴 한데,공부삼아 똑같이 하기로 한다.



calf와 foot 의 로컬 좌표 primary axis를 가져와 더해 기본 길이를 구하고,

Exponential
지수의 라는 뜻 
리니어와 반대의 의미로 사용
리니어에 비해 적은 값의 움직임으로 큰 작용을 얻는다.




요런걸 해주고, 왜 이렇게 작은 값이 필요할까?


이렇게 마무리가 되는데 난 이걸 이해할 생각이 없다...이걸 이해 하는건 이걸 사용해야 하는 상황의 나에게 양보하겠다.

이렇게 ik 다리가 끝이 난다.
너무 길어지는 관계로 발은 따로 기록해야 겠다.
오른쪽 복사 해 주고 끝내자.