1. MMD 유니티에서 사용해 봤다.
~튜토리얼~
정문철(flashscope)
mail@limecolor.com
2. 이 슬라이드는~
!
처음 사용해 보면서 삽질한 내용을 두서없이 서술합니다.
삽질하면서 잘못된 내용, 불필요한 내용, 잡담이 섞여 있을 수 있습니다.
!
전 mmd를 직접 만들어 본적은 없습니다.
mmd의 구조나 원리에 대해는 잘 모릅니다.
!
플러그인 제작자의 튜토리얼이 훌륭하여 이건 번역문에 가깝습니다.
!
슬라이드쉐어 페이지보다 다운받아 보시길 권장합니다.
3. 이 슬라이드에서 사용되는 3d모델은
피아프로 캐릭터 라이센스(PCL)에 따라
크립튼 퓨쳐 미디어 주식회사의 캐릭터 ‘하츠네 미쿠’를
사용하였습니다.
!
http://piapro.jp/license/pcl/summary
4. MMD모델 데이터나 모션데이터 사용에 대하여
!
모델 데이터나 모션데이터에 동부되어있는 설명서등에 기록되어 있는
이용규약을 꼭 한번 보고 준수해 주세요
!
공개, 배포를 목적으로한 게임이나 콘텐츠에서의 이용은 이용규약에
명시적으로 허가를 하고 있는 경우를 제외하고 작품내에서의 사용이나
데이터를 포함한 상태에서의 배포를 해도 좋으나 반드시 모델이나
모션 제작자의 확인을 부탁드립니다.
※많은 모델이나 모션 데이터는 동영상이나 정지 화상에서의 사용을
전제로 하고 있어 그 이외에는 사용을 전제로 하고 있지 않습니다.
!
크립튼 퓨쳐 메디어 주식회사가 권리를 갖고 있는 캐릭터를 이용해
제작 활동을 할때에는 반드시 가이드라인을 봐주시길 바랍니다.
!
피아프로 캐릭터 이용 가이드라인
http://piapro.jp/license/character_guideline
7. 연인과 최고의 크리스마스를 보내는 방법
간단! 크리스마스까지 좋아하는 여자애와 사이좋게 되는 방법
갑작스럽디만 여자와 친해지는데는 여러 장애물이 있습니다.
-여자와 만나지도 못하고, 대화도 못하고 접하는 방법도 모르고…
-쳐다보지고 못하고 눈도 못마추고 미움받을까 걱정이 된다.
-유니티와 어셋 스토어를 잘쓰지 못하면 여자애를 꼬실수 없을것 같다… (응??)
2시간 정해진 순서대로 따라하면 유니티를 최강의
연애 툴로 만들수 있습니다.
14. http://www.geocities.jp/higuchuu4/
MikuMikuDance(미쿠미쿠댄스)라는 이름의 이 프로그램은
Vocaloid의 하츠네 미쿠의 3D 모델을 조작하여
쉽고 간편하게 3D영상을 만들수가 있습니다.
(물론 미쿠가 아닌 다른 모델도 사용 가능)
!
모델링 기능은 없지만 모델을 불러와 모션을 넣고
쉐이더, 이펙트등의 기능을 지원하며
avi나 정지 이미지로 출력이 가능합니다.
(그리고 실행파일이 1mb정도의 가벼움!)
!
특히 애니메이션 블랜딩을 지원하고, 물리엔진(Bullet),
사운드 동기화도 지원해서 많은 2차제작 뮤직비디오가 많습니다.
!
미쿠나 mmd문화에 대해서는 앞의 ndc자료에서…
15. mmd 주요 확장자
모델 파일 : .pmd, .pmx (포저파일 아님)(PolygonModelData, eXtend)
모션 파일 : .vmd (Vocalod Motion Data)
포즈 데이터 : .vpd (Vocalod Pose Data)
프로젝트 파일 : .mmd .pmm
사운드 : .wav
립싱크 : .vsq (보컬로이드 데이터)
키넥트 : .oni (OpenNI)
!
등등…
16. mmd 주요 확장자
모델 파일 : .pmd, .pmx (포저파일 아님)(PolygonModelData, eXtend)
모션 파일 : .vmd (Vocalod Motion Data)
포즈 데이터 : .vpd (Vocalod Pose Data)
프로젝트 파일 : .mmd .pmm
사운드 : .wav
립싱크 : .vsq (보컬로이드 데이터)
키넥트 : .oni (OpenNI)
!
등등…
주로 볼 확장자
20. 일본에서 배포되는 많은 mmd관련 파일들이
일본어 파일명을 사용하고 있어 압축풀기가 오류가 나는 경우가 있습니다.
!
이런 경우 아래의 압축 프로그램을 추천합니다.
!
zipj(간단 압축 풀기)
https://kippler.com/win/zipj/
!
반디집(발전판)
http://www.bandisoft.co.kr/bandizip/
21. 주로 사용되는 플러그인은 두가지
!
MikuMikuDance for Unity
http://mmd-for-unity-proj.github.io/mmd-for-unity/
!
MMD4Mecanim
http://stereoarts.jp/
22. 주로 사용되는 플러그인은 두가지
!
MikuMikuDance for Unity
http://mmd-for-unity-proj.github.io/mmd-for-unity/
!
MMD4Mecanim
http://stereoarts.jp/
먼저
테스트 해봅니다.
41. 물리처리에 문제가 있는것 같은데
어디를 손대야 될지 모르겠다…
!
Legacy Animation이 아니라 Generic으로 변환해도 마찬가지…
!
또 저 문제가
간헐적으로 일어난다!! ← 가장 큰 문제
42. 깃허브를 보니 혼자서 열심히 하시는 ㅠㅠ
종종 에러 메시지가 발생하는데 처리에는 시간이 걸릴지도…
43. 그래서 이번에는 MMD4Mecanim을 테스트해 보기로…
!
MikuMikuDance for Unity
http://mmd-for-unity-proj.github.io/mmd-for-unity/
!
MMD4Mecanim
http://stereoarts.jp/
대충 주석 처리하고 넘긴것도 마음에 걸리고…
44. 굉장히 단순한 홈페이지!
알고보니 예전 오큘러스관련 자료 찾을때 신세를 진곳! 감사합니다!
http://stereoarts.jp/
45. 패키지 형태의 파일과 친절한 메뉴얼들!!
(뒷 슬라이드의 설명은 저 튜토리얼을 기반으로 제작되었습니다.)
62. 보충
MMD4Mecanim의 큰 동작 흐름
MMD데이터
PMX2FBX
MMD4Mecanim
Mecanim 대응 모델
-PMX/PMD + VMD를 FBX로 변환해서 Unity에서 불러올 수 있도록 함
-Mecanim에 적합하도록 본 조정
-Bullet Physics에 의한 머리카락, 스커트의 동작을 재현(모션에 미리 적용)
-Material과 Shader의 초기 설정
-표정 모프(변화)를 위한 보정 스크립트
-플러그인판 Bullet Physics에 의한 리얼 타임에서의 물리동작의 재현
-AnimationType : Generic이나 Humanoid로 초기화
Generic : VMD의 재현성 중시, 단 Humanoid모션은 재생 못함
Humanoid : VMD외에도 Mecanim(Humanoid) 모션 대응
63. 보충
Rig > AnimationType에 대하여
Animation Type은 아래의 두개에서 고를 수 있습니다. 용도에 맞게 선택해주세요.
Generic :
VMD의 재생성 중시, 단 제한 사항이 있습니다.
-Humanoid모션을 사용 못합니다. (변환시 같이 변환한VMD만 재생가능)
-시선이동(LookAt), 인체IK등 Humanoid 특유의 인터렉티브한 기능을 사용 못합니다.
VMD모션을 단순히 재생기키고 싶을때 (그냥 춤추기 등)에는 이쪽 설정을 추천합니다.
!
Humanoid:
Mecanim모션도 재생이 가능합니다. 또, 시선 이동(LookAt)이나 인체IK등
Humanoid 특유의 기능이 사용 가능합니다.
단 VMD의 재현성은 떨어집니다. (모션에 따라 약간의 어긋남이나 간접 동작이 무너집니다.
이 옵션을 사용할 경우 플러그인판 Bullet Physics의 사용을 추천합니다.
64. 보충
모델의 스케일 변경
모델의 스케일을 조정하고 싶을 때에는 PMX2FBX의 변환 설정을 이용해주세요.
단 0.01 이하로 낮추면 본의 위치 관계가 무너집니다.
유니티에서도 스케일을 조정할 수 있으나 1이 아니면
CPU의 처리 부담이 올라갑니다.
(자세하게는 Bake Scaled Mesh Physx Collision Data 검색)
92. MMD4MecanimModel의 Physics Engine항목을 None에서 Bullet Physics로 바꾸면
모델에 박혀있던 물리정보를 기반으로 모델의 동작에 맞춰서
머리카락이나 스커트의 본 등이 물리운동을 하도록 변합니다.
그럴 경우 물리정보가 유효화된 본에는VMD모션에 박혀있는 움직임은 무시됩니다.
Bullet Physics 보충
모델쪽의 Bullet Physics의 유효화
93. Bullet Physics 보충
Bullet Physics 월드에 임의의 강체 추가 ※상급자용
MMD4MecanimModel의 Join Local World 체크를 풀면 모델을 생성하는
월드를 로컬(모델의 고유 월드)로부터 글로벌 월드로 변경합니다.
※체크를 풀지 않으면 모델은 글로벌월드에 간섭하지 않으므로 주의
94. Bullet Physics 보충
Bullet Physics 월드에 임의의 강체 추가 ※상급자용
강체로 임의의 콜라이더(Box, Sphere, Capsule Collider)와
MMD4MecanimRigidBody의 콤포넌트 세트를 추가한
GameObject를 준비합니다.
아래의 내용은 설정 예입니다.
IsKinematic ON
좌표의 제어는 Unity쪽에서 하고, BulletPhysics에게 좌표치를 보낸다.
OFF
좌표의 제어는 BulletPhysics에서 하고
매 프레임 Unity쪽에 좌표치를 덮어 쓴다.
95. Bullet Physics 보충
Bullet Physics의 최적화 설정
초기 설정은 재형성이나 각종 제약을 위해, 부하가 큰 설정을 하고 있습니다.
아래의 항목을 조정하는것으로 동작속도가 개선되는 경우가 있습니다.
준비 : MMD4MecanimBulletPhysics 오브젝트의 추가, 설정
씬에 MMD4MecanimBulletPhysics 오브젝트를 추가합니다.
이건 싱글톤으로 작성되어 있습니다.(MMD4Mecanim > Scripts > Internal 에 있습니다.)
96. Bullet Physics 보충
퍼포먼스에 영향을 주는 옵션 해설(MMD4MecanimBulletPhysics)
Multi Threading(기본 on) : on이면 물리처리를 별도의 스레드에서 합니다.
애니메이션등에서 문제가 없으면 on 추천
!
Join Local World(기본 on) : on이면 캐릭터별로 로컬 월드를 준비해
캐릭터간의 물리적인 간섭을 억제합니다.
off면 캐릭터 전부를 하나의 월드에서
갱신, 관리를 합니다. 또 멀티스레드를 병용하는것으로
처리속도가 꽤 빨라집니다.
모델이 여러개 표시하는 경우 or
캐릭터간에 간섭을 하지 않는 경우 off 추천
!
Use CCD(기본 on) : on이면 BulletPhysics표준 CCD 처리가 유효화 됩니다.
좀 관통이 힘들어지는 대신, 처리가 무거워집니다.
(모델에 따라 별로 효과가 없을 수 있습니다.)
캐릭터가 별로 움직이지 않는 경우 or 모델이 관동하는 것을
어느정도 허용할 수 있으면 off추천
97. Bullet Physics 보충
퍼포먼스에 영향을 주는 옵션 해설(MMD4MecanimBulletPhysics)
Frame Per Second(기본 0) : 기본으로 0 설정 = 내부에선 120FPS로 동작 합니다.
이걸 동작시의 프레임레이트(예:75)로 제한하면
처리시간을 벌수 있습니다.
!
Iterations(기본 0)
:
기본으로 600 / FPS로 동작합니다.
(예 : 120FPS면 5, 60FPS면 10)
이걸 예를들면 4같은 낮은 수치로 하면
처리시간을 벌수 있습니다.
단, 극단적으로 낮은 수치를 쓰면 모델이 관통하기 쉽게 되고
머리카락등의 연결되어있는
강체의 동작이 부자연스러워 집니다.
111. Helper 보충
재생 종료의 검지
MMD4MecanimMorphHelper
isProcessing : 모프의 재생중인지 아닌지 true면 재생중
isAnimationg : MorphHelper에서는 isProcessing과 동일
!
MMD4MecanimSpeechHelper
isProcessing : 음성파일을 재생중인지 아닌지 true면 음성 재생중
isAnimationg : 입 모프가 재생중인지 아닌지(움직이는지)
음성파일이 끝나도 입이 완전히 닫히지 않으면
true가 됩니다.
상태 변화 판정을 할때 두개의 대사를 쉬지않고 재생하고 싶으면 isProcessing을
입이 닫힐때까지 조금의 틈을 가지게 하고 싶으면 isAnimating을 사용합니다.
113. PMX2FBX로 모델 + 모션 변환 후 위와 같은
에러 다일로그가 표시되면서 유니티가 종료되는 경우가 있습니다.
이건 메모리 부족에 의한 것으로 모델이 복잡하고 모션이 길수록 발생 확률이 높습니다.
Helper 보충
모델 변환후에 Unity가 종료되는 경우
114. 컴퓨터의 메모리를 증설한다.
노트북등 메모리가 적으면 종료되는 경우가 있습니다.
복잡한 모션을 변환할 때에는 8GB정도를 추천합니다.
!
가능한 소비 메모리를 줄인 상태에서 변환을 실행 한다.
1. File > New Scene을 선택해 빈 씬을 생성
2. 유니티를 재실행
3. 대상 모델의 변환 시작
Helper 보충
모델 변환후에 Unity가 종료되는 경우
115. 변환옵션에서 물리 시뮬레이션을 무효화 한다 & 리얼타임 판 Bullet Physics를 사용한다.
변환시의 물리 시뮬레이션을 사용하지 않음으로써 파일 사이즈가
줄어들고 유니티 임포트시의 메모리 소비를 줄입니다.
!
머리카락등 리얼타임으로 움직임을 주고 싶으면 Model에서 BulletPhysics를 선택합니다.
단 모션을 미리 계산해 반영한것에 비해 CPU의 부담이 커집니다.
특히 낡은 환경이나 모바일 환경에서는 동작이 느리게 됩니다.
Helper 보충
모델 변환후에 Unity가 종료되는 경우
가능하면 변환만이라도 좋은 컴퓨터를 빌려서라도 합시다…