Archive for the ‘BSpapervision’ Category.

bs-papervision 구글코드 주소

http://code.google.com/p/bs-papervision/

어느 정도 성과가 있어 0.1 alpha의 마일스톤을 달성한 바, 일차적으로 프로젝트 홈을 공개하기로 했습니다. 별건 없지만 서도 ^^;

많은 이용 바라며 혹시 프로젝트 로고같은거라도 만들어주시면 감사히 받겠습니다.

DAE의 애니메이션 프레임 통제하기

BSpapervision 패키지를 만들면서 가장 힘들었던 부분은 바로 애니메이션의 제어부분이었던 것 같습니다.

DAE 객체로 특정 애니메이션의 프레임이나 반복 횟수 등을 제어할 방법이 없어 고민하며 많은 서핑과 소스분석을 통해 해결했는데, 그 결과물을 공유하고자 합니다(혹시 더 좋은 방법이 있으시다면 알려주세요. ^^)

1. project 메서드 이해하기

거의 모든 PV3D 객체의 중심이 되는 DisplayObject3D는 내부에 project라는 메서드를 갖고 있는데 이 메서드가 public인 이유는 공개하기 위해서가 아니라 패키지 넘어서 호출이 많기 때문입니다. 즉 외부에서 함부로 호출하기 위함이 아니라 내부에서 사용되지만 패키지 넘어 호출해야 하기 때문에 public 인거죠.

기본적으로 이 project 메서드는 컨테이너인 Scene이 rendering 되는 시점에 자신의 모든 자식에게 호출하게 되는 일종의 렌더링을 위한 준비동작용 메서드입니다. 컬링 등을 판단하죠.
Continue reading ‘DAE의 애니메이션 프레임 통제하기’ »

BSpapervision 구조공개

여러 차례의 refactoring 과 수정을 통해 어느 정도 패키지의 모양이 다듬어 졌습니다. 간단히 공개하겠습니다.

image

사실 다 만들고 보니 이렇게 4개만 필요했고 전부 외부에는 static으로 제공됩니다. 각 4개의 객체가 하는 일은 아래와 같습니다.
Continue reading ‘BSpapervision 구조공개’ »

Max에서 PV3D용 모델 내보내기

제목과 같은 내용으로 간단히 설명된 글이 참 찾기 어려웠습니다. pv3d는 엄청나게 쓰는데 의외로 이걸로 정보를 찾기가 쉽지 않더군요. 여하튼 max dae export for pv3d 따위로 검색하자 나오는 여러 가지 결과를 종합하여 쓸만한 글을 추리고 그로부터 실험 및 확인한 결과를 레포트 할까 합니다.

우선 한 눈에 알기 쉽게 설명한 글은 http://www.packtpub.com/article/papervision3d-external-models-part1 여기였습니다.

1편에서는 맥스에 대해 2편에서는 스케치업에 대해 각각 PV3D를 위한 export를 어떻게 하는게 좋은지를 친절히 설명해줍니다. 요점만 정리하면 맥스2009에선 기본 dae출력이 있지만 그걸 사용하지말고 전용 오픈소스 출력기인 colladamaya를 사용하라는 것이었습니다.

근데 막상 이걸 설치해서 max를 구동해보면 colladamax.dle> failed to initialize. Error code 126 – … 이런 식의 에러가 발생합니다.

이걸 해결하기 위해 딱 저 검색어로 마구 뒤져본 결과… http://techarttiki.blogspot.com/2008/08/colladamax-for-3ds-max-2009-64-bit.html 이런 글에 도달했습니다. 원래는 저 오픈소스가 32bit만 지원해서 64bit용도 찾았다는 글인데, 이 글에 댓글 단 사람 중에 한 명이 그거 설치했더니 위와 같은 에러가 났다고 말해서 그 밑에 답변으로 올라온 해결책 중에 쓸만한게 있었습니다. 바로 아래와 같은 글입니다.

Got it, make sure both of these are installed for the plug-in to work:

http://www.microsoft.com/downloads/details.aspx?familyid=2da43d38-db71-4c1b-bc6a-9b6652cd92a3

http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647

그러니까 그 플러그인 저 두 개의 라이브러리에 의존하고 있으니 깔라는 얘깁니다.

위에 링크는 DirectX End-User Runtime Web Installer 라는 건데 원래 윈도우에 DX가 깔려있다는 걸 생각해보면, 이걸 설치하지 않으면 안되는 directX의 조각이 있나봅니다.

밑에 링크는 Microsoft Visual C++ 2005 SP1 Redistributable Package (x86) 입니다. 즉 비쥬얼 스튜디오용 구동 dll이 필요하다는 겁니다. 기왕 그럴거면 더 최신판이 좋겠죠? 그래서 2005 sp1 보다는 2008 sp1을 권장합니다 그 링크는 아래와 같습니다.

http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en

참고로 저처럼 비주얼스튜디오가 이미 설치되어있으신 분들은 필요 없습니다.

이렇게 다 깔고 나서 ColladaMax_FREE_3.05C.exe 까지 설치를 마치고 나면 맥스의 export 메뉴에 기존의 Autodesk Collada 외에 새로운 COLLADA 라는 녀석이 등장합니다. 이 녀석으로 출력을 하면 됩니다.

CSpvLoader 핵심 로직 설명

사실 래핑 클래스의 핵심은 컨테이너와 로더입니다. 이 두 개만 완성되면 어떻게든 해나갈 수 있습니다. 왜냐면 저의 경우는 PV3D에게 바라는 점이 몇 가지 없기 때문입니다. 그저 Max로부터 모델링 이쁘게 로딩하고 키프레임 애니메이션 잘 재생만 해주면 됩니다. 쉐이딩도 라이팅도 동적 정점 변환도 필요없습니다. 한정시점으로 라이트매핑완료된 모델을 빠르게만 굴릴 수 있으면 충분하달까요 ^^;

따라서 그러한 모델을 담을 컨테이너와 모델을 데려올 로더만 구비되면 어느 정도 어플을 만들 준비가 된 셈입니다.

컨테이너의 경우 어느 정도 모양이 나온 상태로 테스트 중이고 이제 로더를 만들어가는 과정이었는데 대략 완성되어 그 제작과정에서 배운 점과 고민거리를 공개해볼까합니다.
Continue reading ‘CSpvLoader 핵심 로직 설명’ »