이번에는 Unity 5의 새롭게 개선된 메카님에 대해 간단히 정리하여 포스팅 해보겠습니다.
포스팅 내용은 아래 링크들을 참조하였습니다.

http://blogs.unity3d.com/2014/06/26/shiny-new-animation-features-in-unity-5-0/

https://www.youtube.com/watch?v=7djMWP4EKTs&list=PLX2vGYjWbI0RP5YmvwgqgJQrHGul-Tnr_&index=5





State Machine Behaviours

 예전에는 메카님 사용 시, 아래와 같이 불편한 모양새로 코드를 작성할 수 밖에 없었습니다.


 if (animator.GetCurrentAnimatorStateInfo(0).isName("Idle"))

      DoStuff();


하지만 이제는 메카님의 스테이트에 Behavior 스크립트(StateMachineBehaviour)를 붙일 수 있게 되었습니다!



어떤 스테이트에 StateMachineBehaviour 스크립트를 추가하면, 해당 스테이트의 상황에 따라 아래에 나열된 콜백 함수들이 호출됩니다.


     - OnStateEnter                                                                          

     - OnStateUpdate                                                                        

     - OnStateExit                                                                             

     - OnStateMove                                                                           

     - OnStateIK 


따라서 이제 유저들은 아주 간결한 코드를 작성할 수 있습니다. 

아울러 하나의 스테이트에는 복수의 StateMachineBehaviour 스크립트를 어태치하는 것이 가능합니다.








State Machine Transitions

스테이트 머신의 복잡도를 줄이기 위해서 Entry노드와 Exit노드를 추가했습니다.




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값들로 직접 매핑할 수 있게 되었습니다. (아래 그림 참조)



이 기능은 유저가 BlendShape 애니메이션 또는 additive 애니메이션 작업을 할 경우에 매우 유용할 것입니다.





Root Motion Authoring (in generic mode)

 이제 메카님 제너릭 모드에서 루트 모션 커브(root motion curve)를 사용자가 직접 직접 제작할 수 있습니다. 방법은 매우 간단합니다.      
  1) animation 하나를 생성합니다.

  2) 오브젝트를 이동/회전을 하여 원하는 애니메이션 커브를 만듭니다. 

  3) 오브젝트의 최상위 트랜스폼에 포커스를 둔 상태로, AnimationClip 인스펙터 안에 있는 [Generate Root Motion] 버튼을 클릭합니다.








그 밖의 개선된 내용들:

- 프리뷰 카메라 개선
- name, default value 등등 파라미터에 대한 런타임 접근
- root 포지션, ik 포지션 등등 씬 뷰(scene view)의 기즈모(gizmo) 추가
- 리타게팅(retargeting) 엔진 개선
- 런타임 최적화
- 수많은 버그픽스 등등



2015/04/01 - [Unity] - [Unity 5 들여다보기] Transition Interruption Source


2015/04/15 - [Unity] - [Unity 5 들여다보기] State Machine Behaviours





Posted by 흑 기사

댓글을 달아 주세요

  1. 오오 2015.09.02 16:25  댓글주소  수정/삭제  댓글쓰기

    감사합니다.!!~~

  2. 민준 2016.09.12 23:57  댓글주소  수정/삭제  댓글쓰기

    root일때 애니메이션 시작시마다 이벤트를 불러올순 없을까요 ?
    enter나 , exit은 root에 처음 들어올떄 나갈때만 하더라구요.