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 ;
}