電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
[請益] 請問 OGRE Texture 旋轉 等特效處理

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式進階班:各種進階圖型引擎或遊戲引擎
上一篇主題 :: 下一篇主題  
發表人 內容
pleaselouis
時常出沒的會員


註冊時間: 2008-11-03
文章: 32

504.97 果凍幣

發表發表於: 2009-2-12, AM 10:58 星期四    文章主題: [請益] 請問 OGRE Texture 旋轉 等特效處理 引言回覆

大家好 我又來發問了 <(_ _)> 這次是關於 OGRE Texture 的旋轉 等特效問題

程式碼如下:

Entity * et = mSceneMgr->createEntity( "Test" , "Test.mesh" );

Ogre::TextureUnitState *texture;

texture = et->getSubEntity(0)->getMaterial()->getTechnique(0)
->getPass(0)->getTextureUnitState(0);

texture->setTextureRotate( Ogre::Degree(180) );

et->getSubEntity(0)->getMaterial()->getTechnique(0)->getPass(0)
->getTextureUnitState(0)->setTextureName( texture->getTextureName() );


我原本認為 這樣一來 就會看到 Texture 以180度旋轉的情形發生 但是卻完全沒有動靜

搞了好幾天 依然沒有進展 因此再度上來向各位前輩請益 請大家幫幫忙 <(_ _)>

又 之前有另外實驗一段程式碼 可以達到 Texture 以180度旋轉的效果

但是 Material 的其他屬性 如 : Diffuse 等等 設定會跟原本 *.mesh 紀錄的不一樣

而且還必需每執行一次旋轉 都重新產生 Material 這樣會消耗無謂資源 ...

程式碼如下:

Entity * et = mSceneMgr->createEntity( "Test" , "Test.mesh" );

MaterialPtr material = MaterialManager::getSingleton()
.create("TestMaterial", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);

material->getTechnique(0)->getPass(0)->createTextureUnitState
(et->getSubEntity(0)->getMaterial()->getTechnique(0)
->getPass(0)->getTextureUnitState(0)->getTextureName() );

material->getTechnique(0)->getPass(0)->getTextureUnitState(0)
->setTextureRotate(Ogre::Degree(180));

et->setMaterialName( material->getName() );

麻煩大家非常不好意思 但還是希望大家可以多多幫忙 謝謝大家 <(_ _)>
回頂端
檢視會員個人資料 發送私人訊息
songfat
時常出沒的會員


註冊時間: 2008-01-25
文章: 34

192.68 果凍幣

發表發表於: 2009-2-12, PM 5:53 星期四    文章主題: Re: [請益] 請問 OGRE Texture 旋轉 等特效處理 引言回覆

pleaselouis 寫到:
大家好 我又來發問了 <(_ _)> 這次是關於 OGRE Texture 的旋轉 等特效問題

程式碼如下:

Entity * et = mSceneMgr->createEntity( "Test" , "Test.mesh" );

Ogre::TextureUnitState *texture;

texture = et->getSubEntity(0)->getMaterial()->getTechnique(0)
->getPass(0)->getTextureUnitState(0);

texture->setTextureRotate( Ogre::Degree(180) );

et->getSubEntity(0)->getMaterial()->getTechnique(0)->getPass(0)
->getTextureUnitState(0)->setTextureName( texture->getTextureName() );


程式碼沒問題,不過最後一句
et->getSubEntity(0)->getMaterial()->getTechnique(0)->getPass(0)
->getTextureUnitState(0)->setTextureName( texture->getTextureName() );
是多餘的。

因為你說可成功旋轉的程式碼與失敗的程式碼所用的.mesh(還有它使用到的material?)不一樣,所以我想最有可能的原因是你的test.mesh的subentity不只一個,必須對所有subentity的unitState都設定rotate 180度,除此之外我就想不到其它問題了...
回頂端
檢視會員個人資料 發送私人訊息
pleaselouis
時常出沒的會員


註冊時間: 2008-11-03
文章: 32

504.97 果凍幣

發表發表於: 2009-2-13, PM 4:48 星期五    文章主題: Re: [請益] 請問 OGRE Texture 旋轉 等特效處理 引言回覆

非常感謝你 我已經找到問題了 原來是我從 3DMax Export 的 Mesh 有問題

用原程式碼 輸入 Ogre 內建的 Mesh 就完全正常了

因此我現在有兩條策略 正在執行中 :


1.找新的 For 3D Max Plugin 來用

原本是使用 LEXIExporter 但是官方網站說 作者已經停止維護

而 oFusion 則是開發商業遊戲的話要收費... 小弟就是為了工作...

其他在 Ogre Wiki 有提到的 Export 都沒有輸出 skeleton

對於GAME來說 靠skeleton做動畫是必須的...

因此也請問大家 網路上是否有 完整授權的免費 For 3DMax 的 Plugin !!!???

感覺機率不高 但還是麻煩大家提供一下意見


2.自行撰寫 For 3DMax 的 Plugin

感覺上這條策略似乎比較可行 因此目前已經著手開始研究

但是重點是 我完全沒有找到 關於 Ogre

*.mesh *.mesh.skeleton *.mesh.material

的相關格式文件 ...

不知是否有前輩 可以在這一方面 給予一些協助 謝謝大家 <(_ _)>
回頂端
檢視會員個人資料 發送私人訊息
songfat
時常出沒的會員


註冊時間: 2008-01-25
文章: 34

192.68 果凍幣

發表發表於: 2009-2-13, PM 6:55 星期五    文章主題: Re: [請益] 請問 OGRE Texture 旋轉 等特效處理 引言回覆

pleaselouis 寫到:
非常感謝你 我已經找到問題了 原來是我從 3DMax Export 的 Mesh 有問題

用原程式碼 輸入 Ogre 內建的 Mesh 就完全正常了

因此我現在有兩條策略 正在執行中 :


1.找新的 For 3D Max Plugin 來用
43
2.自行撰寫 For 3DMax 的 Plugin
43


1.絕對是很難找到。當初lexiexport的作者也是因為工作才開發lexiviewer和lexiexporter,後來他說因為老板決定不再開放源碼,所以沒繼續更新。寫exporter所需要花費的代價不低...

2.你可以使用ogre commandline tool把.mesh .skeleton等轉成xml,格式非常簡單,絕對是一看就懂的。至於material等的scripts,ogre manuall裡就有完整的說明了。
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式進階班:各種進階圖型引擎或遊戲引擎 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作