表面网格模型有两种,一种是球体或立方体的封闭网格,另一种是开放网格模型,这意味着模型的表面不是闭环。它像空心管一样从某个地方打开。Sp 我想要的是我想检测开放网格模型的边界顶点。闭环网格中没有边界,但在开放网格中,我们必须检测边界顶点以进行一些平滑、细分等操作。请建议我如何选择/检测边界顶点?这样做的最佳方法是什么?通过比较三角形的边缘?给我一些想法?
谢谢。
表面网格模型有两种,一种是球体或立方体的封闭网格,另一种是开放网格模型,这意味着模型的表面不是闭环。它像空心管一样从某个地方打开。Sp 我想要的是我想检测开放网格模型的边界顶点。闭环网格中没有边界,但在开放网格中,我们必须检测边界顶点以进行一些平滑、细分等操作。请建议我如何选择/检测边界顶点?这样做的最佳方法是什么?通过比较三角形的边缘?给我一些想法?
谢谢。
假设你有一个流形网格,那么网格的边界是那些只属于一个多边形的边。不在边界上的边将属于两个多边形。边界顶点是属于边界边的顶点。
找到边界顶点的一种简单方法是遍历所有边,计算它们属于多少个多边形,如果它们只属于一个多边形,则将边的顶点收集为边界顶点。但是,您必须从集合中删除重复的顶点。
第二种方法是让您的网格数据结构在将每条边添加到网格中或将多边形附加到特定边时检查它们。通过这种方式,网格数据结构可以为您保留最新的边界边缘列表,这样当您需要边缘时,您就不必每次都找到它们。这将大大减少确定边界边的开销,尽管插入边和多边形会稍微贵一些。您的网格数据结构也会占用更多内存。
假设您的网格是 2D(或 2.5D)规则的、构造良好的三角剖分。您可以使用此处列出的一些属性:http: //graphics.stanford.edu/courses/cs468-10-fall/LectureSlides/02_Basics.pdf
第 9 页将顶点的度数(或价数)定义为入射边的数量。如图所示,所有边界顶点都有 4 个入射边。“内部”顶点有 5 个入射边。
第 17 页将边界边定义为恰好与一个面相邻的边。
您可能会发现第 22 页上的讨论很有帮助(封闭的 2 流形三角形网格)