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#
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务