(四)unity shader在實際項目中出現的問題————安卓機型角色眼鏡閃爍的問題(Z-Fighting)

最近發佈跑安卓平臺遊戲的時候,發現我們部分功能界面出現的角色模型,眼鏡會一直閃爍,有時候全身都感覺在閃,經常調查,發現這種畫面閃爍大多數情況下是z-fighting引起的。

 

解決方案:

1.由於我們項目的角色模型有眨眼這個功能,所以會導致,瞳孔的面片和角色模型是分離的面片,這兩個面片貼的過勁導致的,所以解決方案之一是讓模型產生這個現象的兩個面儘量離開一些距離,究竟多少距離只有通過實驗才知道。這種方法會對美術產生影響,所以這種方法是下下策。

2. 在每個場景中,找到那個MainCamera,然後在Inspector上,找到MainCamera的屬性,Clipping Planes,需要做的是儘量放大near的值,儘量減小far的值。

改動Near值的幅度比Far值的幅度相對來說效果會更好。如Near從1到20可能修正了某個z-fighting,但是Far從1000改到500也還是沒有用。這個在實踐中可以注意。

我這裏原來是Near值爲0.01,Far是500,當我Near改爲1的時候就不閃爍了,完美解決問題。一般我們相機的Near儘量大於1,Far小於500是最好的情況。

z-fighting原理:

z-fighting的出現是的不同面上的像素在z-buffer中的值相近,導致前臺取像素的時候一會去這個面的,一會取那個面的。改變照相機的near、far屬性會涉及到z-buffer中的值的精度。因爲在各個平臺上z-buffer位數不同,因此改變near和far能給z-buffer中的值的浮點數部分儘量留出空間,消除z-fighting。

本文參考的文章原文地址:https://www.cnblogs.com/czaoth/p/5830725.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章