我正在尝试使用vtkTransform来转换vtkPolyData对象。 但是,我发现的教程使用的是管道,例如:http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filters/TransformPolyData
但是,我正在使用VTK 6.1,它已经为这里提到的独立数据对象删除了一个GetOutputPort方法: http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Replacement_of_SetInput
我试图更换这一行:
transformFilter->SetInputConnection()
与
transformFilter->SetInputData(polydata_object);
不幸的是,数据未正确读取(因为管道设置不正确?)
您是否知道如何在不使用VTK6管道的情况下正确转换独立的vtkPolyData?
谢谢!
答案 0 :(得分:3)
GetOutputPort从来不是数据对象的方法。它始终是vtkAlgorithm的一种方法,它仍然存在于vtkAlgorithm(和子类)中。 polydata_object来自哪里?如果它是阅读器的输出,您有两种选择:
// update the reader to ensure it executes and reads data.
reader->UpdatePipeline()
// now you can get access to the data object.
vtkSmartPointer<vtkPolyData> data = vtkPolyData::SafeDownCast(reader->GetOutputDataObject(0));
// pass that to the transform filter.
transformFilter->SetInputData(data.GetPointer());
transformFilter->Update();
第二个选项是简单地连接管道:
transformFilter->SetInputConnection(reader->GetOutputPort());
关键是确保在不使用管道时将数据传递给变换过滤器之前更新/读取数据。