而用VS擠壓方式產生Z-Fail陰影的策略則是空間換時間,其本身擠壓陰影體、模板繪製的基礎理論並沒有難度可言,但至關重要的要求是生成一個閉合的Volume Mesh。所謂閉合就是指沒有破洞的Mesh,比如一個球體就是閉合的Mesh,但如果球體上挖掉一個洞就是非閉合的;由一個三角形構成的Mesh是非閉合的,而由正、反兩個三角形貼合在一起構成的Mesh則是閉合的。如果一個VolumeMesh非閉合將會導致嚴重的陰影錯誤。
而要構建一個閉合的Volume Mesh,筆者最近做下來總結要點如下:
一、要排除孤點、去掉不參與構成三角形的頂點
二、要去掉多餘的重合的三角面。
三、關鍵點是修補破洞,需要將破洞的邊緣找出來以後再三角化。破洞邊(Hole Edge)構成的破洞環要注意每條邊的兩個頂點與其它的邊的頂點的鄰接的順序,不能任意顛倒
四、最後再進行頂點合併,把VB掃描一遍,把可以合併的頂點歸到一起,以節省空間