上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
songfat 時常出沒的會員
註冊時間: 2008-01-25 文章: 34
192.68 果凍幣
|
發表於: 2008-7-23, PM 10:23 星期三 文章主題: [Ogre3d]如何將模型從3dsmax9匯出成Ogre用的模型資料 |
|
|
各位好唷,這一篇不是ogre的基礎教學,更不是教你如何做出骨架動畫,而是讓負責3d美工的朋友能快速的了解ogre裡boned mesh animation的匯出方式。使用lexiexporter此工具從3d studio max9的檔案匯出成ogre可以使用的格式。
P.S.lexiexporter目前只有max9可以用。還有如果先前有灌過ofusion的人,請先移除ofusion,因為lexiexporter跟ofusion會有衝突。
此篇文章須要的程式:
lexiexporter:可將max裡的模型轉成ogre可使用的binary格式
ogre command line tools:可將ogre用的各種檔案做binary與xml之間的轉換,以及用來升級舊版的ogre檔案格式
cegui mesh viewer:可讓我們很方便的觀看ogre的模型外觀、動畫、骨架等...的資訊,此程式是使用cegui這一非常棒gui library,可惜主開發者已經停止維護嚕
雖然我說方便,但這些工具其實對不了解ogre的人來說一點都不方便,為什麼這麼說呢?因為ogre對資源管理有一些規範,你必須了解那些規範了之後用這些工具才會比較方便。
此教學分三部份:工具安裝、骨架網格製做、模型匯出
Part I:工具安裝
(以下的安裝最好是在沒有中文名稱的路徑下,因為有些open source軟體對於本地化的支援並不是很好)
lexiexporter一定要安裝在3dsmax的資料夾,例如:c:\program file\autodesk\3dsmax9之類的。至於怎麼在max中叫出它的控制項呢?安裝好lexiexporter後,打開max,再依照下圖的順序點擊,就可以叫出來嚕!
至於ogre command line tool,則直接安裝就好了。
而cegui mesh viewer不能安裝在根目錄下,也就是C:或D:之類的,一定要安裝在C:\xxx或D:\xxx\yyy之類的,至於為什麼嘛...這我也不曉得。
Part II:骨架網格製做
首先當然是先做一個網格模型,我這裡直接拿3dmax8的範例來做示範。不管你用什麼功能,反正就是做出一個模型。這裡我們先不談材質的問題,不過還是盡量使用材質球裡普通貼圖的功能,而且材質的名稱最好不要有特殊字元,頂多用底線。還有一個重點是,最好使用uvw map,如果不知道什麼是uvw map,那就先不要管它吧...下圖是一個完成後的模型:
要切記的一點是,不管你塑模的過程如何,最後一定要將分開的網格合在一起,也就是使用attach的功能,有點像是焊接,但使用起來沒那麼直觀就是了,反正最後一定只會剩下一個網格。如下圖:
接著是非常重要的步驟,一定要將網格轉換成editable mesh,就是對網格點右鍵之後的convert to -> editable mesh:
這個步驟沒做的話,等到你用ogre來看此模型的時候,你就會知道厲害了。
接下來就是骨架了,雖然使用biped很方便,而且有大量的輔助工具輔助biped做動畫,但一般還是建議各位用最基本的Bones來完成骨架,而不是Biped。因為預設的Biped骨架數量非常多,光是胸部跟腹部跟頭上那一根就不知道有多少個骨架了,但一般並不會動畫到這些地方,所以你必須進行最佳化,將沒有必要的骨架給去掉,調調biped的參數就能做的到,像腳指、手指這些地方也都須要微調一下。不過當然啦,做人物的話用biped是比較方便,但如果是一些小怪物之類的最好還是用Bones來做。這裡我為了方便,所以使用Biped:
等到把biped調成跟mesh差不多小的時候我們就可以來幫biped上皮膚啦。這裡要多提醒一點的就是,做網格時一定要將四肢竟量分開一點,將來在上皮膚的時候才會比較方便,如果你網格已經全部合併了才發現雙腳太靠近、或是雙手太接近身體,那就請你自求多福啦....
記住嚕!請使用skin而不要要使用physique,對習慣使用physique的人這裡要說聲抱歉嚕。
接著要改一個參數,就是bone affect limit,此參數是調整一根骨頭最多可以影響多少個頂點,由於ogre限制只能4個,所以我們要將此參數調成4嚕:
再來就是把骨頭加進skin裡啦!
好了!接著就是做每根骨頭對頂點影響程度的微調嚕!
嗯!?看不到圖!怎麼回事!?
當然啦,我是寫程式的又不是美工人員,你以為我真的會去微調每一根骨頭然後把圖照下來給你們看嗎...很幽默嘛..
完全結合骨架與網格之後,就可以開始做動畫啦!要怎麼做呢?
自己想辦法...
Part III:模型匯出
終於來到重點部份了...不過在做匯出模型之前,請先將骨架全部隱藏起來,場景上只要剩下mesh就行了。接著依照下圖的步驟加入一個skinned mesh:
如果你場景中有超過一個模型的話,你可以選擇要匯出哪一個,這裡我們只有一個:
接下來,再我們剛加入的skinned mesh上增加一個boned animation:
再來你就可以自己調整這個bone animation的名稱、起始影格、終止影格、以及播放速率:
這裡要多說明一點,在ogre裡一個模型可以有多個動畫狀態,每一個狀態就是由名稱來區隔,例如:walk、run、jump等等,每一個狀態都有記錄起始影格及終止影格,這裡的影格就是對應max下方的影格。所以嚕!你可以將跑的動畫做在0~100,跳的動畫放在101~200,以此類推,並在匯出的時候重覆此一匯出步驟,就可以為一個skinned mesh增加多個bone animation。
接下來就是將此網格模型取名、選擇儲存位置。這裡要記得,"Export Single Material File"要打勾,這樣產生的檔案數量比較少,對我們來說比較方便。最後一個步驟就是Export All!!!
匯出時會出現訊息,只要沒有跳出一個error並叫你按確定就沒問題了,那些訊息不用管,點選close結束就ok。這樣你就能得到匯出後的檔案嚕!不包含圖檔的話一般來說會產生五個檔案:
接著將這五個檔案連同模型使用到的圖檔一起打包成zip(注意!一定要zip),我們這裡取名doctor.zip:
再來放到cegui mesh viewer安裝目錄下的Media/Ogre/packs下:
接著用純文字的方式開啟cegui mesh viewer安裝目錄下的resources.cfg,並在[Bootstrap]下加入你的剛放進去的檔案,這裡我們的是"Zip=Media\Ogre\packs/doctor.zip":
終於快完成!再來就打開cegui mesh viewer主程式,你要先設定你要用openGL還是directX,以及顯示模式、要不要全螢幕、畫面要不要同步之類的參數,接著按ok就可以進去。進去後照著下圖的步驟做,記得,這裡的doctor是你自己取的名稱:
裡面的animation states就是你在匯出時設定的動畫,設定的愈多這裡可以選的就愈多嚕。
終於完成嚕!是不是覺得很麻煩呀?那是因為你還沒遇過更麻煩的問題...
Part IV:.mesh及.material的升級(選擇性閱讀)
由於有些人硬是要用max8來做,而max8的匯出是lexi的1.0.7版,雖然可能一樣可以用cegui mesh viewer來看,但可能會有一些問題,因為ogre每一版的檔案格式可能會有小小的改變,不過通常還是可以相容,只是把那些舊的檔案升級一下可能會比較好。如果你是那種硬是要用max8 + lexiexporter 1.0.7版的人,請參考以下的mesh及material檔升級程序:
從模型從max匯出後,將.mesh及.material放到ogre command line tool的安裝目錄下,寫個批次檔(你也可以直接用cmd啦)名為convert.bat,內容如下(test是你的檔名):
OgreMeshUpgrade test.mesh
OgreMaterialUpgrade test.material
存檔,接著就執行convert.bat就ok啦!
至於那五個檔案分別代表什麼,其內容又是如何組成的,等下次有機會再說嚕。
songfat 在 2008-7-24, PM 3:13 星期四 作了第 1 次修改 |
|
回頂端 |
|
|
還是零分 散播福音的祭司
註冊時間: 2007-09-19 文章: 164
653.83 果凍幣
|
發表於: 2008-7-24, AM 12:10 星期四 文章主題: |
|
|
這是這個論壇第一個圖文並茂的教學吧
真用心啊!! |
|
回頂端 |
|
|
songfat 時常出沒的會員
註冊時間: 2008-01-25 文章: 34
192.68 果凍幣
|
發表於: 2008-7-24, PM 3:15 星期四 文章主題: |
|
|
還是零分 寫到: | 這是這個論壇第一個圖文並茂的教學吧
真用心啊!! |
過獎ㄝ~不過跟您的openGL教學比起來是小巫見大巫啊 ... |
|
回頂端 |
|
|
et034837 稍嫌羞澀的路人
註冊時間: 2009-02-06 文章: 1
5.78 果凍幣
|
發表於: 2009-2-6, AM 11:07 星期五 文章主題: |
|
|
感謝您的教學 ~~目前正在學習 OGRE, 給了我很大的幫助喔!! |
|
回頂端 |
|
|
diva 稍嫌羞澀的路人
註冊時間: 2007-06-18 文章: 2
11.80 果凍幣
|
發表於: 2009-6-10, AM 10:06 星期三 文章主題: |
|
|
感謝您的教學 這一篇解決了我用max9輸出後的問題了. |
|
回頂端 |
|
|
songfat 時常出沒的會員
註冊時間: 2008-01-25 文章: 34
192.68 果凍幣
|
發表於: 2009-7-10, PM 9:29 星期五 文章主題: |
|
|
diva 寫到: | 感謝您的教學 這一篇解決了我用max9輸出後的問題了. |
該不會是因為沒在max中將模型轉成editable mesh,使得匯出後的模型動畫產生破碎的狀況吧? |
|
回頂端 |
|
|
diva 稍嫌羞澀的路人
註冊時間: 2007-06-18 文章: 2
11.80 果凍幣
|
發表於: 2009-7-22, AM 9:31 星期三 文章主題: |
|
|
目前又遇到一個問題了 想請教 如果是含有alpha的png檔 該怎麼用阿.一直沒辦法透空掉 |
|
回頂端 |
|
|
mirror 散播福音的祭司
註冊時間: 2007-07-27 文章: 174
828.60 果凍幣
|
發表於: 2009-8-1, PM 3:09 星期六 文章主題: |
|
|
diva 寫到: | 目前又遇到一個問題了 想請教 如果是含有alpha的png檔 該怎麼用阿.一直沒辦法透空掉 |
png檔本身沒有透空功能
也沒有alpha功能
你有Photoshop的話,去找一下DDS插件吧
DDS是大多數用於3D模型的一種圖檔
這個才有透空功能 |
|
回頂端 |
|
|
|