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 Away3D – sewonist.com https://sewonist.com sewonist = sewon + artist Fri, 10 Apr 2020 03:41:25 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 https://sewonist.com/wp-content/uploads/2015/08/cropped-sewonist-32x32.png Away3D – sewonist.com https://sewonist.com 32 32 SeeU dance in Away3D https://sewonist.com/seeu-dance-in-away3d/ https://sewonist.com/seeu-dance-in-away3d/#respond Tue, 16 Oct 2012 07:23:26 +0000 https://sewonist.com/?p=3252 Read More »SeeU dance in Away3D]]> 필 받은 김에 응용편 까지 계속 달려 보도록 하겠습니다. 한국판 보컬로이드인 SeeU 데이터를 Away3D로 가져와 보도록 하겠습니다. 같은 데이터를 Unity3D 로 가져온 Future of Flash 와 비교해서 보시는 것도 재미있을 것 같네요.

위의 최종결과물은 마우스 드래그로 회전, 휠 줌 인/아웃 그리고 버튼 클릭으로 에니메이션을 고를 수 있습니다.

준비물

MikuMikuDance

들어가기에 앞서 미쿠미쿠댄스에 대해서 간단히 알아보겠습니다. 아시는 분들은 아시겠지만 미쿠미쿠댄스는 일본 야마하의 보컬로이드 캐릭터인 하츠네 미쿠를 춤추게 만들어 보겠다는 일본의 한 대인배께서 만들어낸 프로그램입니다. 기본적으로 캐릭터 모델링 데이터를 가지고 있는 .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 포멧은 가능한 적은 폴리곤으로 이루어진 모델링 데이터와 여러개의 에니메이션을 컨트롤 해야 할 때 사용해야 할 것 같습니다.

참고

  1. http://nikq.org/archives/303
  2. http://www.oogtech.org/content/tag/import-from-mmd-to-blender/
]]>
https://sewonist.com/seeu-dance-in-away3d/feed/ 0
OBJ Viewer https://sewonist.com/obj-viewer/ https://sewonist.com/obj-viewer/#respond Wed, 23 Mar 2011 08:31:37 +0000 https://sewonist.com/?p=2211 Read More »OBJ Viewer]]>

Download : ObjViwer.zip

3D 파일 포멧 중 하나인 obj 를 볼 수 있는 뷰어 입니다.

컨트롤러로 회전 및 확대를 할 수 있고 화면을 드래그 하여 이동 할 수 있습니다. 몇가지 제약이 있는데 mtl 이 포함 된 obj 파일은 보이지 않습니다. 그리고 오브젝트가 여러개인 경우 기본 쉐이딩 메터리얼이 적용되지 않을 수 있습니다. 급히 만드느라 기능은 많이 미약 합니다. ^^

그나저나 왜 퐁메터리얼만 넣으면 안되는지 모르겠네요. 기본 오브젝트들은 잘 되던데… 이후에 시간 나면 멀티포멧뷰어에도 도전해 봐야겠습니다.

]]>
https://sewonist.com/obj-viewer/feed/ 0
Flash Player Incubator ( Molehill ) Test https://sewonist.com/flash-player-incubator-molehill-test/ https://sewonist.com/flash-player-incubator-molehill-test/#comments Fri, 04 Mar 2011 04:55:58 +0000 https://sewonist.com/?p=2071 Read More »Flash Player Incubator ( Molehill ) Test]]> AIR and Flash Player Incubator 가 공개되면서 플래시 진영의 3D 관련 이슈가 폭발적입니다. (혼자 생각인가?) 관련해서 이것저것 하고 싶은 말이 많지만 말재주는 없지 생각은 정리 안되지 다른 할 일은 많지 해서 그냥 Away3D 4.0 샘플 소스에 제가 모델링 한 소스를 올려 보는 정도의 테스트 만 해봤습니다. 본 샘플을 보기 위해서는 Flash Player 11 이 필요합니다.

