作者pleaselouis (LOUISN)
看板GameDesign
标题Re: [请益] 请问关於 Ogre 材质 透明色 设定
时间Mon Mar 9 11:15:37 2009
※ 引述《mellean (莉莉姆)》之铭言:
: 如你的原文有推文提到需要开启alpha test才会有你想要的功能
: 在你的情况中,你将depth write enable打开(true),亦即只要被处理的
: pixel就会将depth资讯写在depth buffer中用来做depth test,
: 但如果没打开alpha test,会造成即使alpha为0(假设会全透明)还是会处理该
: pixel所以也是会将depth资讯写入,会造成在後来绘制的而且被刚刚其实应该
: 全透明的地方的物件档住的物件被拒绝绘制到该处,所以就变成还是刚刚画上
: 去的透明的背景色;将depth write关闭的话就没办法用depth test来检查
: pixel距离camera的远近而做绘制的筛选,所以後来画的物件在场景中其实比面画的
: 距离camera还要远却会盖在最上面。
: 所以应该打开alpha test让全透明的pixel(alpha == 0)被reject掉,这样该
: pixel就不会被处理,也不会将depth值写入depth buffer,不会影响後来绘制在
: 该处的物件,记得没错的话ogre只要pass的alpha reject function的值不是被设定成
: always pass的话就会自动打开alpha test的功能了,
: 好像没办法自己直接控制要关闭还是打开。
你好 谢谢你的回应 不过还是有些疑问 希望可以跟你请教
和美术讨论 目前是想使用 Alpha Texture 的技术 当然你提到的 Alpha Test 其实也有做
只是在 Mesh 的边缘贴图 也会出现类似於我之前提到的情形 如下图 :
http://0rz.tw/QtBWt
在此图片可以看见 头发的边缘 一样会看到场景的底色(水蓝色) 而不是脸的肤色
有在其他讨论区跟其他网友讨论 他认为是 SubEntity 的顺序造成的
也就是我先显示 头发 再画 脸部 所以才会这样...但是...
其实我的 头发 跟 脸部 都是个别独立的Mesh 并不属於同一个Mesh之下
原本是打算 在 SceneNode 中使用 Attach 的方式 将他们连结在一起
不过这样好像跟 SubEntity 的顺序没有相关就是了...囧
看了文件 我认为应该是要使用 createSubMesh() 来将 头发加到脸部上
但是查询网路上相关 createSubMesh() 的范例 都似乎是另外手动撰写多边形附加上去
而不是另外载入一个 Mesh 档 将其附加上去 ...
不知道关於上面所述 可否请大家提供一些意见 一起讨论研究 谢谢大家 <(_ _)>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.76.190.21
※ 编辑: pleaselouis 来自: 211.76.190.21 (03/09 11:52)
1F:→ Transformers:应该是没有做前後排序,有作半透明的话 03/09 12:09
2F:→ Transformers:要在Shader将AlphaBlendEnable设定为true 03/09 12:10
3F:→ Transformers:并指定SrcBlend=SrcAlpha; DestBlend=InvSrcAlpha; 03/09 12:11