透明材質問題
透明材質問題
透明材質的問題主要有兩個方面
- 確定材質是透明或不透明
- 透明材質的渲染順序
確定透明/不透明的方法
- XPS模型數據包含材質的屬性,我們可以據此判斷是否應該使用透明模式。所以XPS模型通常不會有誤判的情況
- PMX模型不提供此類數據,所以目前我們主要使用兩個方法
- 透過貼圖的屬性來推斷材質是否透明。如果貼圖包含alpha通道,則判斷材質應爲透明。但這會有例外,比如有些材質會使用alpha通道來作爲光滑值而不是透明度。
- 透過名字來進行推斷。例如名字包含陰影、頭髮等字眼則判斷為透明 所以PMX模型有可能存在一定比例誤判的狀況。
透明材質渲染順序
- 大部分XPS模型包含渲染順序的數據,所以基本上不會有大的問題。
- 有部分PMX模型的材質沒有設定合理的順序,會導致層曡后出現奇怪的畫面。
透明預渲染(HD)
默認情況下,HD和RT版本會開啓透明預渲染模式。在這個模式下,所有透明材質會經過一次預渲染,透過zbuffer來確定材質的層曡關係,以保證最上層的透明材質得到正確渲染。這種方式可以解決層曡的問題但是有個缺陷就是它會捨棄所有下層的材質,如果模型需要多層同時顯示則會出現問題。例如頭髮和透明衣物以及人物被其他透明物體遮擋的情況。這個模式可以在系統設置中關閉。
從1.4.3版本開始可以對每個單獨材質設置獨立微調預渲染的設置
- 預渲染開關: 每個材質可以獨立控制是否使用預渲染
- 預渲染閾值: 在使用預渲染的情況下,可以用此參數控制預渲染的區域,數值越大則預渲染的範圍越小。默認設置在0.8。
透明材質設置
在每個單獨的材質選項中可以改變材質的透明模式,可以選擇自動,强制透明,或强制不透明。
在頭髮選項中可以改變全部頭髮材質的透明度模式
在模型整體材質選項中可以調整透明排序的順序,但目前不能微調只能在 材質順序、倒序等模式中選擇。