作者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)
1F:推 andy13579372:感谢回答!!! 12/31 03:42
2F:→ andy13579372:虽然没有那麽懂 不过我昨天也在Ogre forum问了 12/31 03:42
4F:→ andy13579372:照他说的晚上已经很开心得到结果了!! 12/31 03:45
5F:→ andy13579372:不过因为是新会员 成功的回文还没通过审核贴上 12/31 03:45
6F:→ andy13579372:也很感谢您的认真协助!!!!!我会好好弄懂的 12/31 03:46
7F:→ andy13579372:等那篇文出来我也会再PO个文说明具体是如何处理~~ 12/31 03:48
8F:→ a27417332:打光是需要法向量参与计算的(表示朝哪边) 01/01 12:27
9F:→ a27417332:但是看起来,你的模型忘了输出法向量,所以有些无法计算 01/01 12:28
10F:→ a27417332:制造东西本身的立体感是打光,遮挡的效果才是阴影 01/01 12:31