파파비의 블로그

[유니티, Unity] Mixamo로 캐릭터 애니메이션 넣기 본문

개발/unity

[유니티, Unity] Mixamo로 캐릭터 애니메이션 넣기

N. Dave 2022. 2. 14. 15:39
반응형

## 오랜만에 다시 읽어보니, 설명이 부족해보여 내용을 추가하였습니다.

 

 

(1) 3D 아바타 모델 준비하기

믹사모를 통해 모델에 애니메이션을 넣기 위해선 아바타(인간모양) 3D 모델이 필요합니다.

그리하여 블렌더로 간단한 캐릭터를 만들었습니다. 모델링만 진행했고, 리깅은 진행하지 않았습니다.

애니메이션을 넣기 위해선 리깅이 꼭 필요하지만, 블렌더에서 할 필요가 없습니다. 

블렌더에서도 가능하지만, 믹사모에서 하는 것이 훨씬 쉽습니다.

 

참고: 리깅(Rigging)

리깅이라는 것은 3d 아바타에 관절 위치를 셋팅하는 것입니다. 단순 3d 모델이 아닌, 인간 모형의 아바타에게 애니메이션 시키려면

3d 아바타 내에 설정되어 있는 관절(Rig)들을 움직여서 애니메이션을 만듭니다.

따라서 3d 아바타의 애니메이션을 만들려면, 사전에 해당 3d 아바타에 관절(Rig)들을 만들어줘야 합니다.

이 작업을 Rigging이라고 합니다.

 

(출처: learn.unity.com/tutorial)

리깅 작업은 유니티에서도 가능한데, 3d 모델 위에 관절들을 셋팅해주는 모습입니다. 위 그림을 보면 관절과 함께 "뼈"도 존재하는데, 리깅의 핵심은 "관절"이고, "뼈"는 관절들에 기반해서 추정됐다고 보시면 됩니다. 믹사모에서는 Rigging시 관절들만 나옵니다.

 

아무튼, 이제 3d 모델을 다 만들었다면, 블렌더에서 'fbx' 형식으로 해당 모델을 export 해줍니다.

블렌더 좌측 상단에 File > Export > .FBX 선택해주시면 됩니다.

 

(2) Mixamo(믹사모)에 3d 모델 올리기

3d 모델 파일이 준비가 되었다면, 이제 애니메이션을 만들기 위해 믹사모에 올려봅시다.

그 다음 mixamo로 들어가서, 캐릭터를 업로드 해줍니다. 업로드 하는 방식은 어렵지 않습니다.

먼저 로그인부터 합니다. 그래야 서비스를 이용할 수 있습니다.

 

1. 로그인 후 믹사모 첫화면은 아래와 같습니다. 우측 상단에 UPLOAD CHARACTER를 눌러줍니다.

 

 

2.누르면 이 화면이 뜨게 되는데, FBX로 export 할 경우 파일을, 그대로 drag & drop 해주시면 됩니다.

 

 

3. 이때 리깅이 안되어 있는 모델이면 auto-rigger가 실행됩니다. 

좌측 하단의 화살표들을 눌러보면 3d 모델을 다른 뷰에서 볼 수 있습니다. 2번째 화살을 한번만 눌러줘 아래 처럼 정면을 바라보도록 합니다. 믹사모가 자동 리깅을 해주긴 하지만, 저희가 어쨌든 미세하게 조정작업을 해주어야합니다. 정면을 바라보게 하면 미세조정이 쉽습니다.

그리고 Next를 눌러줍니다.

 

 

4. 관절 위치를 셋팅해줍니다.

관절 위치를 셋팅해주는 작업을 합니다. 위에서도 언급했지만, 애니메이션은 아바타에 부착된 저 관절들을 움직임으로써 구현됩니다. 

(애니메이션 data들은 기본적으로 저 관절들의 움직임이 기록되어 있는 것입니다. 그래서 아바타가 바뀌어도 동일한 애니메이션 파일을 적용하면 동일한 행위를 하게 할 수 있습니다)

 

동그란 원들이 관절들인데, 해당 부분을 drag&drop으로 적절한 곳에 위치시켜줍니다.

CHIN, WRISTS, ELBOWS.. 어딘지 아시죠? 참고로 GROIN은 고관절입니다.

좌측 하단의 back을 눌러 돌아간 뒤, 3d 모델을 다각도에서 보고 관절의 위치를 정밀하게 셋팅합니다.

관절 셋팅이 완료되면 우측 하단의 Next 버튼을 누릅니다.

 

5.  나머지 디테일한 작업은 Mixamo가 해줍니다. 기다립니다. 결과물 확인 후 마음에 들지 않으면 관절들의 위치를 다시 셋팅해주어 리깅 작업을 마무리합니다.

모델이 빙글빙글 돌면서, Mixamo가 위치된 관절들을 기반으로 나머지 필요한 Rigging 작업을 진행해줍니다.

이게 정말 편리한 기능입니다. 

 

리깅이 완성되면 이렇게 뜨고, 3D 모델은 움직이기 시작합니다. 움직임이 자연스럽지 않다면,

BACK을 눌러 관절들의 위치를 다시 셋팅하면 됩니다.

 

리깅이 잘 되어 움직임이 자연스럽다면, NEXT를 눌러줍니다. 그럼 아래 그림처럼 T자 포즈를 취한 우리가 만든 모델이 서 있습니다. Mixomo에 3d 모델이 성공적으로 잘 올라간겁니다. 이제 본격적으로 원하는 애니메이션을 선택할 차례입니다.

 

 

(3) Mixamo(믹사모)에서 원하는 애니메이션 선택/다운로드하기

