將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 子目錄下

相關文章
相關標籤/搜索