vtk入门一(基础概念)
(前排声明,个人学习记录,有错误还请指正)
一、vtk是什么
可视化工具包(VTK)是用于操作和显示科学数据的开源软件。它配备了最先进的3D渲染工具,一套用于3D交互的小部件,以及广泛的2D绘图功能。
二、基本构成元素
- vtkConeSource 生成几何数据并提供给
vtkPolyDataMapper
。
vtkConeSource 一个数据源类,用于生成圆锥形的几何体模型。它是VTK提供的一种简单的几何体生成器之一,用于在可视化和计算流程中创建基本的圆锥形状。数据源 你也可以换成别的,比如球,立方体,或者自定义的几何体。
- vtkPolyDataMapper 将几何数据转换为可供
vtkActor
显示的格式。 - vtkActor 包含了几何数据和其它可视化属性,是实际参与渲染的对象。
vtkActor可以与vtkMapper(如vtkPolyDataMapper)结合使用,从而将生成的几何数据(如球体、立方体、圆锥等)映射到渲染器上。vtkMapper负责将vtkPolyData对象中的几何信息映射为渲染器可以理解和显示的形式。
定义可视化属性:vtkActor可以设置和控制渲染时的可视化属性,如颜色、透明度、光照等。这些属性通过vtkProperty对象来管理和配置。
参与渲染流程:作为渲染管道的一部分,vtkActor将包含vtkMapper映射后的数据,并通过vtkRenderer最终渲染到vtkRenderWindow中。这意味着vtkActor是实际上参与形成最终渲染结果的组件之一。
- vtkRenderer 管理和渲染多个
vtkActor
对象,并控制场景属性。
简单来书通过它控制,我们看到的背景,比如下图中的背景是黑色的
- vtkRenderWindow 提供了一个显示场景的窗口。
- vtkRenderWindowInteractor 处理用户输入,允许用户与渲染的场景进行交互。
下面这个可以通过,鼠标拖动来 不同视角观察。
#include "vtkAutoInit.h" VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle); #include <vtkConeSource.h>//源数据 #include <vtkPolyDataMapper.h>//数据映射 #include <vtkRenderer.h>//绘制器 #include <vtkRenderWindow.h>//绘制窗口 #include <vtkActor.h>//演员 #include <vtkCamera.h>//照相机 #include <vtkRenderWindowInteractor.h>//加入交互机制类 int main() { //指针创建一个圆锥cone vtkConeSource* cone = vtkConeSource::New(); cone->SetResolution(8);//圆锥的棱边数 cone->SetHeight(3);//指定高度 cone->SetRadius(1);//指定半径 //实例化一个映射器coneMapper vtkPolyDataMapper* coneMapper = vtkPolyDataMapper::New(); coneMapper->SetInputConnection(cone->GetOutputPort());//源数据输出给映射器输入 //创建一个演员对象coneActor vtkActor* coneActor = vtkActor::New(); coneActor->SetMapper(coneMapper);//为演员指定mapper进行映射 //搭建舞台 实例化对象renderer vtkRenderer* renderer = vtkRenderer::New(); renderer->AddActor(coneActor);//将演员加入场景 renderer->SetBackground(0.0, 0.0, 0.0);//设置场景背景颜色是(R,G,B) //实例化一个窗口对象renWin vtkRenderWindow* renWin = vtkRenderWindow::New(); renWin->SetSize(500, 500);//设置窗口大小宽*高 renWin->AddRenderer(renderer);//将场景renderer加入renWin窗口中 //实例化一个交互对象 vtkRenderWindowInteractor* interactor = vtkRenderWindowInteractor::New();//交互对象加入renWin窗口中 interactor->SetRenderWindow(renWin); renWin->Render();//绘制舞台上内容 interactor->Initialize();//交互对象初始化 interactor->Start();//开始交互事件 //释放内存 cone->Delete(); coneActor->Delete(); coneMapper->Delete(); renderer->Delete(); renWin->Delete(); interactor->Delete(); return 0; }#c++##vtk#