Vtksmartpoint 类似于pcl的ptr 智能指针
1,需要有资源数据 <vtkspheresource> <vtkimagedata>
Vtksmartpoint<vtkspheresource> sphere1 =Vtksmartpoint<vtkspheresource>::New();
2,数据需要颜色查找表 <vtkLookupTable>,查找表里设置数据范围,映射类型是彩虹色,还是黑白,都可以设置;
作用是从将黑白图像的灰度去对应4色图或者3色图的数据。
vtkSmartPointer<vtkLookupTable> lut = vtkSmartPointer<vtkLookupTable>::New()
3,滤波器 <vtkImageMapToColors> 作用是将数据通过查找表获取的内容给到映射器mapper。怎么理解呢,一个灰度图,由滤波器和对应的查找表可以转化成一个rgb图,或者说rgba数据图。这样就成为彩色的图了。
vtkSmartPointer<vtkImageMapToColors> map_to_colors = vtkSmartPointer<vtkImageMapToColors>::New();
map_to_colors->SetInputData(vtk_image); //添加单通道vtk图像
map_to_colors->SetLookupTable(lut); //添加颜色查找表lut
map_to_colors->SetOutputFormatToRGB(); // 输出 RGB 图像
//map_to_colors->SetOutputFormatToRGBA(); // 输出 RGBA 图像
map_to_colors->Update();
4,映射器mapper <vtePolyDataMapper> mapper就是来承接滤波器转化的rgb或者rgba的结果
Vtksmartpointer<vtepolydatamapper>spheremapper =Vtksmartpointer<vtepolydatamapper>::NEW()
***如果是vtkimagedata的actor,会自带mapper,不需要创建
5,演员,由演员去演<vteactor> 把转换后的数据交给actor去表演。
Vtksmartpointer<vteactor> image_actor=Vtksmartpointer<vteactor>::New();
image_actor->setmapper(spheremapper )
//或者直接用由actor的mapper跟滤波器的结果相连,并设置插值方式
image_actor->GetMapper()->SetInputConnection(map_to_colors->GetOutputPort());
image_actor->GetProperty()->SetInterpolationTypeToNearest(); //获取演员属性,设置它的差值方式是最近邻。
6,演员的舞台<vtkrender> render上可以放很多actor, render上有默认灯光
Vtksmartpointer<vterender> render =Vtksmartpointer<vterender>::New();
Render->removeallviewprops();
Render->addactor(sphere1actor);添加演员1,2,3,4
Render->setbackgtound(0.5,0.6,0.1);设置背景
Render->removealllights(); 移除灯光
7,窗口<vtkrenderwindow> 将舞台放在窗口里演
Vtksmartpointer<vtkrenderwindow> renderwindow =Vtksmartpointer<vtkrenderwindow>::New();
Renderwindow->addrender(Render);添加舞台
Renderwindow->setsize(500,500);
Renderwindow->setwindowname('vtk');
8,窗口放在qt的ui控件里进行显示
ui->widget->setRenderWindow(render_window);
9, 鼠标 键盘 交互(演员与观众的互动)
Vtksmartpointer<vtkrenderwindowinteractor> iren =Vtksmartpointer<vtkrenderwindowinteractor>::New();
iren ->initialize();交互初始化
Iren->start();
基本完成。