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

max*_*yne 6 math graphics geometry vertex computational-geometry

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

谢谢.

Riv*_*ver 10

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

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

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


Thr*_*986 6

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

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

第17页将边界定义为与一个面完全相邻的边界.

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