VTK安装与项目实例

VTK安装与项目实例

所需软件的安装

本文中VTK项目的开发所用语言为C++,使用Vs+Qt进行开发,另需要CMake进行编译安装。

Vs+Qt安装与配置

具体步骤见:Vs+Qt下载与配置

CMake安装

下载地址
无描述
常规软件安装步骤。

VTK的下载安装

下载地址
在这里插入图片描述
解压后得到源码文件,开始用cmake进行编译
路径选择如下图所示,第一项为源码位置(CMakeLists.txt所在),第二项为生成项目的位置,这里简单设置了子文件夹,如果没有该路径会有提示框提醒创建。
Grouped选项勾选后让各条目分组
Advanced选项勾选后给出更多可供修改的条目

点击Configure按钮,弹出对话框,第一项需要选择IDE,选择之前安装的版本即可,如VS2019,第二项选x64,第三项可空

IDE选择后,需要处理出现的红色条目,这里主要注意的有四个选项:(没去测试后面两项按照默认选项是什么结果,这里均选择了WANT)
BUILD_EXAMPLES: 如果想学习官方示例程序,那么就勾选上
CMAKE_INSTALL_PREFIX: 这个表示vtk最后生成的链接库的位置,默认是C:/ProgramFiles/VTK,值得一提的是最后生成的库并不大,只有约200MB,如果C盘不紧张,可以不作修改,但是放在C盘要注意创立文件夹的权限,第一次安装时,我即使用管理员权限进行操作,也出现了权限错误相关的问题,所以这里建议别放在C盘,在其他盘准备一个位置即可。
VTK_Group_Imaging: 勾选上
VTK_Group_Qt: 勾选上

如果电脑上有多个Qt,比如有专门官网下载安装的,还有一些软件携带的,又或者python环境中自带的,所以建议检查一下Qt的路径是否是想要的版本,如果不是可以逐一更改相关路径,或者在Configure前就在系统环境中把Qt的路径设置好。
在这里插入图片描述
以上设置好后就可以继续Configure,只要红色条目全部变白,就可以点击Generate,消息框提示Generating done以后说明工程生成成功。
在这里插入图片描述
找到新生成的VS项目文件位置,也就是上面第二项所选路径,打开VTK.sln(如果之前CMAKE_INSTALL_PREFIX选择的非系统盘,就可以直接打开,如果是系统盘,就需要以管理员权限打开)
打开项目后,找到INSTALL,右键选择生成
在这里插入图片描述
生成结束提示没有错误后,就可以在CMAKE_INSTALL_PREFIX所选路径找到所需文件
在这里插入图片描述

VTK项目的开发实例与配置

因为这里举的实例是在VS中操作,需要Qt插件,所以 Vs+Qt安装与配置中的插件要配置好。
这里的实例项目将进行一个网格模型的表面积以及体积计算和模型展示。

创建Qt项目

打开VS,选择创建新项目
在这里插入图片描述
这里选择哪一种应该影响不大,主要是为了在项目中可以正常使用Qt的库,这里选择了红框内的选项
下一步项目名称、路径自行选择,然后创建。
弹出对话框,Next,这里均是默认选择
在这里插入图片描述
在这里插入图片描述
创建完成后,有这些内容:
在这里插入图片描述
复制以下测试代码放入main.cpp,路径要记得改,部分代码出自实例

#include <iostream>
#include <QApplication>
#include <QFileDialog>
#include <qDebug>

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
#include"vtkSmartPointer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkCylinderSource.h" 
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkOBJReader.h"
#include "vtkTriangleFilter.h"
#include "vtkMassProperties.h"

