목차
메카님(Mecanim)
애니메이션 시스템 '메카님' 은 게임 속 휴머노이드 캐릭터에 자연스러운 움직임을 주는 기능으로, 캐릭터 구조를 일반화하여 하나의 애니메이션을 다른 유형의 캐릭터에 적용하는 기술이다. 이를 통해 개발자가 하나의 모션을 만들고 나면 신체 구성이 서로 다른 캐릭터라고 할 지라도 자동으로 캐릭터 구조를 파악 후 같은 움직임을 적용할 수 있어 편리하고 빠른 개발이 가능하다. 유니티 4.XX 대부터 등장한 애니메이션 시스템이다.
모든 인간형 애니메이션을 공유할 수 있음.
http://files.unity3d.com/will/MecanimTute.zip
위 링크로 들어가면 프로젝트를 받을 수 있습니다.
Unity 5의 새롭게 개선된 메카님에 대해 유니티5: 새로운 메카님(Mecanim) 요약의 흑기사 님이 쓴 글이다.
http://unityindepth.tistory.com/60 이것도 참조 한다.
State Machine Behaviours 예전에는 메카님 사용 시, 아래와 같이 불편한 모양새로 코드를 작성할 수 밖에 없었다.
if (animator.GetCurrentAnimatorStateInfo(0).isName("Idle")) DoStuff();
하지만 이제는 메카님의 스테이트에 Behavior 스크립트(StateMachineBehaviour)를 붙일 수 있게 되었다!
http://i1.daumcdn.net/thumb/R750x0/
어떤 스테이트에 StateMachineBehaviour 스크립트를 추가하면, 해당 스테이트의 상황에 따라 아래에 나열된 콜백 함수들이 호출된다.
- OnStateEnter
- OnStateUpdate
- OnStateExit
- OnStateMove
- OnStateIK
따라서 이제 유저들은 아주 간결한 코드를 작성할 수 있다. 아울러 하나의 스테이트에는 복수의 StateMachineBehaviour 스크립트를 어태치하는 것이 가능함.
http://i1.daumcdn.net/thumb/R750x0/
State Machine Transitions
스테이트 머신의 복잡도를 줄이기 위해서 Entry노드와 Exit노드를 추가했다.
http://i1.daumcdn.net/thumb/R750x0/
Entry 노드: 만약 어떤 스테이트 머신을 향해 트랜지션이 일어나게 되면, 애니메이션 시스템에서는 먼저 해당 스테이트 머신의 Entry노드를 기점으로 하여 판단하게 된다. 따라서 Entry 노드에서부터 각 조건을 판단하여 각각 목적지(스테이트 또는 스테이트 머신)로 향해 분기가 일어난다.
Exit 노드: 이 노드에 도달하게 되면, 해당 스테이트 머신을 벗어나게 된다. 이 역시 각각 조건에 따라서 외부 목적지(스테이트 또는 스테이트 머신)를 향해 트랜지션 분기가 일어난다. (물론 조건에 따라 현재 자신의 스테이트 머신으로 트랜지션이 될 수도 있다.)
이로써 5 버전에서는 Entry 노드, Exit 노드를 이용하여 스테이트 머신의 복잡도를 대폭 줄일 수 있을 것이다.
Asset Creation API
이제 에디터 스트립트를 이용하여 StateMachine, State, Controller, Layer, Blendtree와 같은 애니메이션 에셋을 생성할 수 있는 API를 제공함. (NOTE:샘플 코드는 상단에 게재된 첫번째 링크의 블로그에 들어가셔서 확인할 수 있다.)
Direct Blend Trees
Unity5에서는 Direct Blend Tree라는 새로운 타입의 BlendTree를 제공함. 이것을 통해서 Animator의 파라미터를 BlendTree의 각 차일드(애니메이션)의 weight값들로 직접 매핑할 수 있게 되었다. (아래 그림 참조)
http://i1.daumcdn.net/thumb/R750x0/
이 기능은 유저가 BlendShape 애니메이션 또는 additive 애니메이션 작업을 할 경우에 매우 유용할 것이다.
Root Motion Authoring (in generic mode)
이제 메카님 제너릭 모드에서 루트 모션 커브(root motion curve)를 사용자가 직접 직접 제작할 수 있다. 방법은 매우 간단함.
- animation 하나를 생성함.
- 오브젝트를 이동/회전을 하여 원하는 애니메이션 커브를 만듭니다.
- 오브젝트의 최상위 트랜스폼에 포커스를 둔 상태로, AnimationClip 인스펙터 안에 있는 [Generate Root Motion] 버튼을 클릭함.
http://i1.daumcdn.net/thumb/R750x0/
그 밖의 개선된 내용들:
- 프리뷰 카메라 개선
- name, default value 등등 파라미터에 대한 런타임 접근
- root 포지션, ik 포지션 등등 씬 뷰(scene view)의 기즈모(gizmo) 추가
- 리타게팅(retargeting) 엔진 개선
- 런타임 최적화
- 수많은 버그픽스 등등