DAE vs. MD2

Pavpervision3D(이하 PV3D) 에서 애니메이션을 구현하는 방법은 크게 두가지가 있다. 첫번째는 트위너를 이용해서 PV3D 에서 만든 오브젝트를 직접 애니메이션 하는 방법과 3D 모델링 데이터의 애니메이션을 이용하는 방법이다. 전자의 경우는 Coverflow 와 같은 모션이나 트랜지션에 유리하지만 PV3D 에서 지원하는 이동이나 회전, 스케일을 제외한 디테일한 애니메이션에는 한계가 있다. 후자는 Collada 와 같이 애니메이션을 지원하는 3D 포멧을 이용한 방법이다. 이는 3D 제작툴(3ds max)을 이용하여 매우 디테일한 애니메이션이 가능하지만 파일을 파싱하는데 많은 자원을 소비한다는 단점이 있다.

이중 후자의 경우 현재 PV3D 에서 구현할 수 있는 포멧은 Collada의 .dae 와 Quake II의 .md2 가 있다. 오늘은 이 두가지 포멧에 대해서 알아 보겠다.

DAE

[파일정보] people_ani_max.dae : 1,541 KB
texture_1.png : 106KB
texture_2.png : 109KB
totalFrame : 30

먼저 Collada 의 .dae 포멧이다. Collada는 3D 데이터를 XML 로 저장하는 포멧이다. 오픈소스로 진행되고 있으며 최근 가장 많이 사용 되어지고 있다. 다만 각 어플리케이션에서 저장하는 방법이 약간씩 다른데 이 때문에 PV3D 에서 제대로 읽어오지 못하는 경우가 종종있다. 현재까지 테스트 해 본 바로는 3ds Max 에서 ColladaMAX 로 export 하는 방법이 가장 이상적이다. 다만 ColladaMAX 가 3.05C 이후 업데이트가 없으며 Max 2009 를 지원하지 않는다는 문제가 있다. 누군가 2009용으로 빌드한 것이 있으나 모든 시스템에서 정상적으로 작동되지는 않는다.

.dae 의 경우 3D 데이터에 대한 범용적인 저장 방법이다. 그러므로 대부분의 데이터를 저장 할 수 있다. 현재로서는 가장 현실적인 방법이기는 하나 텍스트인 XML 을 파싱해야하므로 퍼포먼스가 상당히 나쁘다. 위의 샘플에서 볼 수 있드시 30프레임 애니메이션을 로드하는데 상당한 시간이 필요하다.

MD2

[파일정보] tris.md2 : 378 KB
blade_blue.png : 57 KB
totalFrame : 200

.md2 는 본래 Quake II 용 캐릭터 모델링 데이터 포멧이다. 많은 Quake 유저들을 통해서 많은 캐릭터 파일이 공개 되어있을 뿐 아니라 다른 게임등에도 사용되는 듯 하다. .md2의 특징은 ByteArray 를 통해서 파싱하는데 거의 시간이 걸리지 않는 다는 점이다. 위 md2 샘플을 보면 무려 200프레임의 애니메이션 정보를 담고 있으나 .md2 파일의 용량은 378 KB 밖에 되지 않는다. 30프레임에 1.5 MB 인 .dae 와는 큰 차이를 보인다. 물론 두 파일의 포멧적 특성상 이러한 차이가 나는 것은 당연하겠으나 PV3D에서 에니메이션을 구현할때 확실히 큰 장점이 아닐 수 없다. 하지만 아쉽게도 치명적인 단점이 존재하는데 그것은 파일의 태생상 한 파일에 여러 오브젝트와 메터리얼, 라이트 등에 대한 정보를 담을 수 없다는 것이다.

결과적으로 현시점에서 PV3D 를 웹사이트에 적용 시킨 다면 DAE 이 외는 대안이 없어 보인다. 하지만 이 또한 낮은 퍼포먼스라는 걸림돌 때문에 쉽게 적용시키기 어렵다. 결국 최소화된 모델링 데이터를 통한 최적화 밖에 답이 없어 보인다. Flash Player 10 이 보편화 되고 CS4 를 통한 3D 작업에 대한 정보가 더 많아지면 3D 작업은 CS4 에서 구현하는 것이 가장 좋을 것 같다.

1 thought on “DAE vs. MD2”

  1. Pingback: Collada was exported for Papervision3D & Away3D | Sewonist.com

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.