int main(int argc, char* argv[])
{
    QApplication a(argc, argv);
    //读取stl的文件
    //vtkSTLReader* part = vtkSTLReader::New();
    vtkOBJReader* part = vtkOBJReader::New();
    QString file_path = QFileDialog::getOpenFileName(NULL, QObject::tr("Select OBJ File"), // 标题
        QObject::tr("C:\\Users"),        // 初始路径
        "Text(*.obj);;All(*.*)"); // 目标文件类型
    if (file_path.isEmpty() == true) return 1;

    QByteArray ba = file_path.toLocal8Bit();
    const char* file_path_str = ba.data();
    part->SetFileName(file_path_str);
    part->Update();

    //vtkPolyDataMapper 渲染多边形几何数据(vtkPolyData)
    //派生自类vtkMapper,将输入的数据转换为几何图元(点、线、多边形)进行渲染
    vtkPolyDataMapper* partMapper = vtkPolyDataMapper::New();
    partMapper->SetInputConnection(part->GetOutputPort());

    vtkSmartPointer< vtkTriangleFilter > triangleFilter = vtkSmartPointer< vtkTriangleFilter >::New();
    triangleFilter->SetInputData(part->GetOutput());
    triangleFilter->Update();

    vtkSmartPointer< vtkMassProperties > polygonProperties = vtkSmartPointer< vtkMassProperties >::New();
    polygonProperties->SetInputData(triangleFilter->GetOutput());
    polygonProperties->Update();

    double area = polygonProperties->GetSurfaceArea();
    double vol = polygonProperties->GetVolume();

    qDebug() << "Data area is:" << QString::number(area) << "Data volume is: " << QString::number(vol);

    vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New();
    cylinderActor->SetMapper(partMapper);

    //vtkRenderer 负责管理场景的渲染过程:包括Prop,照相机(Camera)和光照(Light)都被集中在一个vtkRenderer对象中
    //一个vtkRenderWindow中可以有多个vtkRenderer对象
    //vtkRenderer可以渲染在窗口中不同的矩形区域中(即视口)
    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();

    renderer->AddActor(cylinderActor);      //添加vtkProp类型的对象到渲染场景中
    //还有许多SetBackground的细节知识点,我跳过了
    renderer->SetBackground(0.1, 0.2, 0.4); //设置渲染场景的背景颜色(R、G、B),取值范围0.0-1.0

    //vtkRenderWindow 将操作系统(windows , linux等)与VTK渲染引擎连接到一起,
    vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
    renWin->AddRenderer(renderer); //加入vtkRenderer对象
    renWin->SetSize(300, 300);     //用于设置VTK窗口的大小,以像素为单位。    可以试试(500,500)(1000,500)等

    //vtkRenderWindowInteractor 提供平台独立的响应鼠标、键盘和时钟事件的交互机制
    vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    iren->SetRenderWindow(renWin); //SetRenderWindow(renWin)设置渲染窗口,消息是通过渲染窗口捕获到的,所以必须要给交互器对象设置渲染窗口

    //交互器样式的一种,该样式下,用户是通过控制相机对物体作旋转、放大、缩小等操作
    vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
    iren->SetInteractorStyle(style); //定义交互器样式,默认的交互样式为vtkInteractorStyleSwitch
    iren->Initialize();              //为处理窗口事件做准备,交互器工作之前必须先调用这个方法进行初始化。
    iren->Start();                   //开始进入事件响应循环,交互器处于等待状态,等待用户交互事件的发生。
    //进入事件响应循环之前必须先调用Initialize()方法。
    return 0;
}

请添加图片描述

项目环境配置

bin目录

在系统环境PATH目录中加入VTK的bin目录
在这里插入图片描述

include目录

在在项目属性->C/C+±>常规->附加包含目录 中加入VTK的include目录
在这里插入图片描述

lib目录

在在项目属性->链接器->常规->附加库目录 中加入VTK的lib目录
在这里插入图片描述

lib文件

在在项目属性->链接器->输入->附加依赖项 中加入VTK的lib,这里尽力选择了所有lib文件 D:***\VTK9.2.2\lib*.lib
在这里插入图片描述
设置完成后,红色提示将全部消失
在这里插入图片描述

运行代码,在弹出提示框中选择OBJ文件,得出计算结果,以及模型显示。
在这里插入图片描述在这里插入图片描述

参考文章

VTK安装 win10+VS2017+VTK8.1.2+QT5.12编译安装
VTK教程1--------VTK在win10下的安装
02-VTK编译安装
VTK简单实例学习(1)
VTK体积&表面积测量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值