上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
pleaselouis 時常出沒的會員
註冊時間: 2008-11-03 文章: 32
505.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
505.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裡就有完整的說明了。 |
|
回頂端 |
|
|
|