如何检测开放网格3d模型的边界顶点?

时间:2012-08-02 14:37:57

标签: math graphics geometry computational-geometry vertex

有两种表面网格模型,闭合网格像球体或立方体,第二种是开放网格模型,这意味着模型的表面不是闭环。它从一个像空心管道的地方开放。 Sp我想要的是我想检测开放网格模型的边界顶点。闭环网格中没有边界,但在开放网格中,我们必须检测边界顶点以进行一些平滑,细分等操作。 请建议我如何选择/检测边界顶点?这样做的最佳方式是什么? 通过比较三角形的边缘?给我一些想法?

感谢。

2 个答案:

答案 0 :(得分:10)

假设您有一个流形网格,那么网格边框就是那些只属于一个多边形的边。不在边框上的边将属于两个多边形。边界顶点是属于边界边的顶点。

找到边界顶点的一种简单方法是遍历所有边,计算它们属于多少个多边形,如果它们只属于一个多边形,则将边的顶点收集为边界顶点。但是,您必须从集合中删除重复的顶点。

第二种方法是让网格数据结构在添加到网格时检查每条边,或者将多边形附加到特定边。通过这种方式,网格数据结构可以为您保留最新的边框边缘列表,这样当您需要边缘时,您不必每次都能找到它们。这将大大减少确定边界边缘的开销,尽管插入边缘和多边形将略微更昂贵。您的网格数据结构也将占用更多内存。

答案 1 :(得分:6)

假设您的网格是2D(或2.5D)规则,构造良好的三角剖分。您可以使用此处列出的一些属性:http://graphics.stanford.edu/courses/cs468-10-fall/LectureSlides/02_Basics.pdf

第9页将顶点的度(或价)定义为入射边数。如图所示,所有边界顶点4都是入射边缘。 “内部”顶点有5个入射边。

第17页将边界定义为恰好与一个面相邻的边界。

您可能会发现第22页的讨论很有帮助(封闭的2歧管三角网格)