테스트를 한 타입은 3개로 Stacy Low 는 기본 모델링 입니다. Stacy High 는 Low 모델링에 Subdivide 만 한번 해줬습니다. Stacy Photoshop 은 원본 dae 파일을 Photoshop 에서 obj 로 export 한 타입입니다.

테스트를 하다 우연히 알게 된 건데 원래 본 모델링 데이터는 dae 포멧이였습니다. 이걸 obj 로 바꾸는데 3d 프로그램 열기 귀잖아서 그냥 포토샵에서 obj 파일로 변환 했습니다. 이렇게 변환한 obj 파일과 3d 프로그램에서 직접 export 한 obj 파일의 쉐이딩 느낌이 전혀 다른 걸 발견했습니다. Stacy Photoshop 은 Stacy Low 와 동일한 폴리곤 수 임에도 이 쉐이딩 때문에 훨씬 좋은 퀄리티로 보입니다. 3개의 파일은 모두 동일한 라이트와 매터리얼로 설정 되어있습니다. 3d 에 대한 깊은 이해가 없는 관계로 어떻게 이런 현상이 발생하는 건지는 모르겠지만 왠지 뭔가 엄청 좋은 꽁수를 발견한 것만 같습니다.

Stacy Low

Stacy High

Stacy Photoshop

모델링은 작년 영국에 간 여친을 그리워 하며 한땀한땀 정성을 다해 만들었던 겁니다. 음.. 솔직히 이건 남친이 안티?? ㅋㅋㅋㅋ 헤어를 넣었으면 좀 더 괜춘할 것 같은데 헤어는 로우폴리로 넣는것도 엄청 어렵더라구요. 아래 캡쳐이미지도 있으니 Flash Player 11 을 설치하기 부담스러운신 분은 참고 하시면 좋을 것 같습니다.

p.s.1 확실히 인큐베이터라 그런지 여러 문제가 보이네요. 맥에서는 swf 는 정상적으로 빠른데 나머지 2개는 느리네요. 하드웨어를 타는 문제도 있을 것 같네요. 그리고 위의 샘플의 경우 render 를 3개가 계속 잡고 있어서 더 그런 것 일 수도 있을 것 같습니다. 흠.. 그런데 맥용 플레이어 용량이 원래 이렇게 컸나요? 18.4Mb 라니…;;;;;

p.s.2 mtl 은 Material Definitions for OBJ Files 이군요. 흠 아래 링크에서 각 속성을 봤는데 그 속성들로 저렇게 쉐이딩이 바뀔 것 같지는 않은데.. 흠… 좀더 연구해봐야겠네요.
http://people.sc.fsu.edu/~jburkardt/data/mtl/mtl.html
http://paulbourke.net/dataformats/mtl/

p.s.3 테스트 결과 mtl 은 아무 관계 없습니다;;;; obj 만으로 결과가 다르군요. 어찌 이런 현상이~~ 신기하당!!!

]]>
https://sewonist.com/flash-player-incubator-molehill-test/feed/ 4
Away3D Cube Map Projection https://sewonist.com/away3d-cube-map-projection/ https://sewonist.com/away3d-cube-map-projection/#comments Sat, 27 Nov 2010 04:28:26 +0000 https://sewonist.com/?p=1477 Read More »Away3D Cube Map Projection]]> 3D 작업을 하다 보면 수 많은 ing 들을 만나게 됩니다. Modeling, Mapping, Lighting, Legging, Compositing 등등 참 많습니다. 개발자는 Coding 만 하면 되는데 말이죠.. 아! 제일 중요한 Debugging 정도가 더 있겠네요. ㅎㅎ 여튼 그중 Mapping 에 대해서 살짝 살펴 보겠습니다. 3D 는 제 전공도 아니고 부전공도 아니고 교양 어디 쯤에 있으므로 제가 알려드리는 정보는 절대 정확하지 않음을 미리 양해 바랍니다.;;;