그 뒤 원하는 좌측에 쭉 리스트업 되어 있는 애니메이션들을 하나하나 눌러보면서 원하는 애니메이션을 선택합니다.

저는 Capoeira (카포에라) 동작을 선택했습니다. 우측에는 실제로 카포에라 동작을 하는 모델을 볼 수 있습니다.

믹사모에는 굉장히 많은 애니메이션들이 있기 때문에 search 기능들을 잘 찾아보시면 훌륭한 모델들이 상당히 많습니다.

 

원하는 애니메이션을 선택했다면, Download를 누릅니다.

예시를 위해 저는 뛰는 애니메이션을 선택하였습니다. Running.

 

Format는 FBX로 해줍니다. 그래야 unity에서 활용할 수 있습니다.

셋팅은 일단 애니메이션과 모델을 함께 활용할 것이라면 with skin으로 셋팅합니다.
나머지 FPS, Keyframe은 디테일한 부분이라, 알아보시고 추가로 셋팅해주시면 되는데, 저처럼 30, none으로 셋팅해주시면 문제없습니다.

 

참고 with/without skin

다운로드하게 되면, 크게 3d 모델과 애니메이션으로 구성됩니다.

이때, 아바타를 함께 넣고 싶으면 with skin으로 선택하면 됩니다.

아바타를 제외하고 애니메이션만 받고 싶으면 without skin으로 셋팅해줍니다.

 

Injured Run(1)은 with skin으로 다운받은 것,

Injured Run은 without으로 다운받은 것임

 

 

 

(4) 유니티에서 만들어진 Unity로 끌고 와서 셋팅하기 

다운로드를 하게 되면 fbx 파일이 생깁니다. 그 파일을 유니티에서 import합니다.

초기 data 셋팅을 해야 unity에서 인지하고 애니메이션을 활용할 수 있습니다.

그리하여

 

1. import한 3d 모델의 Inspector 창에 가서 Rig를 눌러줍니다.

2. Animation Type을 'Humanoid'로 설정해주고,

3. Avatar Definition은 Create From This Model 로 셋팅해줍니다. 
- Avatar definition을 저렇게 셋팅하면 믹사모에서 리깅된 data를 기준으로 애니메이션이 적용됩니다.

 

하나의 모델은 여러 개의 애니메이션을 사용할겁니다. 그렇다면 여러번 애니메이션을 다운받고 unity 내로 import 해야 하는데,

2번째, 3번째 등 이후에 import 하는 fbx파일들은 rigging에 있어서 이미 unity에서 셋팅된 모델을 기준으로 하면 좋습니다. 

Avatar가 달라지게 되면 rigging된 data도 달라서, 자칫 애니메이션에 에러가 날 수 있기 때문입니다.

 

그래서 2번째부터는, 셋팅을 Copy from Other Avatar 로 해주면 됩니다. (아래 이미지 참고)

그러면 어떤 아바타를 기준으로할거냐는 Source 칸에, 맨 처음에 import한 avatar로 셋팅을 해줍니다.

아래 예시의 경우 RunningAvatar로 셋팅한 모습을 알 수 있습니다.

이후, Anmiation Tab으로 가서 loop 등의 기타 설정을 하고 마무리해주고 최종적으로 하단에 있는 apply를 누릅니다.

 

 

셋팅이 성공적으로 잘 했는지는, import 했던 fbx파일을 scene에 올려보면 알 수 있습니다.

자동으로 animator 컴포넌트가 등록되어 있을 것입니다. 아래 그림 처럼 나오면 성공입니다.

여기서 부터는 controller를 만들어서 넣어주시고 조건에 따라 어떤 애니메이션을 활용할지 컨트롤러 셋팅을 해주면 됩니다.

 

 

 

(5) 유니티에서 import한 애니메이션 사용 예시

해당 부분은 사실 보여드릴 필요는 없는데, 만약 애매한 초보분들이라면 도움 될겁니다.

그런데 만약 전혀 이해가 안간다면, unity 애니메이션 부분을 따로 학습하셔야 합니다.

그래서 내용이 조금 대충입니다. 애니메이션에 대해서도 다루기를 원하시면 댓글 남겨주시면 글 한번 써보겠습니다.

 

아무튼, 

 

1. 맨처음 모델+애니메이션을 같이 다운받은 파일이 FastRun이고, 애니메이션만 다운받은 파일은 InjuredRun입니다.

(withskin & without skin)
2. 애니메이션컨트롤러를 함께 만들어두었습니다. 

3. AnimationTest Script는 예시에서 활용하지는 않겠지만, 다양한 애니메이션 활용을 위해선 필요할겁니다.

 

4. FastRun 모델을 Scene에 넣고, Inspector 내, Animation Controller 칸에 만든 animation controller를 할당합니다.

- Scene에 할당했더니 모델도 같이 있는 것을 알 수 있습니다. 우리는 이 모델을 계속 사용할겁니다.

- without skin으로 다운받은 파일의 경우 3d 모델이 나타나지 않습니다.

5. Animation Controller에 시작시 애니메이션을 다양하게 셋팅할 수 있습니다.

- 여기서는 3d 모델과 같이 딸려온 Run 애니메이션 말고, InjuredRun을 시작  애니메이션으로 셋팅해봤습니다.

- 실제로 확인해보면, 시작하자마자 애니메이션컨트롤러에 의해 InjuredRun을 시연합니다.

- 나중에는 script를 통해 여러 애니메이션들을 사용하도록 할 수 있습니다.

참고로 애니메이터 위에 올리는 애니메이션은 import한 fbx 파일 하위에 있는 animation clip파일입니다.

(초보분들 만약 이게 이해가 잘 안가시면 unity 애니메이션 부분 따로 학습하셔야합니다)

 

반응형
Comments