如何在vtk中修复破损的表面?

时间:2015-12-05 01:28:35

标签: graphics computational-geometry vtk

我确信普通的vtk用户已经多次看到过如下结果。

Broken surface of a 3D model

我的问题:你如何修复这样破碎的表面?表面上这种整体的原因通常是什么?

我的特定示例是使用vtkBooleanOperationPolyDataFilter和vtkAppendPolyData创建的,但我在不同的场合也见过这种破坏,退化的表面。

非常感谢您的建议。

2 个答案:

答案 0 :(得分:2)

这很可能与数据有关。建议:

  • 许多vtk过滤器都有关于输入的假设,我猜你的输入违反了其中一些假设。例如。 vtkBooleanOperationPolyDataFilter期望输入是多方面的,否则"可能会获得意想不到的结果"。你在为布尔过滤器提供什么?这些输入是歧管吗?
  • 其他一些过滤器有更严格的要求,只能使用三角形表面;在你发布的图片中我想想我看到了四边形。尝试在处理管道的开头通过vtkTriangleFilter运行输入,将所有多边形分成三角形。

  • 检查vtkBooleanOperationPolyDataFilter的第二个输出,其中包含作为折线组的交集,以获取有关可能原因的任何提示。

  • 尝试将中间结果保存到文件中,并期望它们位于处理管道的不同阶段。

如果这些问题都不能解决您的问题,请发布您正在运行的输入,代码和vtk版本以及系统,以便我们重现您的结果。

HTH,

米罗

答案 1 :(得分:0)

在我上面提到的情况下,破碎的表面是由vtkBooleanOperationPolyDataFilter的问题引起的。根据{{​​3}}线程,该算法已得到改进,并且(或将很快)在较新的vtk版本中提供。

我还需要接受这样一个事实,即没有通用的方法可以从vtk中的这些故障中恢复,而且正如mirni指出的那样,它与数据有关。