Warning: opendir(/var/www/html/wp-content/mu-plugins): Failed to open directory: Permission denied in /var/www/html/wp-includes/load.php on line 981
위의 최종결과물은 마우스 드래그로 회전, 휠 줌 인/아웃 그리고 버튼 클릭으로 에니메이션을 고를 수 있습니다.
들어가기에 앞서 미쿠미쿠댄스에 대해서 간단히 알아보겠습니다. 아시는 분들은 아시겠지만 미쿠미쿠댄스는 일본 야마하의 보컬로이드 캐릭터인 하츠네 미쿠를 춤추게 만들어 보겠다는 일본의 한 대인배께서 만들어낸 프로그램입니다. 기본적으로 캐릭터 모델링 데이터를 가지고 있는 .pmd 파일과 에니메이션 데이터를 가지고 있는 .vmd 파일로 나뉘어져 있습니다. 이는 md5 포멧과도 유사하네요. .pmd 캐릭터의 주요 본은 기본적으로 동일하기 때문에 어떤 .pmd 파일에도 .vmd 를 이용하여 춤추게 만들 수 있습니다.
실제 미쿠미쿠댄스 프로그램은 매우 디테일한 설정까지 가능하게 되어있습니다. 심지어 간단한 표정 변화도 표현 할 수 있습니다. 거기에 가장 부러운 기능인 물리 시물레이션이 되서 아주 자연스러운 에니메이션을 만들 수 있습니다. 아직 아쉽게도 Away3D 에서는 동적인 시물레이션은 어렵습니다. 여튼 모르시는 분이 보면 오덕오덕 하다 하실지 모르겠지만 모든 일은 이 덕력이 있기에 가능 하지 않았나 싶습니다. 그런 의미에서 저는 아직 덕력이 많이 부족하네요ㅋㅋ
위의 준비물에 있는 두 플러그인을 받아서 압축을 풀고 아래의 그림과 같이 블렌더 addons 폴더에 넣습니다.

