作者valkidy (.............)
看板GameDesign
標題Re: [問題] OGRE 程式匯入的mesh沒有立體感(陰影)?
時間Mon Dec 30 23:35:41 2013
[恕刪]
個人經驗僅供參考:我猜是shader(也是material)的問題
請先確定你的執行環境有使用到shader
假設你的render system 是 d3d9RenderSystem
那麼執行目錄下請確定要有 cg.dll、D3DCompiler_43.dll、d3dx9_43.dll
(d3dx9、D3dCompiler 版號一致就好)
在開始執行的時候,請檢查你的輸出視窗有沒有以下訊息:
"已載入 'D:\xxx\bin\D3DCompiler_43.dll'"
有的話表示你的執行環境確實有在shader下運作
接著檢查資料,請檢查你的 material 理面有沒有使用到以下的 scheme
vertex_program_ref、fragment_program_ref
如果這些都有的話,我之前遇到一片黑的狀況通常是sahder compiler失敗了
那就看一下ogre.log
以下我只能列舉一下錯誤的關鍵字供參考:
OGRE EXCEPTION(6:FileNotFoundException): Cannot locate resource
"shader/errorpath/Base_VP.cg"
High-level program "Base_VP_HLSL" encountered an error during loading and is
thus not supported.
<= 找不到檔案(Base_VP.cg)的錯誤,所以shader Base_VP_HLSL 建不起來
OGRE EXCEPTION(3:RenderingAPIException): Cannot assemble D3D9 high-level
shader Base_FP_HLSL Errors:
D:\xxx\bin\memory"(23,2)": error X3000: syntax error:
unexpected token 'oColor'
in D3D9HLSLProgram::loadFromSource at
..\..\..\RenderSystems\Direct3D9\src\OgreD3D9HLSLProgram.cpp (line 281)
<= shader code 寫錯,請找這個檔案的第 23 行。上下文要自己判斷,這裡我是故意
少寫一個分號...。
補充說明一下,通常看到類似你附圖左下角的那種灰色,可以猜想是material的問題。
如果是一片黑,或是畫面破碎(也要是一片黑),那麼可以猜想是shader的問題。
....抱歉我打完才看到你提供的連結。看起來勢必要解決shader的問題了。
請你先試試看將從ply轉成oger mesh後,先為它設定 BaseWhiteNoLight 這個 material
model->setMaterialName("BaseWhiteNoLight");
應該會看到一個完整形體但是是灰色沒有深度的模型。接下來在試試看去解決你自己寫的
material在載入後產生的 exception
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.171.104.30
※ 編輯: valkidy 來自: 1.171.104.30 (12/30 23:38)
※ 編輯: valkidy 來自: 1.171.104.30 (12/30 23:49)
推 andy13579372:感謝回答!!! 12/31 03:42
→ andy13579372:雖然沒有那麼懂 不過我昨天也在Ogre forum問了 12/31 03:42
→ andy13579372:照他說的晚上已經很開心得到結果了!! 12/31 03:45
→ andy13579372:不過因為是新會員 成功的回文還沒通過審核貼上 12/31 03:45
→ andy13579372:也很感謝您的認真協助!!!!!我會好好弄懂的 12/31 03:46
→ andy13579372:等那篇文出來我也會再PO個文說明具體是如何處理~~ 12/31 03:48
→ a27417332:打光是需要法向量參與計算的(表示朝哪邊) 01/01 12:27
→ a27417332:但是看起來,你的模型忘了輸出法向量,所以有些無法計算 01/01 12:28
→ a27417332:製造東西本身的立體感是打光,遮擋的效果才是陰影 01/01 12:31