아래 그림과 같이
RootLeg, MidLeg, Ankle, Foot GameObject들이 부모 자식관계로 구성되어 있다. 이 상태로 Unity Animation Rigging 의 Rig Setup, Bone Render Setup 한다.
( 3d툴에서 bone을 만들필요없다. )
여기서 중요한 포인트는
각 GameObject의 origin이 회전축 anchor 로 위치해 있어야 한다는 것이다. (아래 그림에서 RootLeg의 origin 위치를 참고하라)
이는 Blender 툴에서 orgin을 별도 설정해야 한다.
1. Two Bone IK Constraint Setup
Left Leg, Right Leg 을 담당할 LL, RL GameObject 들을 생성하고 그곳에 각각 Two Bone IK Constraint 을 추가한다.
설정값은 아래 그림을 참고 한다.
(tip을 먼저 설정하고 Auto Setup from tip Transform 메뉴를 선택하면 자동으로 LL_target, LL_hint GameObject들이 자식으로 추가된다.)
2. IK Foot Solver setup
IKFootSolver 소스는 Unity Animation Rigging 에는 없고,
Unity Animation Rigging Sample에 있다.
1) target
이 소스의 역할은 두 발을 LL_target, RL_target 에 위치시키기 위한 것이다.
IK Foot Solver.Body (Hip) 가 앞으로 이동하면, Hip 의 중심이 바뀌면서, 특정 step 을 벗어나면, LL_target, RL_target이 앞으로 하나씩 이동하게 한다.
결론적으로 발이 그 이동된 target으로 옮겨지게 된다.
처음 LL_target, RL_target의 위치는 정확히 두 발이 내딪는 위치에 놓아야 한다.
2) hint
LL_hint, RL_hint 의 위치는 다리의 접혀지는 위치에 굽어지는 방향으로 놓아야 한다. 예를 들어 사람의 다리면 무릅의 앞쪽에 놓아야 사람다리처럼 구부리고, 새 다리라면 관절이 뒷쪽에 놓아야 새다리처럼 뒤로 굽혀진다.
* 문제는 현재 사람의 다리로 하면, 다리자체가 움직이면서 180 도 회전하는 현상이 있는데. 이유를 모르겠다.
아래 그림들 참고