vtkBooleanOperationPolyDataFilter与SetOperationToDifference在相同的vtkPolyData上运行

时间:2014-04-15 17:51:57

标签: vtk

有没有办法设置一个vtkBooleanOperationPolyDataFilter,这样当它用于获取相同的vtkPolyData之间的布尔差异时,它将导致一个空的vtkPolyData?例如,如果我从vtkPolyData * output开始并执行...

vtkSmartPointer<vtkBooleanOperationPolyDataFilter> diffFilter = 
  vtkSmartPointer<vtkBooleanOperationPolyDataFilter>::New();
diffFilter->SetOperationToDifference();
diffFilter->SetInputData(0,output1);
diffFilter->SetInputData(1,output1); // set input and output to same geometry

... diffFilter操作的结果似乎与output1相同。对于我的应用程序,结果应该是空集。

根据这篇VTK期刊文章http://www.vtkjournal.org/browse/publication/797,该算法假设没有共面三角形,所以我可能认为这是不可能的,我需要查看一个基于CSG的库。

1 个答案:

答案 0 :(得分:1)

Cory Quammen在vtk-users邮件列表中回答了这个问题:

  

可能可能作为主要之前的预处理步骤   算法,但现在存在,过滤器应该失败,我   嫌疑。

     

也许RonaldRömer的这个过滤器会做正确的事情   情况?

     

https://github.com/zippy84/vtkbool