MeshIO 는 .pmd 파일을 import 하기 위한 애드온이고 io_import_vmd 는 이름처럼 .vmd 파일을 import 하기 위한 애드온입니다. 여기서 일단 주의하실 점은 원본 MeshIO(http://sourceforge.jp/projects/meshio/) 의 경우 import 가 제대로 안되었습니다. 정확한 원인은 모르겠으나 아마 언어셋 문제가 아닌가 추측 중입니다. 제가 첨부한 파일은 서양커뮤니티에서 같은 이유로 안되는걸 수정한 버전입니다.
그리고 io_import_vmd 를 사용하기 위해서는 반드시 MeshIO 폴더 이름을 meshio 로 해야 합니다.
위의 그림과 같이 환경설정에서 애드온을 활성화 해주면 설치 완료 입니다. 그럼 이제 인터넷 어디선가 .pmd 파일과 .vmd 파일을 구해 import 하면 됩니다. 아쉽게도 제가 사용한 파일은 모두 출처와 저적권에 문제가 있는 관계로 소스를 공유 못하는 점 양해 바랍니다. 일본쪽에서 클레임 걸면 글 내려야 할지도… 여튼 .pmd 와 .vmd 를 모두 정상적으로 import 하면 아래와 같은 화면이 나옵니다.
별 문제가 없어 보이지만 실제로 자세히 보면 아래와 같이 모델링이 깨져있는 걸 확인 할 수 있습니다.
아마도 mesh 의 중심과 bone 의 중심점 등이 달라서 생기는 현상 같은데 정확한 이유는 모르겠습니다. 여튼 다행인지는 모르겠으나 이대로 md5 로 추출 하여도 거의 대부분 정상적으로 플레이가 됩니다.
이 다음부터는 How to make MD5 for Away3D in Blender? 에서 본대로 md5 로 추출하고 Away3D 에서 가져오면 됩니다.
맨위의 결과물을 보면 로딩이 상당히 오래 걸리는 것을 알 수 있습니다. swf 크기만 13M 이고 파일로드 이후에 md5 파싱에도 상당한 시간이 걸립니다. 저번에도 언급했지만 md5 포멧은 사실 이러한 model 데이터에는 사용하기 적합하지 않은 포멧입니다. 사용된 .md5mesh 가 8M Full Dance 용 .md5anim 가 31M 입니다. 그나마 플래시에 embed 해서 용량이 줄어들었습니다. 원본 파일인 .pmd 가 2.3M 이고 .vmd 가 970K 인거에 비교하면 엄청난 손실이 아닐 수 없습니다. 즉 md5 포멧은 가능한 적은 폴리곤으로 이루어진 모델링 데이터와 여러개의 에니메이션을 컨트롤 해야 할 때 사용해야 할 것 같습니다.
근데 아쉽게도 여기에 약간의 문제가 있습니다. Collada는 3D 데이터를 표현하는 단순한 XML 스키마 즉 구조 일 뿐입니다. 그러다보니 각각의 프로그램들이 이 포멧을 표현하는 방식에서 조금씩 차이를 보입니다. 이 표현의 차이가 우리가 PV3D 나 AW3D 에서 파일을 가져다 쓰기 어렵게 만듭니다. 여러번 테스트 해 본 결과 일단 단순한 정지 상태의 오브젝트는 왠만해서는 잘 가져와지는 것 같습니다. 하지만 본애니메이션이 포함되면 이야기가 달라집니다. PV3D 에서 사용할 경우는 Autodesk 의 FBX Converter 로 컨버터를 한번 해주면 대부분 잘 출력됩니다. Collada 가 Mesh 와 Animation 을 표현하는 방법이 몇가지 있는데 FBX Converter의 경우 Mesh 는 폴리곤 Animation 은 각 frame 별로 bake 된 데이터를 저장 하는 것 같습니다. 그리고 PV3D 와 AW3D 모두에서 사용 하려면 Autodesk 3ds Max 에서 ColladaMax 로 ( 또는 Maya 에서 ColladaMaya ) 로 익스포트 하는 방법이 최선입니다. ColladaMax는 Feeling Software 란 곳에서 제작, 배포했었는데 언젠가 부터 다운로드가 사라졌더군요. 여튼 이것저것 고민 하기 싫으시면 그냥 위의 솔루션으로 작업하시면 모든게 해결 됩니다.
하지만 저는 3ds Max 를 사용하지 않는다. ColladaMax 가 업데이트 되지 않고 있다는 쓸데 없는 이유로 다른 3D 프로그램에서 Collada 를 가져오는 방법을 고민해 봤습니다. 결과는 참패입니다. 무려 5일간을 잠도 안자고 고민했지만 답이 없습니다. 죄송합니다 ㅜ.,ㅜ 아래 부터는 결과 데이터 입니다.
테스트 환경
Setting
결과
collada 는 해당 프로그램의 기본 collada 익스포트입니다. fbx 는 먼저 FBX 로 익스포트 한후 Autodesk FBX Converter 로 컨버터 한 파일입니다. 3dsmax 의 경우 기본 익스포트가 autodesk collada 입니다. 이 익스포트는 실제로 FBX Converter 로 나온 collada 와 동일 합니다. 3dsmax_collada 가 ColladaMax 를 통해서 나온 collada 입니다. 실제 익스포트 이름으로 구분했습니다.
표를 보시면 바로 느껴지는게 PV3D는 대부분의 경우 출력을 합니다. AW3D 의 경우 FBX Converter 로 나온 파일을 출력하지 못합니다. 이유는 PV3D 의 경우 ascollada 라는 프로젝트를 통해 파싱하기 때문에 거의 모든 옵션을 파싱하는 거 같습니다. 하지만 AW3D의 경우 폴리곤으로 지정된 Mesh 를 파싱하지 못합니다. 이거 출력하게 만들라고 이틀 까먹었습니다 ㅜ,.ㅜ 그리고 blender_collada 의 경우는 애니메이션이 안되는데 blender 에서 익스포트하는 속성값이 AW3D에 정의 되어 있지 않았습니다. 이건 약간의 소스 수정만 해주면 기본적인 애니메이션은 작동을 해주었습니다. 하지만 최종적으로 원하는 본애니메이션의 경우는 제대로 되지 않았습니다.
결국 위 표에서 보는 바와 같이 모든 라이브러리에서 정상적으로 작동하는 collada 는 ColladaMax 로 익스포트 하는 경우 밖에 없었습니다.
Papervision3D
(W, A, S, D, 마우스 드래그)
Away3D
(마우스 드래그)
테스트에 사용된 캐릭터는 3008폴리 입니다. 테스트 하면서 느낀점은 의외로 PV3D 의 퍼포먼스가 더 좋다라는 점 입니다. 특히 AW3D 의 경우 FlashPlayer10 전용으로 퍼블리싱 했다는 점을 감안 하면 위의 결과는 매우 재미있습니다. PV3D 에서는 AW3D 의 다양한 쉐이더를 사용 할 수 없는게 아쉽고 AW3D 는 Collada 를 맘컷 사용 할 수 없는게 아쉽군요. 앞으로 이 두 엔진이 서로의 장단점을 잘 커버해서 더 좋은 엔진으로 발전 하길 기대합니다.
]]>