您的位置:首页 > 其它

Irrlicht导入3D模型控制动画播放

2010-03-05 13:30 309 查看

Irrlicht导入3D模型控制动画播放

日期:2010-3-4
作者:Kagula
环境:
  [1]Irrlicht1.61
  [2]VisualStudio2008+SP1
  [3]3DMAX2009
  [4]ActorX211
  [5]MilkShape3D 1.8.3

概要:

    简述从3DSMAX2009中导入静态模型和动画模型。导入动画模型后播放指定的动画序列。本文假设读者对Irrlicht的使用有初步了解。

正文:

静态模型
可以从3DMAX2009中直接导出OBJ文件。和材质文件一起直接打包成ZIP文件。
程序中利用下面的代码可以装载静态模型
     m_device->getFileSystem()->addZipFileArchive("Myzip.zip");
     scene::ISceneNode* node =        m_device->getSceneManager()->addAnimatedMeshSceneNode(m_device->getSceneManager()->getMesh("myobj.obj"));
 
动态模型
参考“阅读资料”从3DMAX2009中得到ms3d文件或x文件。
下面我们来看程序中的代码如何编写:
第一步:装载动态模型
//scene::IAnimatedMeshSceneNode *m_anms;
     m_anms =m_smgr->addAnimatedMeshSceneNode(m_smgr->getMesh("zouqiaochui.ms3d"));
     m_anms->setLoopMode(false);
     m_anms->setCurrentFrame(0);
第二步:播放一段动画序列(从32帧到75帧)
                       m_anms->setCurrentFrame(32);
                       m_anms->setFrameLoop(32,75);
播放X文件的骨骼动画要注意的问题
[1]假设在3dmax中动画播放速度是每秒30帧,则在Irrlicht中装载模型时加入下面这行代码:
#define TIME_SCALE 158.2872f
m_anms->setAnimationSpeed(TIME_SCALE * 30);
假设播放第50帧到93帧的动画,则采用下面的代码:
                       m_anms->setCurrentFrame(TIME_SCALE * 50);
                       m_anms->setFrameLoop(TIME_SCALE * 50, TIME_SCALE * 93);
阅读资料:
[1]《3dmax文件导出到ms3d文件》
http://www.cnblogs.com/flysnow/archive/2007/06/01/768235.html
[2]《3DMAX导出X文件的插件下载》
 http://www.andytather.co.uk/Panda/directxmax_downloads.aspx
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  2010