VTK学习笔记(一)——VTK环境配置及入门概念总结

VTK学习笔记(一)——VTK概述及相关环境配置

一、VTK环境配置

超好用的VTK环境配置,VTK8.2.0 + VS 2019 + Qt 5.14.0 + PCL 1.11.0
VTK源码,git地址
VTK在线帮助文档

二、VTK基本知识

1、VTK是什么?

VTK的全称是Visualization Toolkit,即可视化工具包,它是一个开源、跨平台、可自由获取、支持并行处理的图形应用函数库。

2、VTK能做什么?

  • 三维计算机图形、图像处理及可视化是VTK主要的应用方向。通过VTK可以根据许多学科(如建筑学、气象学、医学、生物学或者航空航天学)中的实验数据,进行逼真的体、面、光源等渲染,从而帮助人们理解那些采取错综复杂的、规模宏大的数字呈现形式的科学概念或结果。
  • VTK包含一个C++类库,众多的编程语言接口层,包括Python、Java、Tcl/Tk等。VTK是在三维函数库OpenGL的基础上采用面向对象的设计方法发展起来的,它将可视化开发过程中会经常遇到的细节屏蔽起来,并封装了一些常用算法。
  • VTK具有强大的三维图形功能。VTK既支持基于体素的体绘制,又保留了传统的面绘制,从而在极大地改善可视化效果的同时又可以充分利用现有的图形库和图形硬件。

3、常见类的介绍

  • vtkSmartPointer
  • vtkCylinderSource:生成的数据类型是 vtkPolyData,它主要是生成一个中心在渲染场景原点的柱体,柱体的长轴沿着Y轴。
vtkCylinderSource::SetHeight()//设置柱体的高
vtkCylinderSource::SetRadius()//设置柱体横截面的半径
vtkCylinderSource::SetResolution()//设置柱体横截面的等边多边形的边数
  • vtkPolyDataMapper:该类用于渲染多边形几何数据(vtkPolyData),派生自类 vtkMapper,将输入的数据转换为几何图元(点、线、多边形)进行渲染。
vtkCylinderSource::SetInputConnection(vtkCylinderSource::GetOutputPort())
vtkCylinderSource::SetInput(vtkCylinderSource::GetOutput())
  • vtkActor:该类派生自 vtkProp 类,渲染场景中数据的可视化表达通过 vtkProp 的子类负责。vtkProp 子类有 vtkActor(表达场景中的几何数据)和 vtkVolume(表达场景中的体数据);二维空间中的数据则是用 vtkActor2D 表达。Prop依赖于两个对象,一个是 Mapper(vtkMapper)对象,负责存放数据和渲染信息。另一个是属性(vtkProperty)对象,负责控制颜色、不透明度等参数。vtkActor中还可以设置纹理(vtkTexture)对象,用于纹理贴图。
vtkActor::SetMapper(vtkPolyDataMapper)
  • vtkRenderWindow:将操作系统与VTK渲染引擎连接到一起。
vtkRenderWindow::AddRenderer(vtkRenderer)//该方法用于加入vtkRenderer对象
vtkRenderWindow::SetSize()//该方法是从 vtkRenderWindow 的父类 vtkWindow 继承过来的,用于设置窗口的大小,以像素为单位。
  • vtkRenderer:负责管理场景的渲染过程。组成场景的对象包括 Prop,照相机和光照都被整合到一个 vtkRenderer 对象中。一个 vtkRenderWindow 对象可以有多个 vtkRenderer 对象,而这些 vtkRenderer 可以渲染在窗口不同的矩形区域中(即视口) 或者覆盖整个窗口区域。
vtkRenderer::AddActor()//该方法用于将 vtkProp 类型的对象添加到渲染场景中。
vtkRenderer::SetBackground()//该方法是从vtkRenderer的父类vtkViewport继承的,用于设置渲染场景的背景颜色。(1.0,1.0,1.0)为白色。
//除了可以设置单一的背景颜色外,还可以设置渐变背景颜色。
vtkViewport::SetBackground2()//用于设置渐变的另外一种颜色
vtkViewport::SetGradientBackground(1)//打开背景颜色渐变效果
vtkViewport::GradientBackgroundOn()//打开背景颜色渐变效果
vtkViewport::SetGradientBackground(0)//关闭背景颜色渐变效果
vtkViewport::GradientBackgroundOff()//关闭背景颜色渐变效果
  • vtkRenderWindowInteractor:提供平台独立的响应鼠标、键盘和时钟事件的交互机制。vtkInteractorStyle等监听这些消息并进行处理以完成旋转、拉伸和缩放等运动控制。
vtkRenderWindowInteractor::SetRenderWindow()//用于设置渲染窗口,消息是通过渲染窗口捕获到的,所以必须给交互器对象设置渲染窗口。
vtkRenderWindowInteractor::SetInteractorStyle()//用于定义交互器样式,默认的交互器样式为vtkInteractorStyleSwitch
vtkRenderWindowInteractor::Initialize()//表示为处理窗口事件做准备,交互器工作之前必须先调用这个方法进行初始化
vtkRenderWindowInteractor::Start()//表示开始进入事件响应循环,交互器处于等待状态,等待用户交互事件的发生。进入事件响应循环之前必须先调用Initialize()方法
  • vtkInteractorStyleTrackballCamera:交互器样式的一种。父类是 vtkInteractorStyle,除了 vtkInteractorStyleTrackballCamera之外,VTK还定义了其他多种交互器样式,如 vtkInteractorStyleImage,主要用于显示二维图像时的交互。

三、不同类型的数据集

  • vtkImageData:图像数据
  • vtkPolyData:多边形数据
  • vtkRectilinearGrid:线性网络
  • vtkStructuredGrid:结构网络
  • vtkUnstructuredGrid:非结构网络
  • vtkUnstructuredPoints:非结构点

你可能感兴趣的:(VTK,vtk,c++,图形学)