看板 GameDesign 關於我們 聯絡資訊
看了你的圖後推測應該是先畫了頭髮才畫臉部沒錯 因為即使alpha test打開了,然後設定的reject是alpha等於0的不處理 但是alpha不為0的部份還是會被處理,所以邊緣會有殘留。 可能有幾種選擇方法來嘗試解決: 1. 將reject的value增加,例如128;這樣可以減少邊緣殘留的部份,但 會比較不好看。 2. ogre本身會先繪製solid的物件們,之後才繪製transparency的物件們,繪製 順序與SubEntity建立的順序無關,看你的繪製結果,你的臉部entity所使用 的材質可能具有透明屬性,所以才會跟頭髮一起繪製且沒經過sorting;假如 你的臉部材質並不需要alpha(亦即texture本身並沒alpha或alpha沒作用)時 請將SceneBlendType設定成Replace,這樣確保臉部是solid型態的物件,就會 先被繪製,後來才繪製有transparent屬性的頭髮,這樣就不會有在臉上的頭髮 邊緣卻看到底色的問題,但假設頭髮下面的物件也需要transparent屬性, 那就需要對entity使用sorting了。 3. 透過entity將臉部與頭髮的render priority設定為不同層次,臉部先,頭髮後 不過因為預設的遊戲物件繪製的priority都一樣(sky與UI除外),所以可能要 小心使用。 以上幾種方式應該都能解決臉部與頭髮間有底色殘留的問題,但是無法解決 "假設你的頭髮本身是一整個同一個mesh"時頭髮蓋頭髮(很多層頭髮)會有 底色殘留的問題,要解決這個就需要對polygon做render sorting了,簡單的 可在mesh輸出時先sorting完畢,效果比較好的就是繪製的時候按照depth資訊 即時來做sorting。 ※ 引述《pleaselouis (LOUIS￾N)》之銘言: : 你好 謝謝你的回應 不過還是有些疑問 希望可以跟你請教 : 和美術討論 目前是想使用 Alpha Texture 的技術 當然你提到的 Alpha Test 其實也有做 : 只是在 Mesh 的邊緣貼圖 也會出現類似於我之前提到的情形 如下圖 : : http://0rz.tw/QtBWt : 在此圖片可以看見 頭髮的邊緣 一樣會看到場景的底色(水藍色) 而不是臉的膚色 : 有在其他討論區跟其他網友討論 他認為是 SubEntity 的順序造成的 : 也就是我先顯示 頭髮 再畫 臉部 所以才會這樣...但是... : 其實我的 頭髮 跟 臉部 都是個別獨立的Mesh 並不屬於同一個Mesh之下 : 原本是打算 在 SceneNode 中使用 Attach 的方式 將他們連結在一起 : 不過這樣好像跟 SubEntity 的順序沒有相關就是了...囧 : 看了文件 我認為應該是要使用 createSubMesh() 來將 頭髮加到臉部上 : 但是查詢網路上相關 createSubMesh() 的範例 都似乎是另外手動撰寫多邊形附加上去 : 而不是另外載入一個 Mesh 檔 將其附加上去 ... : 不知道關於上面所述 可否請大家提供一些意見 一起討論研究 謝謝大家 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.37.95
pleaselouis:非常感謝你的幫忙 我想我需要的就是做sorting 因為我 03/11 09:45
pleaselouis:的頭髮的確就是一整個Mesh 可以請問關於做 sort 的關 03/11 09:45
pleaselouis:鍵字有哪些嗎?? 再次謝謝你的幫忙 <(_ _)> 03/11 09:46
mellean:try to google "transparent polygon sorting" 03/11 10:52