1

我在 OpenMesh 中使用三角形网格(TriMesh),需要进行图中所示的拓扑变化。这些是边缘的开裂,无论是在边界处还是在网格体内。据我所知,有几种方法可以实现:

  1. 删除并重新插入一个或两个相邻面。
  2. 使用该vertex_split()功能并删除添加的额外面。
  3. 使用该split()功能分割面或边,然后删除多余的面。

问题是这些方法都没有保留最初存在的面和半边。我需要在面和相邻的半边上存储属性,因此我需要在开裂时保留它们。有没有办法在 OpenMesh 中做到这一点(可能是低级功能)?理想情况下,应该保留面和相邻的半边,并且唯一新引入的半边应该是裂缝的边界半边(第一种情况下为 2 个,第二种情况下为 4 个)。

编辑:我认为这vertex_split()不会对称地分割半边。根据文档, v_l -- v0 和 v_r--v0 是两条新边,我假设有两条新的半边。如果将来自 v_l--v1 和 v_r--v1 的半边传送到 v_l--v_0 和 v_r--v0,并且将新的半边插入到 v_l--v1 和 v_r--v1 中,将会更加有用。这样,网格的其余部分(相邻面及其相邻的半边)将在vertex_split()操作时保持不变。

Edit2:我想真正的问题是如何将由两个半边组成的边分割成两个单独的边,每个边各有一个初始半边(加上每个新创建的半边)。查看源代码,我有关于如何重新连接这些半边的线索,但它们必须以某种方式在两个单独的边之间分割。

裂缝

4

0 回答 0