ogre+oFusion+3dsMax如何合并多个骨骼动画文件
2009-09-11 15:34
597 查看
网上常说ogre+oFusion+3dsMax是开源游戏编程的黄金组合,但是在刚接触时我就遇到了一个问题,用oFusion导出的.mesh只能和一个.skeleton文件绑定,而一个.skeleton中只只能包含一个动作,这问题就大了,一般游戏,一个模型都应该能在n个动作中切换,为了解决这个问题,我在ogre3d.org的论坛中泡了好一阵子,终于找到了解决方案,为了让后来人能够少走弯路,总结如下:
(1)创建mesh
(2)载入2个与.mesh相关的.skeleton文件(一般需要从3dsMax中导出2次)
(3)两两合并
(4)接着重复步骤2,3
(5)更新mesh的骨骼列表
源代码如下:
//已经载入的.mesh文件(step.1)
Entity* tmpEnt = mSceneMgr->getEntity( idName );
//其中的两个.skeleton的合并(step.2-3)
SkeletonPtr pSkeletonMaster = SkeletonManager::getSingleton().getByName( anim_1.c_str() );
SkeletonPtr pSkeletonSearch = SkeletonManager::getSingleton().load( anim_2.c_str(), ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME );
Skeleton::BoneHandleMap boneHandleMap;
pSkeletonSearch->_buildMapBoneByHandle( pSkeletonSearch.getPointer(), boneHandleMap );
pSkeletonMaster->_mergeSkeletonAnimations( pSkeletonSearch.getPointer(), boneHandleMap );
SkeletonManager::getSingleton().remove( anim_2.c_str() );
//如还有多余的动画,继续合并(step.4)
//更新.mesh相应骨骼状态
tmpEnt->getSkeleton()->_refreshAnimationState( tmpEnt->getAllAnimationStates() );
通过上面的步骤,你就可以把多次导出的骨骼合并在一起,并可以简单的转换了!!
Enjoy!!!
(1)创建mesh
(2)载入2个与.mesh相关的.skeleton文件(一般需要从3dsMax中导出2次)
(3)两两合并
(4)接着重复步骤2,3
(5)更新mesh的骨骼列表
源代码如下:
//已经载入的.mesh文件(step.1)
Entity* tmpEnt = mSceneMgr->getEntity( idName );
//其中的两个.skeleton的合并(step.2-3)
SkeletonPtr pSkeletonMaster = SkeletonManager::getSingleton().getByName( anim_1.c_str() );
SkeletonPtr pSkeletonSearch = SkeletonManager::getSingleton().load( anim_2.c_str(), ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME );
Skeleton::BoneHandleMap boneHandleMap;
pSkeletonSearch->_buildMapBoneByHandle( pSkeletonSearch.getPointer(), boneHandleMap );
pSkeletonMaster->_mergeSkeletonAnimations( pSkeletonSearch.getPointer(), boneHandleMap );
SkeletonManager::getSingleton().remove( anim_2.c_str() );
//如还有多余的动画,继续合并(step.4)
//更新.mesh相应骨骼状态
tmpEnt->getSkeleton()->_refreshAnimationState( tmpEnt->getAllAnimationStates() );
通过上面的步骤,你就可以把多次导出的骨骼合并在一起,并可以简单的转换了!!
Enjoy!!!
相关文章推荐
- 如何合并多个*.so库文件
- *.zip.001 & *.zip.002类型的文件的解压缩方法 即如何合并多个被分割的文件
- 如何合并多个*.so库文件
- 如何合并多个镜像文件片段
- 【Unity&DragonBones】像素角色人物骨骼动画教程(一)PS文件如何导入DragonBones
- 如何将多个vmdk文件合并为一个或者将一个vmdk文件拆分为多个
- 手把手教你使用cocosbuilder在cocos2d-x中建立单独骨骼动画文件(一)
- 如何合并EA文件
- 使用几何画板时如何合并多个画板文件
- 如何将Nios II硬件和软件合成一个文件(NIOS II)(硬件)(软件)(合并)
- g++如何编译多个原文件和头文件
- rac 下如何复制控制文件为多个
- 关于xcode7生成的framework静态库文件,模拟器和真机framwork如何合并
- 不使用webpack如何合并多个js文件,合并多个css文件
- 如何用Latex合并多个pdf文件?
- CFileDialog如何选择多个文件
- 如何实现将数据同时保存到两个数据表,使得同一次提交多个文件的文件ID号相同
- Linux下如何过滤、分割以及合并 pcap 文件
- 一篇通俗易懂的.x文件解析+骨骼动画实现的文章
- 如何合并数据库文件