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

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

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

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

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

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

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

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

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

如何将joint系统转化为bone系统着实费了一些脑细胞。其实原理很简单,joint可以看做是一个个小的bone,这些bone的长度对系统没有影响, joint 之间通过父子 关系建立连接。

这样就非常简单的将 ogre里面的骨骼系统转化成了blender的骨骼系统了。

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

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

当然如果没有上面两个工具作为参考,我是很难想到的~

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

你可能感兴趣的:(将ogre的模型导入到blender中, 导出为fbx,并导入到 unity 中)