上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
pleaselouis 時常出沒的會員
註冊時間: 2008-11-03 文章: 32
505.97 果凍幣
|
發表於: 2009-2-6, PM 5:56 星期五 文章主題: [請益] 關於 OGRE 材質檔名 取得問題 |
|
|
大家好 小弟我又來發問了 目前我要做的項目 是取得 材質檔名 但是有異常情形發生
以下是程式碼:
Entity * et = mSceneMgr->createEntity( "Test" , "Test.mesh" );
SceneNode * sn =
mSceneMgr->getRootSceneNode()->createChildSceneNode( "TestNode" );
sn->attachObject( et );
String temp = sn->getMaterial()->getTechnique(0)->getPass(0)->
getTextureUnitState(0)->getTextureName();
基本上 我原本以為如此一來 便會取得此一Mesh所對應到的 材質檔 檔名
但是不知為何 總是回傳 axes.png 此圖檔 而不是此Mesh應該對應的圖檔
因此跟大家請益 到底是哪邊出錯 煩請大家解惑
又 我其實是為了要對已載入 Mesh 的 材質 做處理 如: 位移 平移 縮放 其他特效 等等
而我目前的作法 是先 Create 一個新的 material 將其材質設為原本Mseh的材質
再對材質做處理 最後再用 setMaterialName 把新建立的 material set 過去
就是因為這樣 所以我才會需要抓取 Mesh 的 材質檔名
但是我最一開始 是使用如下的方法 :
MaterialPtr material = MaterialManager::getSingleton().load(
sn->getMaterial()->getName() , sn->getMaterial()->getGroup() );
但是這樣抓到的 material 竟然還是一樣是 axes.png 此圖檔
我想這一定是有很大的錯誤 也希望版上的各位前輩 可以一併解答 為小弟解惑
感謝大家的幫助 <(_ _)> 謝謝 |
|
回頂端 |
|
|
songfat 時常出沒的會員
註冊時間: 2008-01-25 文章: 34
192.68 果凍幣
|
發表於: 2009-2-6, PM 10:55 星期五 文章主題: |
|
|
ㄝ...有幾點問題,
為什麼要用scenenode的getmaterial方法呢?
正確來說應該要用subentity的getmaterial方法。一個entity裡可能會有很多subentity,因為一個模型可能會用到很多materials,每一個material會對應到一個entity的subentity,所以用subentity的getmaterial方法才是正確的。
再來補充一點,若你是只對texture做位移或旋轉處理,直接使用material scripts就能做到嚕~在scripts中的Texture Units,有
# scroll
# scroll_anim
# rotate
# rotate_anim
# scale
# wave_xform
等等的功能可以使用,就不用再寫程式recompile嚕~直接寫在script裡就行了,在ogre manual裡都有寫。
話說,這個主題不是應該發表在"遊戲程式進階班:各種進階圖型引擎或遊戲引擎"裡嗎?
小弟我有一段時間沒用ogre了,希望這回覆有幫到你的忙。 |
|
回頂端 |
|
|
pleaselouis 時常出沒的會員
註冊時間: 2008-11-03 文章: 32
505.97 果凍幣
|
發表於: 2009-2-10, PM 4:05 星期二 文章主題: |
|
|
非常感謝你的回答 幫了很大的忙 謝謝
>話說,這個主題不是應該發表在"遊戲程式進階班:各種進階圖型引擎或遊戲引擎"裡嗎?
不好意思 是小弟疏忽了 下次我會注意的 謝謝你 |
|
回頂端 |
|
|
|