如何检查边是否是网格的轮廓?

时间:2011-03-22 21:27:41

标签: algorithm

我有一个由许多三角形组成的3D网格。我只需要渲染这个网格的轮廓。请参阅此图片http://postimage.org/image/2jnaopqro/

我检查边缘是否为轮廓的方法是检查共享此边缘的两个相邻三角形是否具有相对于当前观察方向的不同法线符号。视图方向定义为指向屏幕外部的矢量。

但是,这种方法并不总是有效。正如while箭头所示,你可以看到我确实错过了一些大纲。你知道为什么吗?

注意:

1> I have checked that all normals are computed in CCW
2> The given mesh data is also correct. In other words, 
   no given triangle is returned with wrong order.

我很想知道这种检测方法的局限性。正如我早些时候提到的,它大部分时间都有效。

谢谢

1 个答案:

答案 0 :(得分:0)

如果你想做“香椿阴影”,这通常不是通过找到实际边缘,而是通过(例如)填充白色,将网格绘制为纯黑色轮廓三角形(可能是填充位),然后将网格绘制为前面的非轮廓白色三角形。结果是网格的黑色轮廓。