vtk学习记录(三)——初识vtkRenderer

目录
  • 前言
  • vtkRenderer
  • 引入vtk窗口
  • 小结

前言

一场疫情打乱了好多人的节奏,我也一样,一不留神半年都快过去了,这期间虽说一直在鼓捣东西吧,不过确实是没啥实质性的进展,索性就继续把vtk的使用来完善下吧。

vtkRenderer

vtk的基类,也就是所有类基本继承于vtkObjectBase,Renderer也是一样,看下图,其实看源码挺好的,可以学习学习别人的思想,借鉴下充实自己。
vtk学习记录(三)——初识vtkRenderer_第1张图片

vtkRenderer个人理解就是个窗口渲染器,也是vtk的核心,没了这玩意儿你没法去操作你的vtkActor,你的vtkInteractorStyle也没有挂载区域,具体的介绍也不多说,看资料看文档吧(我也不会-,-||)。

引入vtk窗口

在上一篇,工程到了能正常运行的地步,但是没有引入vtk相关的,接下来就是把vtk窗口放置到自己的qt工程的时间了。
vtk学习记录(三)——初识vtkRenderer_第2张图片

之前的配置中已经提到这个QVTKWidget,也就是vtk的窗口,至于怎么拖拖到哪看你自己,不会的可以先鼓捣下单纯的qt吧。

保存之后,我们先来运行程序看下效果,如果不出意外的话会跟我这显示的一样。
vtk学习记录(三)——初识vtkRenderer_第3张图片

我们来看下输出的信息。
vtk学习记录(三)——初识vtkRenderer_第4张图片

vtk的新版本不再是QVTKWidget,也就是说这玩意儿没了,一番找资料后发现,哦,原来是改名字了,新版本改成了QVTKOpenGLWidget,更改ui文件后我们再来运行程序。

vtk学习记录(三)——初识vtkRenderer_第5张图片

可以看到图中的vtkOutputWindow,这个窗口是vtk内置的错误信息弹框,也就是说有异常的时候回给你输出信息提示,但其实你在输出一样能看到只是没有这个直观而已。

回头看这个异常信息,也就是说没有重写vtkxxx,没有绑定事件机制什么的,我们在头文件加上下面这几句。

#include "vtkAutoInit.h" 
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);

错误是解决了,不过这个窗口黑压压的也不知道是干啥的,不用急我们来一段Demo。

	vtkSmartPointer coneSource =
		vtkSmartPointer::New();
	coneSource->Update();

	vtkSmartPointer polyData =
		vtkSmartPointer::New();
	polyData = coneSource->GetOutput();

	vtkSmartPointer mapper =
		vtkSmartPointer::New();
	mapper->SetInputData(polyData);

	vtkSmartPointer  actor =
		vtkSmartPointer::New();
	actor->SetMapper(mapper);

	vtkSmartPointer render =
		vtkSmartPointer::New();
	render->AddActor(actor);
	render->SetBackground(0.3, 0.3, 0.3);

	ui.qvtkWidget->GetRenderWindow()->AddRenderer(render);

	vtkSmartPointer rwi =
		vtkSmartPointer::New();
	rwi->SetRenderWindow(ui.qvtkWidget->GetRenderWindow());
	rwi->Initialize();

接下来简单介绍下上面这段的意思,首先我们要先了解下opengl,大致知道模型从点到面到成像的过程,opengl教程地址。

首先我们创建一个Source,也就是点,面数据,通过DataMapper整理映射,然后Actor是模型的实体,至于Renderer就不多说了,RenderWindowInteractor是事件交互集合,也就是默认的交互事件。

引入对应的头文件之后,运行项目,不出意外的话就是下面的效果。

vtk学习记录(三)——初识vtkRenderer_第6张图片

小结

真是不看不知道,竟然大半年都快过去了,这个学习记录好久也没更新了,但是在这段时间鼓捣的东西确实不少,回头整理整理,下一步先整理下vtkCamera这个相机的玩意儿。

你可能感兴趣的:(vtk学习记录(三)——初识vtkRenderer)