맵핑이란 말 그대로 모델링 된 데이터에 다양한 메터리얼을 맵 해주는 것을 말합니다. 사실 이 맵핑이라는 주제는 책 한권을 가지고 모자른 엄청난 내용이므로 저는 아주 축소하고 엄청 겉핡기로 알아보겠습니다.

엄청난 수의 매터리얼 채널
매터리얼 투사 방법

매터리얼 채널, 매터리얼 투사 방법은 위의 이미지에서 보듯이 엄청나게 많습니다. 하지만 그중 실제로 플래시에서 사용 할 수 있는건 매우 제한적입니다. 그간 플래시의 기능향상(픽셀벤터 같은)과 3D 라이브러리들의 발전으로 NormalMap 같은 것 까지 사용 할 수 있게 되었지만 그럼에도 전용 3D툴에 비하면 미약하죠. http://labs.adobe.com/technologies/flash/molehill/ 같은 프로젝트를 통해 GPU를 통한 성능개선이 이루어지면 더 많은 선택을 할 수 있게 될지도 모르겠습니다. 어차피 그래도 라이브러리들이 지원 해 줘야 겠지만요.

Away3D는 그 중 가장 많은 기능을 제공 하고 있습니다. 이중 큐브에 맵핑 할 수 있는 간단한 3가지 투사 타입에 대해서 알아보겠습니다.

1. Normal

기본형입니다. 사실 이건 투사라고 할 수 없습니다. 원래 투사라는 건 한장의 맵핑소스를 어떻게 모델에 투사 할 것이냐를 결정하는 것 이기 때문이죠. 기본형은 각 면에 각각의 메터리얼을 지정해줍니다. 각각 지정해 주지 않으면 한장의 메터리얼이 각각에 맵핑 됩니다. 기본적으로 다른 라이브러리들도 이 형태입니다. 정확하지는 않은나 Alternativa3d 경우는 이 옵션조차 없는 것 같더군요.

재미난 점은 Top 과 Bottom 이 바뀌어 나온 다는 점입니다. 이유는… 모르겠습니다. 이미지가 회전 되어있는 건 뒤에 설명하겠습니다. (메터리얼에 마우스를 올리면 크게 볼 수 있습니다.)

2. Map6

Away3D 에서 만 제공하는 독특한 타입입니다. 맵 한장으로 쉽게 맵핑 할 수 있습니다. hika 님이 알려주셨습니다.

mappingType property
mappingType:String [read-write]
Defines if the cube should use a single (3 cols/2 rows) map spreaded over the whole cube. topleft: left, topcenter:front, topright:right downleft:back, downcenter:top, downright: bottom Default is false.

이건 Top 과 Bottom 의 위치가 제대로 나오는군요. 이 Map6 의 단점은 큐브가 정육면체가 아니면 이미지 왜곡이 생긴다는 점입니다. 그래도 메터리얼을 하나로 끝낼 수 있다는건 큰 장점입니다. 이전 Papervision3D 를 쓸때는 주사위 하나 만들어 주려면 메터리얼이 6개 필요 했으니까요. ㅠㅠ

3. UV

이 UV 도 할 이야기가 많지만 잘 모르므로 역시 패스~;;; 간단히 설명하자면 3차원인 x, y, z 를 2차원인 u, v (, w) 에 매칭해주는 걸 말합니다. 이런게 필요한 이유는 당연히 맵 이미지가 2D 이기 때문입니다. 이 UV 는 기본 프리머티 오브젝트에서는 사용 할 수 없습니다. 그러므로 이 예제는 기본 큐브가 아니라 Collada 데이터 입니다. Front 대신 Left 가 정면으로 보이는데 아마도 Cinema4D 와 좌표계 차이로 그런게 아닌 가 싶습니다.

UV 를 사용하게 되면 투사를 원하는데로 매우 정확하게 할 수 있습니다. 각 Vertext 좌표들이 1:1로 맵핑되어 있으니까요. 그리고 위에서 볼 수 있듯이 맵핑소스의 왜곡도 피할 수 있습니다. 단점이라면 불필요한 여백과 데이터들이 생긴 다는 점입니다.

