在某些情況下需要做網(wǎng)格的輪廓檢測(cè),例如ShadowVolume,勾邊渲染等,具體算法如下:
假設(shè)參考邊為uv,u和v是兩個(gè)端點(diǎn)所有共享邊uv的面集合記為sides,則:
1.遍歷網(wǎng)格的索引緩存,對(duì)每條邊構(gòu)建sides;
2.對(duì)每個(gè)sides集合,檢查dot(normal(side[i]),view),view是視線(xiàn)方向,如果結(jié)果中有正有負(fù),則該邊為輪廓邊,將輪廓邊加入一個(gè)圖結(jié)構(gòu)graph;
3.在graph中使用深度優(yōu)先算法檢測(cè)回環(huán),如果有回環(huán)就是輪廓.