vertex compression所遇到的問題

對於數據壓縮,其實就是把浮點的32位精度,改用16位定點數來表達。數據

例如0.0 = 0,1.0 = 32767,-1.0 = -32767思考

這是一種有損壓縮,會丟失一些精度,通常狀況下是能夠接受的。浮點數

當浮點數是-1至+1的範圍,即-32767至+32767。壓縮

這時問題出現了,若是浮點的範圍是幾萬,那麼一些浮點若是是小數位後幾位的數值,壓縮後會變成0。模型

例如:0.0123,在上述狀況下,最終存在unsigned short中實際上是0或者1,解壓後也是0。

發現問題的原由是手上有一個奇葩的模型數據,它的某一組UV居然有3千萬的大小,而其餘的UV則是正常範圍的幾十或者是0-1。

壓縮後,出現大面積的紋理走樣。

經過思考後,發現緣由是美術手上有一張大小多是幾十的貼圖,他想貼到一個幾十萬甚至幾百萬單位大小的模型上,因而就簡單粗暴得將UV值設置爲很大。

可是其實想想,即便再大一點的貼圖,例如1000x1000大小的圖,這時使用3千萬的UV數值,這張圖最後在屏幕上顯示時只會變成純色。

因而解決辦法是在導出時,若是發現有這種奇葩數值,首先是紅色LOG警告,而後將UV數值鉗制在100之內,這樣就不會由於變態數值而影響到正常的數值了。

相關文章
相關標籤/搜索