要想入门vtk,了解vtk的可视化流程是非常有必要的。
VTK可视化流程
VTK可视化流程主要分为数据处理和渲染两个过程,有一张不错的可视化流程图把这个过程理解为一个舞台剧。
VTK+VS运行圆锥示例
先来运行一个简单的示例代码来理解VTK运作的过程,也可以运行这个案例来测试自己的VTK是否配置成功。
#include <vtkAutoInit.h>
#include<vtkActor.h>
#include<vtkSmartPointer.h>
#include<vtkPolyDataMapper.h>
#include<vtkConeSource.h>
#include<vtkRenderer.h>
#include<vtkRenderWindow.h>
#include<vtkCamera.h>
#include<vtkNamedColors.h>
// VTK_MODULE_INIT是用于自动初始化所需模块/库的宏
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
int main() {
// DataObject部分
// VTK自带的vtkConeSoure类,圆锥类
vtkSmartPointer<vtkConeSource> cone = vtkSmartPointer<vtkConeSource>::New();
cone->SetHeight(3.0);//圆锥高度
cone->SetRadius(1.0);//圆锥半径
cone->SetResolution(10);//圆锥面数
// 数据映射部分
// 进行数据映射,转化为可被渲染引擎可视化表达的数据
vtkSmartPointer<vtkPolyDataMapper> coneMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
coneMapper->SetInputConnection(cone->GetOutputPort());
// Rendering部分
// 映射生成几何数据vtkActor
vtkSmartPointer<vtkActor> coneActor = vtkSmartPointer<vtkActor>::New();
coneActor->SetMapper(coneMapper);
// 把几何数据添加到环境中进行渲染
vtkSmartPointer<vtkRenderer> coneRender = vtkSmartPointer<vtkRenderer>::New();
coneRender->AddActor(coneActor);
// 把渲染好的放到展示窗口中
vtkSmartPointer<vtkRenderWindow> renWindow = vtkSmartPointer<vtkRenderWindow>::New();
renWindow->AddRenderer(coneRender);
renWindow->SetSize(300, 300);// 展示窗口大小
for (auto i = 0; i < 360; ++i)
{
renWindow->Render();// 窗口渲染显示
coneRender->GetActiveCamera()->Azimuth(1);// 旋转相机
}
return EXIT_SUCCESS;
}
运行成功后会有一个自动旋转的圆锥: