블렌더에서 간단하게 오브젝을 만들고 오브젝에 뼈대 (armature)를 입힌 후 뼈대 애니메이션을 만들었었다.

irrlicht에서 이것을 가져오려고 했는데 생각보다 쉽지 않았다.

다음과 같은 방식을 통해서 진행하니 되긴 된다.

1. blender에서 b3d exporter를 사용하여 b3d 파일을 생성한다.
b3d exporter는 기본으로 존재하지 않는 addon으로 하기 위치에서 받는다.
http://supertuxkart.svn.sourceforge.net/viewvc/supertuxkart/media/trunk/blender_25/?pathrev=9452
B3DExport.py

원래는 구글링으로 찾아보면 Gandalf.com에서 blender 2.49b용 b3d exporter를 만들었다고 한다. 
파이선 스크립트인데 블렌더 2.49b 당시엔 python 2.5.2 기준으로 작성되었다고 한다. 
현재 블렌더 2.5.x는 python 2.6인가 새버전을 쓰는데 2.5버전에선 <>하던걸 새버전에서 !=로 바뀌고 
old api를 사용하는 문제가 있다고 했다. 그래서 구버전 2.49b를 다시 설치하는 등 생쇼를 하다가 
찾아보니 blender 2.5.x용 b3d exporter가 있다는 걸 알았다. ㄷㄷ;; 다행..

하여튼 파일을 받았다면 C:\Program Files\Blender Foundation\Blender\2.59\scripts\addons
이 위치에 B3DExport.py파일을 복사하고 블렌더를 실행한다. (블렌더 버전은 2.59기준으로 작성하였다) 

블렌더를 실행한 후 파일/User Preference [ctrl+alt+U] 를 실행한 후 addons 탭에서 import/export를 선택하고 B3D export를 활성화한다.


이때 중요한 것은 화면에 mesh하나랑 armature가 하나씩만 존재해야한다고 누가 그랬다. (구글링; )
그리고 armature가 mesh의 부모로 설정되거나 add modifier로 vertex group으로 설정되면 된다는데,...
어찌 잘 안되어서 armature를 mesh 부모로 설정하였다.
오브젝 모드에서 쉬프트 오른클릭으로 메쉬랑 armature 선택한 후 Ctrl + P를 누르면 set parent 메뉴가 나온다.
그렇게해서 Armature 하위에 mesh가 들어가게 한 다음
 
그리고 파일/export/b3d를 한 후 익스포트를 한다.

그리고 대충 아래처럼 irrlicht 관련 코드에 넣었따.

scene::IAnimatedMeshSceneNode* anms =

                smgr->addAnimatedMeshSceneNode(smgr->getMesh("20110809_bear_walk.b3d"));


        if (anms)

        {

                scene::ISceneNodeAnimator* anim =

smgr->createFlyCircleAnimator(core::vector3df(0,0,30), 20.0f);

                if (anim)

                {

                        anms->addAnimator(anim);

                        anim->drop();

                }

                anms->setMaterialFlag(video::EMF_LIGHTING, false);


                anms->setFrameLoop(0, 100);

                anms->setAnimationSpeed(50);

               // anms->setMD2Animation(scene::EMAT_RUN);


                //anms->setScale(core::vector3df(2.f,2.f,2.f));

                anms->setScale(core::vector3df(0.2f,0.2f,0.2f));

                

// anms->setRotation(core::vector3df(0,-90,0));


                anms->setMaterialTexture(0, driver->getTexture("bear.png"));

        }


실행하면 화면에서 바보 곰이 원을 그리면서 돌고 걷는 동작을 한다.



 


'KB > irrlicht 3D' 카테고리의 다른 글

OpenGL 관련 조사..  (0) 2011.07.29

+ Recent posts