将ogre的模型导入到blender中, 导出为fbx,并导入到 unity 中

ogre 的做为开源界最好的图像渲染引擎,被不少游戏使用,比较有名的一款arpg 火炬之光,使用的就是ogre。git

围绕ogre有不少第三方开发的插件,其中比较著名的有一个 粒子系统,还有一个叫作CEGUI的UI系统。 我在不少别的游戏源码中都看到了克隆这个粒子系统的影子~ 例如unity上面有一款xffect特效插件,以及gameloft开发的地牢猎手游戏里面的粒子系统。github

不过今天主要关注的时ogre的模型导入,包括mesh的导入,骨骼动画的导入和材质的导入。工具

准备工做包括搜集ogre模型资源,这个暂时借用火炬之光的模型资源,这套资源制做精良,资源完备,很是适合练手。 接着须要搜索一下是否有别人已经作过相似工具了。在google上面主要搜到两个工程,都是将ogre模型导入到blender中的,其中一个只支持模型和贴图导入,另一个支持骨骼导入,不过惋惜两个工具年代久远,已经不能在当前版本的blender上面正常工做了。动画

接下来指定目标计划: 1 首先参考第一个工具,结合当前blender API,重写一个工具支持模型和贴图导入; 2 参考第二个工具,写骨骼动画的导入 3 根据自身需求,增长一些其它功能google

模型和贴图导入比较简单,模型主要就是顶点坐标和uv坐标以及 face网格的导入, 基本上属于简单的 数据读取。.net

骨骼比较麻烦一些,首先3d游戏骨骼系统分为两种, 1基于bone的 2 基于joint的插件

blender 建模中采用的是基于bone的模型,bone 对照人体骨骼来说就是 骨骼的棍状部分,有长度等属性,在棍子的两头有joint部分,负责链接不一样的bone。 ogre中使用的是joint,一个joint链接两个bone。3d

如何将joint系统转化为bone系统着实费了一些脑细胞。其实原理很简单,joint能够看作是一个个小的bone,这些bone的长度对系统没有影响, joint 之间经过父子 关系创建链接。xml

这样就很是简单的将 ogre里面的骨骼系统转化成了blender的骨骼系统了。对象

后面导入骨骼动画,主要麻烦在于区分 局部坐标和世界坐标中的骨骼变换。 blender中有个pose模式,在这个模式下面,调整每一个骨骼位置,而后插入关键帧, 最后就能够作出一个动画了。

最后将模型导出为fbx 就能够在其它工具中使用了。

固然若是没有上面两个工具做为参考,我是很难想到的~

代码附上 https://gist.github.com/liyonghelpme/e64b88d6ebb93ca90e20

这个是最新版本的代码:

http://git.oschina.net/liyonghelpme/blenderOgre

blender使用 2.74版本

注意修改代码的导出log路径 以及 要使用 ogre command tool 这个工具的路径

脚本中会操做:

1:ogre command tool 转化.mesh文件 为 xml

2:脚本将 .xml 和 骨骼导入

3:脚本将导入的对象导出为 fbx 模型 放到 对应目录的fbx 子目录下

相关文章
相关标签/搜索