VTK 可视化的流程及步骤
标题引入VTK库和初始化:
引入 VTK
库和 AutoInit
模块,以便使用 VTK
的渲染和交互功能
设置背景颜色和颜色对象:
使用 vtkNamedColors
设置背景颜色和演员颜色。
创建圆柱体源:
使用 vtkCylinderSource
创建一个圆柱体,可以设置分辨率(面的数量)。
创建 PolyData
映射器:
使用 vtkPolyDataMapper
将圆柱体的输出连接到映射器的输入。
创建演员(Actor
):
使用vtkActor创建演员,并将映射器连接到演员。
设置演员属性:
创建渲染器:
使用 vtkRenderer
创建渲染器,并将演员添加到渲染器。
设置渲染器属性:
创建渲染窗口:
使用 vtkRenderWindow
创建渲染窗口,并将渲染器添加到渲染窗口。
设置渲染窗口属性:
创建渲染窗口交互器:
使用 vtkRenderWindowInteractor
创建渲染窗口交互器,并将渲染窗口连接到交互器。
渲染窗口并开始交互:
调用 Render
方法渲染窗口,然后调用Start方法开始交互事件循环。
# include <vtkActor.h>
# include <vtkCylinderSource.h>
# include <vtkNew.h>
# include "vtkAutoInit.h"
VTK_MODULE_INIT ( vtkRenderingOpenGL2) ;
VTK_MODULE_INIT ( vtkInteractionStyle) ; # include <vtkCamera.h>
# include <vtkNamedColors.h>
# include <vtkPolyDataMapper.h>
# include <vtkProperty.h> # include <vtkRenderWindow.h>
# include <vtkRenderWindowInteractor.h>
# include <vtkRenderer.h> # include <array> int main ( )
{ vtkNew< vtkNamedColors> colors; std:: array< unsigned char , 4 > bg{ 26 , 51 , 102 , 255 } ; colors-> SetColor ( "BlackColor" , bg. data ( ) ) ; vtkNew< vtkCylinderSource> cylinder; cylinder-> SetResolution ( 10 ) ; vtkNew< vtkPolyDataMapper> cylinderMapper; cylinderMapper-> SetInputConnection ( cylinder-> GetOutputPort ( ) ) ; vtkNew< vtkActor> cylinderActor; cylinderActor-> SetMapper ( cylinderMapper) ; cylinderActor-> GetProperty ( ) -> SetColor ( colors-> GetColor4d ( "Tomato" ) . GetData ( ) ) ; cylinderActor-> RotateX ( 30.0 ) ; cylinderActor-> RotateY ( - 45.0 ) ; vtkNew< vtkRenderer> renderer; renderer-> AddActor ( cylinderActor) ; renderer-> SetBackground ( colors-> GetColor3d ( "BlackColor" ) . GetData ( ) ) ; renderer-> ResetCamera ( ) ; renderer-> GetActiveCamera ( ) -> Zoom ( 1.5 ) ; vtkNew< vtkRenderWindow> renderWindow; renderWindow-> SetSize ( 300 , 300 ) ; renderWindow-> AddRenderer ( renderer) ; renderWindow-> SetWindowName ( "Cylinder" ) ; vtkNew< vtkRenderWindowInteractor> renderWindowInteractor; renderWindowInteractor-> SetRenderWindow ( renderWindow) ; renderWindow-> Render ( ) ; renderWindowInteractor-> Start ( ) ; return 0 ;
}