vtkTubeFilter可以用来生成包围一条折线的管道。下面是一个vtkTubeFilter的使用例子。围绕一条线创建一个圆柱形管道。
#include <vtkSmartPointer.h>
#include <vtkLine.h>
#include <vtkCellArray.h>
#include <vtkTubeFilter.h>
#include <vtkLineSource.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
int main(int, char *[])
{
// Create a line
vtkSmartPointer<vtkLineSource> lineSource =
vtkSmartPointer<vtkLineSource>::New();
lineSource->SetPoint1(1.0, 0.0, 0.0);
lineSource->SetPoint2(0.0, 1.0, 0.0);
// Create a mapper and actor
vtkSmartPointer<vtkPolyDataMapper> lineMapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
lineMapper->SetInputConnection(lineSource->GetOutputPort());
vtkSmartPointer<vtkActor> lineActor =
vtkSmartPointer<vtkActor>::New();
lineActor->GetProperty()->SetColor(0.0,0.0,0.1); // Give some color to the line
lineActor->SetMapper(lineMapper);
// Create a tube (cylinder) around the line
vtkSmartPointer<vtkTubeFilter> tubeFilter =
vtkSmartPointer<vtkTubeFilter>::New();
tubeFilter->SetInputConnection(lineSource->GetOutputPort());
tubeFilter->SetRadius(.025); //default is .5
tubeFilter->SetNumberOfSides(50);
tubeFilter->Update();
// Create a mapper and actor
vtkSmartPointer<v