如何判断2个三角形网格的平等



在3D空间中给定三角形网络。旋转并翻译所有点以生成新的网格b。

仅通过其顶点和面孔来确定A和B的平等?

网格的拓扑并不重要,我只关心几何平等,即使改变了三角剖分,A和B也应相等。这是诸如三角形网格的变换内变量问题之类的东西,仅考虑翻译和旋转。

仅假设三角形面孔。

  1. 比较三角形的数量

    如果不匹配返回 false

  2. 按其大小进行三角形

    如果两个网格之间的尺寸和顺序不匹配。

  3. 在形状中查找独特的三角形

    因此,是最大或最小的区域,边缘长度或其他。如果不存在,那么您需要其他独特的功能,例如2个最遥远的点等...如果没有,则您需要 ransac 为此。

    对齐两个网格,因此匹配的三角形(或特征点(在两个网格中都具有相同的位置。

  4. 比较匹配的顶点

    因此,在网格b中找到与每个顶点的最接下顶点a网格a,如果它们的距离越过某个阈值返回 false

  5. 返回 true

如果网格没有 3 的不同功能对此测试或使用 RANSAC 的组合。

还有#3 的替代方案,例如找到质心,最接近和最接近的点,并将它们用作基础向量而不是三角形。这需要单个顶点或关闭的顶点组为最小和最大。如果不像Cube Icosahedron这样的对称网格中不存在,那么您是不幸的。

您可以使用网格中的其他功能(例如颜色,纹理坐标...

(来增强它。

[EDIT1]只是对部分方法的疯狂思考,而无需Aligninig

  1. 计算平均点C

  2. 计算以 C

    为中心的最大铭文球

    仅距离C到最接近的距离

  3. 计算以C

    为中心的最小的绝非球体

    C到最远的距离

  4. 比较形状之间的半径

    如果不是相等的形状,则确定不完全相同。如果相等,则必须检查上面的方法。

完成 @spektre的答案,如果两个网格不完全相同,那至少有一对节点或边缘,这些节点或边缘并不能完全重叠,您可以使用hausdorff量化两个网格之间的"差异"。

3D形状相似性(Heung-Yeung Shum,Martial Hebert,katsushi ikeuchi(在两个三角形网格之间计算出相似性得分,通过比较半符号球体,以比较已变形,以近似于原来网眼。

在这种情况下,网格有望相同(由于转换而导致一些小误差(,因此可以构建受论文启发的算法如下:

  1. 将每个网格A的顶点(B(的顶点分组为它们的数量。
  2. 从网格A中选择一个顶点V_A,从网格B中选择一个V_Bi,均为邻居数量相同。
  3. 顶点及其N邻居V_n1 ... V_nN形成了N三角形的三角形迷。构造N转换将顶点V_BiV_A和每个可能的风扇(从其他邻居 V_Bn1V_Bn2,..., V_BnN开始(到 V_An1 ... V_AnN
  4. A中找到从B的每个顶点到最接近的顶点的距离总和的最小值,对于每个N,每个顶点V_Bi都会转换。

如果发现了接近零的总和,则转换的网格B的顶点与A的顶点一致,可以构建它们之间的映射,您可以根据需要进行进一步的拓扑,边缘存在或方向检查。<<<<<<<<<<<<<<<<<</p>

相关内容

  • 没有找到相关文章

最新更新