어디까지 작성을 할 수 있게될지 모르겠지만
최종적으로는 MMD캐릭터로 포커스 온 유 풍의 VR 프로젝트를 만드는것을 목표로 작성을 하게 될 것 같다.
일단은 PC VR로 시작해서 모바일 대응...이라고 해봤자 이제 모바일 VR은 구글이 데이드림을 드랍하면서
기어VR밖에 남지 않았지만, 일단은 데이드림 기기도 있으니 데이드림 대응까지 프로젝트를 할까 ...싶은데
음성인식은 윈도우 API를 이용하여 구현할 생각이다.
모바일 버전은 Google Speech Api를 이용하면 될 거라 생각한다.
목표로는 정말 스텝바이 스텝으로 유니티에 대한 설명을 겸하면서 글을 작성하려 한다.
각설하고
MMD에 대해서는 여기까지 만약 검색해서 찾은 분들이라면 굳이 설명할 필요가 없으니..
일단 준비물부터 나열하도록 하자.
1. Unity 3.13f1버전
2. MMD4Mecanim
------ShapeKey를 넣기 위한 준비물은 이하-----
3. Blender 2.79버전
4. CATS애드온(블랜더)
5. Vrchat-Dance-Pad
6. CubeShader
유니티는 이 글을 작성하는 기준으로 2019.2.15f1 버전이 정식릴리즈가 되어있지만, 2018버전을 사용하자.
2번 준비물인 MMD4Mecanim 에셋을 2019.2.6버전으로 여러번 시도해보았으나 난항이어서 사용에 문제 없는 버전이었던 2018 버전을 권장한다.
MMD4Mecanim은 MMD 모델 확장자인 pmd, pmx를 fbx파일로 변환해주어 유니티에서 열어줄수 있는 한줄기 단비같은 에셋이다. 공식 홈페이지에서 다운 받을수 있다. (글 작성일 기준으로 20191015 버전이 올라와 있는거로 보아 꾸준히 기능이 업데이트 되고 있는 것 같다)
그냥 유니티상에서 MMD모델을 불러와 vmd 모션을 넣어서 움직이게 하는것에 만족한다면 1, 2번만 준비하면 된다.
3,4,5준비물은 vmd 모션에 들어있는 눈깜빡임과 표정들(shapeKey)을 가져오기 위함이다.
Blender는 무료 3D 툴이다. 배워야지 배워야지 하면서 맨날 미루고 있는데...
이 글 작성 기준으로 2.80버전이 나와있지만, 2.79버전으로 사용을 하고 있기에 환경을 맞추려면 2.79버전을 준비하는것을 추천한다.
CATS 블랜더 애드온은 블랜더에서 MMD 모델을 다루는데 사용하는 애드온이다.
Vrchat-Dance-Pad는 IK를 합쳐 shapekey들과 vmd파일에서 뽑아낸 .anim파일을 하나로 합쳐 표정이 들어간 .anim파일을 만들기 위해 사용한다.
VrChat은 nonVr환경하에서 피씨로 두세번인가 들어가보긴 했지만, 개발 피씨 사양이 그닥 좋지 않아서 잘 모른다.
유니티에서 맵을 만들어서 올리기도 하고 하는것 같던데... 언제고 한번 알아보긴 해야겠다.
CubeShader는 fbx로 뽑아낸 모델링에 애니메이션 캐릭터의 느낌을 부가해줄 쉐이더이다.
1. 유니티가 설치되어 있지 않다면 설치하자.
굳이 이 광활한 화면부터 시작하는 이유는 MMD 관련자료를 검색하다보면 유니티에 대한 기초 지식이 없는 분들이 열정을 가지고 MMD혹은 MME(맞나?) 등의 툴에서 조금 더 확장성을 가진 게임엔진 안에서 무언가 해보고 싶은데 막상 유니티(혹은 언리얼)를 깔아놓고 보니 막막함을 느끼는 가장 큰 장벽이 이 화면이라 생각되어 올려보았다.
프로젝트를 만든 폴더더 아래에 존재하는 Assets폴더에 이제 준비물을 하나씩 넣어주자.
다운받은 MMD4Mecanim 파일의 압축을 풀면 위와 같은 외계어 파일들이 있을 것이다.
저중에 MMD4Mecanim 유니티 패키지 파일을 유니티 프로젝트에 끌어다 놓으면 잠깐의 로딩 후에 임포트 메세지가 뜰 것이다.
Improt Unity Package 창의 좌하단 ALL을 클릭하고 우하단의 Import버튼을 클릭하면 된다.
백업을 했냐는 메세지가 뜨면 그대로 GoAhead 버튼을 눌러서 진행해주면 된다.
파일이 정상적으로 Import 되었다면 프로젝트 창의 Assets 폴더부 섹션에 MMD4Mecanim폴더가 생겼을 것이다.
사실상 이것만 있으면 MMD 모델을 유니티에 띄우는건 다 끝났다고 보면 된다.
MMD 모델과 VMD 파일을 구하는 방법은 이곳에서는 다루지 않도록 하겠다.
인터넷을 서핑하다 구한 붕괴3의 캐릭터를 모델링 파일로 불러오겠다.
사용한 vmd 모션파일은 https://www.youtube.com/watch?v=vR-duGyx0F0 에서 구한 파일이다.
pmx 파일이 있는 모델 폴더를 열어보면 아래와 같은 화면을 볼 수 있을것이다.
pmx 파일 옆에 보면 유니티 로고가 그려져 있는 파일이 보일것이다.
해당 파일은 pmx파일을 MMD4Mecanim에셋이 읽어들여 fbx 모델로 변환해주기 위한 파일이다.
파일을 클릭하면 모델마다 상이하겠지만, 아래와 같은 화면이 나올것이다.
ReadMe 파일을 읽어온 것인데 사용금지 조항등에 대해 적혀있고, 아래로 내려보면
동의조항에 체크를 다 해주면 Agree 버튼이 활성화 될 것이다.
Agree버튼을 눌러주면 새로운 Inspector 창이 열리는데 아래와 같을것이다.
PMX/PMD 부분에는 fbx로 변환해줄 모델의 파일이 선택되어 있고, 그 아래의 VMD는 모션파일을 끌어다가 놓아주면 된다. 이때, 모션파일을 찾기 위해서 프로젝트 창을 움직이게 되면 inspector 창이 바뀌어 넣어주기 힘드니 우상단의 자물쇠 버튼을 한번 클릭해 락을 걸어주고 파일을 끌어다 놓아주면 편하다.
vmd 모션파일을 넣어주었다면 Process 버튼을 눌러주면 된다.
검은 커멘드라인 창이 뜨고 무언가가 자동으로 마구 변환되는걸 볼 수 있을것이다.
아마 본 정보와 3D 오브젝트 메터리얼 정보들, 모델정보를 fbx로 변환해주는 것이 아닐까 싶다.
변환에는 보통 2~3분 정도의 시간이 걸린다. 이미지 설명에도 넣었지만 모델의 크기에 따라 그 이상이 걸릴수도 있으니 인내심을 가지고 기다리면 된다.
혹시나 커멘드라인창에 Not Found Morph 등의 메세지가 뜨더라도 그냥 기다리면 알아서 변환이 되고 창이 꺼지니 기다리도록 하자.
모델 변환이 완료가 되었으면 모델이 있던 폴더로 들어가보자.
위의 이미지와 같이 모델 fbx 파일이 생겨있는것을 확인할 수 있다.
우하단의 미리보기 재생버튼을 누르면 아래의 동영상과 같은 창을 볼수 있을 것이다.
이제 간단한 작업 몇가지만 더 하면 유니티에서 모델이 춤을 추는것을 볼 수 있을것이다.
fbx 모델 Inspector창에서 Rig 버튼을 클릭하면 보이는 Animation Type을 Generic에서 Humanoid로 변경해준다.
애니메이션 타입에 대해서는 나중에 설명을 따로 글을 올릴 기회가 있을것이니 그때 자세하게 올리도록 하겠다.
Apply버튼을 누른 후에 Animation 버튼을 클릭하여 Animation 창으로 옮겨가자.
무언가 복잡한 창이 나왔는데 우리가 건드릴 것은 아래의 Root Transform Rotation, Root Transform Position(x,y,z)부분이다. 휴머노이드 타입으로 바뀐 모델과 애니메이션의 root를 맞추어주는 작업인데, 아래의 이미지대로 되면 된다.
Root Transform Rotation의 Bake Inyto pose의 체크트리거를 체크해주고,
그 아래의 Root Transform Position(Y)의 Bake Into Pose의 체크 트리거를 체크해준다.
그 아래의 Root Transform Position(XZ)의 Bake Into Pose의 체크 트리거 역시 체크해주고, 그 아래의
Based Upon(at Start)를 Center of Mass 에서 Original로 바꾸어준다.
다 바꾸었으면 Apply를 눌러주면 된다.
추가로, 위의 이미지의 상단에 DonutHole_main이라고 해당 애니메이션의 이름을 바꾸어주었다.
텍스트창에 입력하고 엔터키를 누르면 바뀐다.
잠시간 기다리면 변환이 다 완료가 되어있는 것을 확인할 수 있다.
프로젝트 파일에서 fbx 모델의 삼각형 버튼을 클릭하면 구성요소를 볼 수 있는데, 이름이 바뀐 애니메이션 파일을 확인할수 있고, root적용이 완료된 애니메이션 파일을 클릭한 후 CTRL + D 를 눌러 애니메이션을 복제해 애니메이션만 모델의 밖으로 빼내어준다.
이제 기본 준비는 다 되었다.
만들어진 모델을 하이어라키 창으로 끌어다 놓아 춤을 추도록 해보자.
모델의 Inspector창을 보면 Animator 컴포넌트의 Controller가 비어있는것을 볼수 있다.
애니메이터 컨트롤러를 만들어 애니메이션 클립을 넣어주고 애니메이션을 재생할수 있도록 해주자.
Assets폴더 아래에 Animator폴더와 ExportAnimation 폴더를 만들어주고, Animator폴더 아래에서 오른클릭을 하여 나타나는 메뉴중, Animation Controller를 추가해주자.
ExprotAnimation 폴더에 아까 Ctrl+D를 눌러 복제한 애니메이션 파일을 옮긴후, 위의 이미지의 Dance 애니메이터 컨트롤러를 더블클릭하여 Animator 창을 열어준다.
ExprotAnimation 폴더의 애니메이션 파일을 애니메이터 창에 끌어놓아주어 프로젝트 재생시 애니메이션이 자동으로 실행되게 해준다.
이제 Animator 폴더 아래에 있는 Dance 애니메이터 컨트롤러를 하이어라키 상에 존재하는 모델의 Animator의 Controller에 넣어준다.
적당한 위치에 카메라와 모델을 맞추어주고 프로젝트 재생버튼을 클릭하면 춤을 추는 MMD 모델을 볼수 있다.
현재 프로젝트에서는 카메라의 Transform과 모델의 Transform을 아래의 이미지와 같이 맞추었다.
이제 재생버튼을 클릭하면 아래와 같은 영상을 얻을 수 있다.
원하는 대로 모션이 잘 들어가서 움직이는 캐릭터를 볼 수 있다.
휴머노이드로 타입이 변경되었기에, mixamo같은 사이트에서 애니메이션을 내려받아 다양한 애니메이션을 해당 모델에 넣어 재생할 수도 있기에 다양성을 가질 수 있다.
영상 중간에 카메라를 수동으로 이동한 부분에서 캐릭터의 얼굴을 보면, 춤은 추고있는데 표정이 변하지 않고 무표정으로 춤을 추고 있어 무언가 위화감을 느낀 사람도 몇 있을 것이다.
이는 ShapeKey가 해당 애니메이션 파일에 들어가지 않아서 그런것인데, 이를 해결하기 위해 3,4,5,6번 준비물이 필요한 것이다.
이에 대해서는 다음 게시물에서 다루도록 하겠다.
캐릭터를 fbx 모델로 만들고, 휴머노이드로 변경한후, 믹사모 혹은 유니티 애니메이션 에셋들을 넣어서 재생하는 선이라면 이정도만 해도 충분히 mmd모델을 활용하는데 문제가 없을것이다.
풀트래킹 및 IK적용. (0) | 2020.03.08 |
---|---|
설 연휴동안 구현한것. (0) | 2020.01.27 |
요즘 하고 있는것 (0) | 2020.01.07 |
Unity MMD VR 프로젝트 - 2 (1) | 2019.12.08 |
Unity, Hologram (0) | 2019.05.07 |