【问题标题】:compare two 3Dmesh比较两个 3Dmesh
【发布时间】:2013-12-18 08:54:00
【问题描述】:

我需要找到一种算法,它使用两个 3D 网格(一组点和三角形)检查是否有可能找到一个 4x4 矩阵,将第一个网格转换为第二个网格。 矩阵可以包含缩放、旋转和平移,点的顺序和三角形的顺序不能相同。

是否有人已经找到有关此问题的论文/文章/学术研究?

【问题讨论】:

  • 您可以使用ICP 的变体。要引入缩放,您可以将两个模型重新缩放为单位边界球。将点相互拟合后,您必须检查三角形。

标签: algorithm math 3d


【解决方案1】:

我想到了这个问题,我制定了这个算法: 比较 2 目 O1 和 O2

  1. 将两个中心都移动到原点,现在我们将 T1 应用于 O1,将 T2 应用于 O2(我更喜欢这种方式,而不是只移动一个对象)
  2. 取两个网格 F1 和 F2 的较远点,距离为 d1 和 d2,并将 O2 的比例设置为 s2=d1/d2,现在 2 个对象的大小相同
  3. 创建一个旋转(使用查看算法),使 F2 与 F1 重合。
  4. 取 O1 中的点 P1 作为圆中唯一的点,该圆由他到 F1 的距离 df1 和他到原点 fp 的距离定义(它是一个圆,因为它是 2 个球体的交点)
  5. 在 O2 中找到与原点和 F2 的距离相同的点 P2(现在与 F1 重合),如果该点不存在,则 2 个对象不同。
  6. 沿轴 Origin-F2 创建一个旋转,使 P2 与 P1 重合
  7. 如果对于 O1 中的每个点,O2 中都有一个点在 O2 中具有相同的位置,并且对于 O1 中的每个三角形,在 O2 中都有一个处于相同位置的三角形

    那么这两个网格是一样的。

    否则 2 个网格不同。

【讨论】:

  • 算法很简单:)
  • 好一个。但请注意此算法的局限性。可能有不止一个最远的顶点(例如,对于球体或圆环)。这同样适用于 P1 的选择。唯一距离 df1 和 fp 可能没有意义。例如。如果尖端是最远的顶点并且它的轴穿过原点,则为圆锥。然后所有其他顶点与尖端和原点的距离相同。
  • 另一个问题,比较浮点值,由于它们的存储和处理方式有一定的容差(例如 4.9999876 和 5.0000142 可能相同)
猜你喜欢
  • 2016-10-24
  • 2013-05-03
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多