3D 를 2D 에 맵핑합니다

이 UV 예제를 만들면서 알았는데 Top 과 Bottom 부분의 UV 가 원래는 Right 쪽에 있더군요. 이걸 위의 그림처럼 Front 쪽으로 옮기면서 좌표를 회전 시켜줘야 했습니다. 이런 이유 때문에 처음 두 맵 이미지들도 Top 과 Bottom 을 회전 시켜 줘야 했던게 아닌 가 싶습니다. (역시 추측;;)

정말 3D는 해도해도 그 끝이 없는 것 같습니다. 간단한 육면체에 맵핑 할 수 있는 방법만 해도 수 없이 많을 걸 보면 말이죠. 간단하게나마 Away3D 에서 큐브에 맵핑하는 방법에 대해서 알아봤습니다. 각각의 방법에 모두 장단점이 있지요. 결국은 개발자가 필요한 상황에 맞게 선택 해서 사용 해야겠습니다.

]]>
https://sewonist.com/away3d-cube-map-projection/feed/ 6
Collada was exported for Papervision3D & Away3D https://sewonist.com/collada-was-exported-for-papervision3d-away3d/ https://sewonist.com/collada-was-exported-for-papervision3d-away3d/#comments Thu, 22 Jul 2010 14:27:44 +0000 https://sewonist.com/?p=1123 Read More »Collada was exported for Papervision3D & Away3D]]> Papervision3D(PV3D) 와 Away3D(AW3D) 같은 3D 라이브러리는 여러종류의 3D 포멧을 임포트 해서 쓸 수 있습니다.  대표적인 것들로는 Collada, 3Ds, Md2  같은 포멧을 사용 할 수 있습니다. 이들 중 가장 널리 사용되고 있는 포멧은 Collada 입니다. Collada ( www.collada.org ) 3D 포멧을 공통으로 사용 할 수 있게 해주는 XML 스키마 입니다. 거의 대부분의 3D 어플이 이 포멧을 지원하며 포토샵 같은 어플에서도 임포트가 가능 합니다. 이 Collada 는 거의 대부분의 3D 속성을 저장 할 수 있습니다. Mesh, Material, Camera, Light 등등 그 중 가장 유용한 점은 자체에 애니메이션을 저장 할 수 있다는 점입니다. 퍼포먼스만으로 만 본다면 다른 Obj 나 3Ds 등의 포멧이 더 좋을 지도 모르겠으나 이들 포멧은 애니메이션을 사용 할 수 없습니다. 애니메이션이 가능한 포멧으로는 Md2도 있지만 이는 다른 속성이 저장되지 않습니다. 이와 관련해서 전에 비교한 글이 있습니다. ( https://sewonist.com/2009/01/dae-vs-md2/ ) 즉 현재로서 애니메이션된 3D 오브젝트를 표현하는 가장 적당한 답은 Collada 로 가져 오는 것 입니다.

근데 아쉽게도 여기에 약간의 문제가 있습니다. 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일간을 잠도 안자고 고민했지만 답이 없습니다. 죄송합니다 ㅜ.,ㅜ 아래 부터는 결과 데이터 입니다.

테스트 환경

  • Cinema4D R11.523
  • Blender 2.52b
  • 3ds max 2009
  • Flash CS5
  • Autodesk FBX Converter 2011.3
  • Papervision3D 2
  • Away3D 3.5

Setting

Cinema4D Collada Setting
Cinema3D FBX Setting
Blender FBX Setting
3dsmax Autodesk Setting
3dsmax Collada 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 를 맘컷 사용 할 수 없는게 아쉽군요. 앞으로 이 두 엔진이 서로의 장단점을 잘 커버해서 더 좋은 엔진으로 발전 하길 기대합니다.

]]>
https://sewonist.com/collada-was-exported-for-papervision3d-away3d/feed/ 2