#include "VTKPlatform.h"
//vtkConeSource 是 VTK 库中的一个类,用于生成一个圆锥体的几何形状。
#include <vtkConeSource.h>
//vtkPolyDataMapper 是 VTK 库中的一个类,
//用于将 vtkPolyData 对象(表示三维几何数据)映射到图形渲染上下文中
#include <vtkPolyDataMapper.h>
//在 VTK 库中,vtkActor 是用于将可视化属性(如几何数据、材质、光照)与场景图中的渲染节点相关联的类。
//vtkActor 可以在渲染器中呈现 3D 几何对象。
#include <vtkActor.h>
//在 VTK 库中,vtkRenderer 是一个用于管理渲染场景的类。
//渲染器管理如何在视窗中显示可视化对象,包括摄像机、演员(vtkActor)和其他渲染属性。
#include <vtkRenderer.h>
//在 VTK 库中,vtkRenderWindow 是一个用于显示渲染结果的窗口类。
//它提供了一个可以在屏幕上渲染和显示渲染器(vtkRenderer)内容的容器。
#include <vtkRenderWindow.h>
//添加读取文件的头文件
#include <vtkSTLReader.h>
//vtkAutoInit 是 VTK 库中的一个模块,用于简化 VTK 模块的初始化过程。
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);// 初始化渲染模块
VTK_MODULE_INIT(vtkInteractionStyle);// 初始化交互模块
VTKPlatform::VTKPlatform(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//QVTKOpenGLWidget 是一个用于在 Qt 应用程序中显示 VTK 渲染结果的小部件。
//它是 VTK 和 Qt 的集成组件之一,用于在 Qt 界面中嵌入 VTK 渲染。
//QVTKOpenGLWidget 使用 OpenGL 渲染,提供了在 Qt 应用程序中进行交互式 3D 可视化的能力。
_pVTKWidget = new QVTKOpenGLWidget();
//将 _pVTKWidget 设置为主窗口的中央部件(central widget)。
//在 Qt 中,setCentralWidget 是 QMainWindow 类的成员函数,用于设置主窗口的中央部件,这将决定主要内容区域的布局。
this->setCentralWidget(_pVTKWidget);
// 1.generate data(生成模型)
//一、vtkSmartPointer<vtkConeSource> cone: 这里声明了一个名为 cone 的智能指针,其类型为 vtkSmartPointer<vtkConeSource>。
//智能指针是一种在对象超出范围时自动释放的指针,有助于管理内存和资源(不用delete)。
//二、vtkSmartPointer<vtkConeSource>::New(): 这是一个调用静态成员函数 New() 的方式,用于在堆上创建一个新的 vtkConeSource 实例。
//在 C++ 中,vtkSmartPointer<vtkConeSource>::New() 是用于创建 VTK 对象的常见用法。
//::New():这是一个 VTK 类的静态成员函数,用于在堆上创建一个新的对象实例。在 VTK 中,许多类都具有名为 New() 的静态成员函数,用于创建新的对象。
//New() 函数返回的是一个原始指针,然后被智能指针包装,以实现自动内存管理。
vtkSmartPointer<vtkConeSource> cone = vtkSmartPointer<vtkConeSource>::New();
//从文件中读取数据模型
vtkSmartPointer<vtkSTLReader> reader = vtkSmartPointer<vtkSTLReader>::New();
reader->SetFileName("C:/VTKPlatform/Data/42400-IDGH.stl");
// 2.mapper
//vtkPolyDataMapper 是 VTK 中的一个类,用于将几何数据映射到渲染器以进行可视化。
//使用 vtkPolyDataMapper 将几何数据源生成的几何信息映射到可供渲染的格式。这个过程中会生成绘制所需的顶点、索引等信息。
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
// 3.actor
//演员(actor)是 VTK 中用于表示可渲染对象的类,它们与映射器相关联。
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
// 4.renderer
//vtkRenderer 是 VTK 中的一个类,用于创建渲染器对象,它负责渲染可视化结果并提供了控制视图和相机等功能。
//这段代码创建了一个 vtkSmartPointer 智能指针,指向一个新创建的 vtkRenderer 对象。
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
//然后,我们在 renderer 对象上设置了背景颜色。
renderer->SetBackground(.3, .6, .3);
// 5.connect them
//这段代码片段是用于创建和设置一个简单的图形可视化场景
//这行代码是将一个 mapper 对象与一个数据源(在这里是一个 cone 对象)相连接。
//在这里,cone 是一个锥体,而 mapper 将负责将这个几何体转化为渲染器能够处理的表示形式。
mapper->SetInputConnection(reader->GetOutputPort());
actor->SetMapper(mapper);
renderer->AddActor(actor);
_pVTKWidget->renderWindow()->AddRenderer(renderer);
}
VTKPlatform::~VTKPlatform()
{}
VTK入门001——HelloVTK
于 2023-08-16 16:32:29 首次发布