看板 GameDesign 關於我們 聯絡資訊
※ 引述《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