Part5-2. Import 시킨 MMD모션을 Mecanim Animation을 이용하여 구현하기.
저처럼 MMD캐릭터뿐만 아니라 춤모션도 함께 Import하여 추출하신 분들은 Project탭에서 해당 MMD캐릭터의 폴더에 보시면 캐릭터파일이 있을 것입니다.
캐릭터파일에 보시면 오른쪽 정중앙에 화살표모양을 클릭하여 주시기 바랍니다.
화살표 모양을 눌러보시면 해당 캐릭터 파일이 지니고 있는 파일들(프리팹,애니메이션, 아바타 등등)이 나열되는데 그 중에서도 함께 Import하여 추출하였던 춤모션 파일을 클릭하여 주신 후 Ctrl + D로 해당 애니메이션 파일의 복사본을 생성(그림 30 - 2)합니다.
해당 애니메이션의 복사본을 확인하셨다면 01. Animation 폴더로 드래그 앤 드랍으로 이동시켜주도록 하겠습니다.
이동시킨 애니메이션 파일의 이름을 Girls_Audio로 변경하여주시기 바랍니다.
(해당 애니메이션 파일명에 _Audio를 붙힌 이유는 해당 애니메이션이 구동될 때 Girls노래가 나오도록 나중에 설정해줄 것이기 때문입니다.)
애니메이션 파일의 이름을 변경시켜 주신 후 Animator탭에 드래그 앤 드랍으로 추가 시켜줍니다.
그러면 애니메이션 파일명과 동일한 노드가 Animator탭에 생성되는 것을 확인하실 수 있음과 동시에 Inspector탭에서는 Motion부분이 None이 아닌 해당 애니메이션 파일이 적용되어져 있는 것을 확인 하실 수 있을 것입니다.
이렇게 새롭게 추가한 애니메이션 노드와 기존 애니메이션 노드와 연결을 해주도록 하겠습니다
먼저 기존 애니메이션 노드인 Idle노드에서 우클릭하여 Make Transition을 클릭하여 주면,
Idle노드를 기준으로 하얀색 연결선이 활성화 되실 것입니다.
이렇게 활성화된 Transition을 방금 추가한 Girls_Audio 애니메이션 노드와 연결 시켜주시면 됩니다.
두 개의 노드를 연결하였다고 바로 사용할 수 있는 것이 아니기 때문에 간단한 설정과 스크립트를 작성하여 주도록 하겠습니다.
Animator탭에서 보시면 Parameters라는 항목이 보이실 것인데 해당 항목을 클릭하여 줍니다.
Parameters를 클릭하면 + 모양이 보이실 것인데 +클릭하면 총 4개의 변수형(Float, Int, Bool, Trigger)이 보이실 것입니다.
이 중에서도 Bool형을 클릭하여 해당 변수형의 변수명을 Girls로 변경하여 주시기 바랍니다.
(Girls 모션이 아닌 다른 춤모션을 사용하셨다면 해당 춤모션의 이름으로 변경하시는 것을 추천합니다.)
그림 30 - 9와 같이 하셨다면 해당 이름의 변수가 생성된 것을 확인할 수 있을 것입니다.
Idle 노드와 Girls_Audio노드를 연결하고 있는 Transition을 클릭하여 줍니다.
Transition을 클릭하시면 Inspector탭에 해당 Transition의 설정 항목들이 활성화 되는데 이 중에서도 Conditions 항목에서 + 모양을 클릭해주시기 바랍니다.
그럼 조금전에 생성한 Girls이름을 가진 Bool형 변수가 true로 설정되어 적용되어지는 것을 확인하실 수 있을 것입니다.
지금까지 Animator에서의 설정을 끝낸 후 유니티에서 Play를 눌러보아도 MMD캐릭터는 여전히 Idle 애니메이션만 구동하고 있는 것을 확인하실 수 있을 것입니다.
그 이유는 아직 노드간 연결하여 주고 있는 Transition에 적용된 Parameter형 Bool변수 값을 변경해주지 못했기 때문인데 이것을 스크립트로 컨트롤 해주도록 하겠습니다.
먼저 Project 탭의 Assets에서 우클릭하여
Create -> C# Script를 선택하여 새로운 C# 스크립트를 생성해주도록 하겠습니다.
새롭게 생성된 스크립트의 이름을 DanceController로 변경하여 주신 후 더블클릭하여 줍니다.
우리는 시작 전에 유니티의 스크립트를 비쥬얼 스튜디오에서 편집할 수 있도록 설정하여 주었기 때문에, 비쥬얼 스튜디오로 해당 스크립트가 열릴 것 입니다.
비쥬얼 스튜디오로 열린 스크립트를 그림 31 - 3과 같이 작성하여 주시기 바랍니다.
코드 작성이 다 되신 다음에 Ctrl + S로 스크립트를 저장시켜 주신 후 유니티 창으로 돌아와
DanceController스크립트를 Hierarchy탭에 있는 MMD캐릭터 오브젝트로 드래그 앤 드랍으로 추가시켜 주시기 바랍니다.
이렇게 해당 오브젝트로 드래그 앤 드랍한 스크립트는 그림 31-5와 같이 Inspector 탭에 해당 오브젝트에 스크립트가 추가된 것을 확인하실 수 있을 것입니다.
그림 31-6까지 하신 다음에 Play버튼을 눌러보시면 Girls애니메이션이 구동될 때가 있고 안될 때가 있는 것을 확인하실 수 있을 것입니다.
그 이유를 설명드리도록 하겠습니다.
먼저 Animator 탭에서 Idle노드와 Girls_Audio노드를 연결하고 있는 Transition을 클릭하시면, Inspector탭에 Has Exit Time 항목에 체크가 되어 있는 것을 보실 수 있을 것입니다.
Has Exit Time이란 해당 애니메이션을 1번 구동 시킨 뒤 몇 초뒤에 재구동 시킬 것인지를 설정하여 주는 항목입니다.
또는 스크립트에 의해 다른 노드의 애니메이션을 구동시킬 때 해당 애니메이션을 1번 완료한 후 몇 초뒤에 구동 시킬 것인지에 대한 설정이기도 합니다.
그렇기 때문에 그림 31-5까지 하신 다음에 Play버튼을 눌러보시면 Idle애니메이션이 종료되는 시점에 맞춰 1번 키를 눌러야만 Girls 애니메이션이 구동되는 것을 보실 수 있을 것입니다.
하지만 우리가 원하는 것은 언제 누르든 Girls 애니메이션을 구동시켜 주고 싶은 것이기 때문에 다음 그림 31-7과 같이 Has Exit Time의 체크를 해제하여 주시기 바랍니다.
자 그럼 이번에는 과연 우리가 원하는 때에 1번키를 눌렀을 때 Idle 애니메이션에서 Girls애니메이션으로 변경되어 제대로 작동되어지는 확인하여 보도록 하겠습니다.
유니티에서 Play버튼을 누르면 Idle애니메이션이 제대로 구동되는 것을 다시 한번 확인 가능하실 것입니다.
과연 이번에는 Idle 애니메이션 중 아무때나 키보드의 1번키를 눌렀을 때 Girls 애니메이션이 구동되는지 확인 해보도록 할까요?
1번키를 누르시면 그림 31-9과 같이 Idle애니메이션에서 Girls애니메이션으로 노드가 바로 변경되어 Game뷰에서도 Girls애니메이션이 구동되는 것을 확인하실 수 있을 것입니다.
여기서 제 블로그의 RPG제작노트 부분을 보셨던 분이라면 MMD 캐릭터의 머리카락이 지금막 샴푸한 것처럼 찰랑거리는 것을 보셨을 건데요.
하지만 지금까지 한 작업에서 유니티에서 아무리 Play버튼을 눌러보아도 머리카락이 플라스틱마냥 딱딱해보이면서 전혀 변화가 없는 것을 보실 수 있을 겁니다.
찰랑거리는 머리카락의 움직임을 위하여 간단하게 설정 변경법을 알려드리고 넘어가겠습니다.
Hierarchy탭에서 MMD캐릭터 오브젝트를 클릭하시면, Inspector탭에서 MMD4 Mecanim Model이라는 스크립트가 보이실 것입니다.
해당 스크립트에서 보시면 Physics항목을 클릭하여 보시면 Physics Engine 항목이 None으로 되어 있는데요.
Physics Engine항목을 클릭하여 None이 아닌 Bullet Physics를 클릭하여 변경하여 주시면 되겠습니다.
이렇게 설정을 변경하여 주셨다면 MMD캐릭터의 머리카락이 다음 그림 2장(그림 31-12, 31-13)과 찰랑거리게 바뀐 것을 확인하실 수 있을 겁니다.
하지만 현재의 스크립트는 한도 끝도 없이 Girls 애니메이션이 구동되어지게 되기 때문에
스크립트를 변경하여 원하는 키를 눌렀을 때 Girls애니메이션 노드에서 다시 Idle애니메이션 노드로 돌아가 Idle애니메이션을 구동시켜주도록 변경해보도록 하겠습니다.
DanceController스크립트를 다시 열어 그림 32-1과 같이 코드를 변경하여 주시기 바랍니다.
코드를 변경하여 준 후 Ctrl + S를 눌러 항상 저장해주셔야 변경한 코드가 스크립트에 적용되므로 항상 코드를 변경하셨다면 저장해주시는 습관을 가지시는 것을 추천합니다.
코드 변경 후 저장까지 하셨다면 Animator 탭에서 Girls_Audio노드에서 우클릭을 하여
Make Transition을 클릭하여 줍니다.
Idle노드와 Girls_Audio노드를 연결했던 방식대로 이번에는 Girls_Audio노드와 Exit노드를 연결하여 줍니다.
Girls_Audio노드와 Exit노드를 연결하였다면, 두 개의 노드를 연결하고 있는 Transition을 눌러 Inspector탭에서 Conditions 항목에서 +를 눌러 Girls 변수를 추가하여 주고, 이번에는 true가 아닌 false로 변경하여 줍니다.
Has Exit Time의 체크도 해제하여 주시기 바랍니다.
지금까지 잘 따라오셨다면 Play버튼을 눌러 1키와 W키를 번갈아 눌러보면 Animator탭에서 Idle애니메이션 노드와 Girls_Audio애니메이션 노드가 변경되는 것이 확인될 것이며,
Game 뷰에서 또한 각 노드의 애니메이션이 캐릭터에 적용되어 구동되어지는 것을 볼 수 있을 것입니다.
이렇게 금일 튜토리얼인 【Part5-2. Import 시킨 MMD모션을 Mecanim Animation을 이용하여 구현하기.】가 끝났습니다.
'지식창고 > Unity엔진' 카테고리의 다른 글
Unity5 Mecanim Animation Tutorial - Part7 (0) | 2019.09.22 |
---|---|
Unity5 Mecanim Animation Tutorial - Part6 (0) | 2019.08.16 |
Unity5 Mecanim Animation Tutorial - Part5-1 (0) | 2019.08.16 |
Unity5 Mecanim Animation Tutorial - Part4 (0) | 2019.08.16 |
Unity5 Mecanim Animation Tutorial - Part3 (0) | 2019.08.16 |