作者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)
→ Transformers:應該是沒有做前後排序,有作半透明的話 03/09 12:09
→ Transformers:要在Shader將AlphaBlendEnable設定為true 03/09 12:10
→ Transformers:並指定SrcBlend=SrcAlpha; DestBlend=InvSrcAlpha; 03/09 12:11