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