12월 07, 2015

[Sprites and bones]유니티 애드온으로 2D Skeletal Animation 구현하기

제가 소개할 애드온은 유니티 3D에서 2D Skeletal Animation을 생성하기위한 애드온입니다.
애드온을 사용하여 유니티 에디터에서 직접 뼈 계층 구조를 추가 할 수 있습니다.
스프라이트는 뼈를 부모로 가질 수 있습니다.
뼈는 애니메이터 창에서 다른 게임 오브젝트와 같은 애니메이션을 적용 할 수 있습니다.
뼈는 메쉬 또는 입자 시스템과 같은 스프라이트가 아니더라도 다른 게임 오브젝트로 애니메이션을 구현할 수 있습니다.

아래 주소에서 튜토리얼, github 페이지 등을 참고할 수 있습니다.


http://forum.unity3d.com/threads/release-free-unity-sprites-and-bones-2d-skeleton-animation.219915/



※본 포스트는 위 링크의 동영상을 요약한 것이므로 
페이지에 나와있는 24분 가량의 동영상을 보셔도 되고, 대략적인 방법만 보실 분은 글만 빠르게 스캔하시면 되겠습니다.


아래는 애드온이 제공하는 기능입니다.

#기능



* Skeletons 와 Bones
* IK(Inverse Kinematics)와 targets
* IK Helper 객체
* Bones 와 IK 는 완전히 애니메이션됩니다.
* Bone Splitting ( 뼈 분할 )
* 메쉬 변형
* 가중치 그리기
* 뼈는 Ctrl 키와 왼쪽 클릭으로 추가됩니다.
* 저장 및 포즈의 불러오기. 포즈는 애셋으로 저장됩니다.
* 완전 유니티 에디터에 통합.
* 취소-지원
* 수많은 기즈모
* 나는 역 기구학 언급 했습니까?
* 무료 및 오픈 소스


준비물 : 스프라이트 모음, Sprites and bones 애드온




스프라이트 에디터에서 기본값이 센터로 되어있는 피벗 좌표를 적절하게 설정하고
아래와 같이 씬에 하이어라키에 계층 구조로 배치합니다.




먼저 팔을 회전시켜보자, 이 때 피벗을 커스텀 설정했음에도, 스프라이트 중앙을 기준으로 회전할 수 있는데, 이 때는 유니티 좌측 상단에 Center 로 되어있는 토글 버튼을 pivot 으로 변경해주면 원래의 회전축대로 회전하게 됩니다.


이제 Sprites and Bones 애드온을 쓸 차례인데 우선 메뉴에서 Skeleton을 선택합니다.
그러면 초기에 하나의 Bone이 생성되고 씬에서는 흰 사람모양의 오브젝트가 보입니다.
처음 생성된 Bone 이름을 SpineBone으로 명명하고 노란 네모박스 영역을 머리 전까지 드래그합니다.
팔 부분을 리깅하기 위해서, SpineBone 을 다시 선택하고 Ctrl+좌클릭으로 새로운 Bone을 생성합니다. 이 때 Inspector 창에서 Bone 스크립트 부분을 보면 Snap to Parent 체크란에 체크가 되어있는데 이를 해제하면 리깅 시작점을 옮길 수 있습니다. 팔이나 다리는 이처럼 체크를 해제한 후 시작점을 옮겨서 리깅해야 합니다.


※ 리깅 : 모델링 된 데이터에 뼈를 붙이는 작업. 주로 T자 형태로 펴진 상태에서 한다.

뼈대를 완성하였다면, 다음은 SpineBone을 제외한 각 Bone에 IK를 추가해야 합니다.
IK를 추가하는 방법은 먼저 Inspector 창에서 Add IK 버튼을 누르고 Chain Length 를 지정합니다.
Chain Length 는 해당 파츠에 딸려 움직이는 파츠 수를 입력하면 됩니다. 가령 머리는 한 개 파츠로 이루어져 있으므로 1 이 되고, 손, 팔 하단, 팔 상단으로 이루어진 팔에서 손 파츠의 Chain Length 는 3입니다.
그 다음 Create target helper 를 눌러서 헬퍼를 생성하면 됩니다. Type 옵션은 기본적으로 Wire Cube로 되어있는데, 팔 상단과 다리 상단 파츠만 Wire Sphere로 지정하고 나머지는 기본값을 사용하면 됩니다.
그러면 아래와 같이 리깅이 완료됩니다.











































Skeleton 오브젝트를 선택해서 Edit Mode의 체크를 해제하고, 아무 파츠의 IK를 선택해서 이리저리 움직여봅시다.

하지만 스프라이트와 뼈대가 연동이 되지 않았으므로 골격만 움직일 것입니다.
마지막으로 처음에 계층구조로 배치했던 각 스프라이트들을 해당 파츠 하위 계층으로 모두 옮겨주고, 빈 게임 오브젝트를 생성해서 Player 와 같은 이름으로 변경하고 Skeleton 객체를 하위에 추가합니다.
그러면 뼈대와 스프라이트가 같이 움직이는 모습을 볼 수 있습니다.


이제 모델링이 된 캐릭터에 애니메이션을 입히고 싶다면 Player 객체의 컴퍼넌트로 Animator를 추가하고,  Animation 창을 열어 새로운 애니메이션 파일을 생성합니다.
간단한 예로 30프레임을 선택하고 IK를 이리저리 움직여보며 원하는 동작을 맞춥니다.
그 다음 0프레임의 키프레임을 복사하여 60프레임에 붙여넣고 재생해보면 간단하게 반복되는 애니메이션을 볼 수 있습니다.

댓글 없음:

댓글 쓰기

댓글