改善几何形状的可视化

时间:2017-01-24 10:38:31

标签: c++ vtk

我一直在使用VTK一个月,我注意到它是最好的可视化工具。对于我的博士,我试图使用VTK可视化数百个椭球和一些点云。到目前为止,我成功地将椭球和点云可视化,如附图所示。但是,必须开发它。如果没有一些阴影和光照效果,则无法区分单个椭圆体(以绿色显示)。例如,左上角有一些椭球,但无法区分。你能帮我解决这个问题吗?我怎样才能让它们与众不同? 我期待着您的回音。 Elipsoids and point cloud

1 个答案:

答案 0 :(得分:0)

您可以使用轮廓来区分对象。请在下面附上一个代码,演示如何使用vtkPolyDataSilhouette类提取和可视化轮廓。

vtkSmartPointer<vtkPolyDataSilhouette> silhouette = vtkSmartPointer<vtkPolyDataSilhouette>::New( );
silhouette->SetInputData( surface->GetOutput( ) );
silhouette->SetCamera( renderer->GetActiveCamera( ) );
silhouette->SetEnableFeatureAngle( 1 );
silhouette->SetFeatureAngle( 90 );

vtkSmartPointer<vtkPolyDataMapper> silhouetteMapper = vtkSmartPointer<vtkPolyDataMapper>::New( );
silhouetteMapper->SetInputConnection( silhouette->GetOutputPort( ) );
silhouetteMapper->Update( );

vtkSmartPointer<vtkActor> silhouetteActor = vtkSmartPointer<vtkActor>::New( );
silhouetteActor->SetMapper( silhouetteMapper );

renderer->AddActor( silhouetteActor );

另一种方法是使用vtkContourFilter类提取和可视化轮廓。在这里,您可以找到如何使用该类的示例:https://itk.org/Wiki/VTK/Examples/Cxx/PolyData/ExternalContour