Graphics 如何修复vtk中的损坏表面?
我敢肯定,一个普通的vtk用户已经不止一次看到下面这样的结果 我的问题:你将如何修复这样一个破损的表面?表面上这种完整性的典型原因是什么 我的具体示例是使用VTKBooleaneOperationPolyDataFilter和VTKappendendPolyData创建的,但是我看到了这样的破碎退化曲面也在不同的场合Graphics 如何修复vtk中的损坏表面?,graphics,computational-geometry,vtk,Graphics,Computational Geometry,Vtk,我敢肯定,一个普通的vtk用户已经不止一次看到下面这样的结果 我的问题:你将如何修复这样一个破损的表面?表面上这种完整性的典型原因是什么 我的具体示例是使用VTKBooleaneOperationPolyDataFilter和VTKappendendPolyData创建的,但是我看到了这样的破碎退化曲面也在不同的场合 非常感谢您的建议。这很可能与数据有关。建议: 很多vtk过滤器都有关于输入的假设,我猜您的输入违反了其中一些假设。例如,vtkBooleanOperationPolyDataF
非常感谢您的建议。这很可能与数据有关。建议:
- 很多vtk过滤器都有关于输入的假设,我猜您的输入违反了其中一些假设。例如,
期望输入为流形,否则“可能会获得意外结果”。您正在向布尔过滤器中输入什么?这些输入是流形吗李>vtkBooleanOperationPolyDataFilter
- 其他一些过滤器有更严格的要求,只需要三角化曲面;在你发布的图片中,我想我看到了四边形。尝试在处理管道开始时通过
运行输入,以将所有多边形拆分为三角形vtkTriangleFilter
- 检查
的第二个输出,该输出包含作为多段线集的交点,以了解导致此问题的原因vtkBooleanOperationPolyDataFilter
- 尝试将中间结果保存到文件中,并在处理管道的不同阶段使用它们
Miro在我上面介绍的案例中,破裂表面是由
vtkBooleanOperationPolyDataFilter
的问题引起的。据thread称,该算法已得到改进,并已(或即将)在更新版本的vtk中提供
我还需要接受这样一个事实,即vtk中没有从此类故障中恢复的通用方法,正如mirni所指出的,这些方法与数据有关。@Miro。谢谢你的建议。输入数据是多方面的,我确实使用vtkTriangleFilter,并且我还检查了vtkBooleanOperationPolyDataFilter的第二个输出。目前我认为这是vtkBooleanOperationPoyDataFilter中的一个(可能是数字)缺陷,因为它只是偶尔出现。我已经在vtk邮件列表上发布了这个问题,以便让开发团队知道。@Miro。我希望得到一个关于如何事后修复这些破损表面的通用方法。有些工具具有“网格医生”功能,我想知道如何在vtk中实现这一点。vtkFillHolesFilter可以缝合撕裂,但您的里程可能会有所不同。我注意到您在邮件列表上发布的代码中,实际上在operation2中没有使用trianglefilter,因此可能值得插入sourceTriangles而不是source。此外,您可能希望稍微降低或增加容差,这取决于数据的规模,可能会产生不同。请参阅vtkBooleanOperationPolyDataFilter::SetTolerance(double)