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#

海康威视公司福利 1160人发布