VTK9.3.1在Windows10+VS2022+Qt 5.14.2环境下编译安装以及VTK应用于QT

概要

本文主要介绍VTK9.3.1如何在Windows10上使用VS2022和QT进行编译安装。

搭建编译环境

  1. 先从VTK官网下载VTK9.3.1的源码,VTK下载地址
    在这里插入图片描述
  2. 我们可以按照官方推荐的编译方式进行编译,首先设置三个文件夹

VTK-9.3.1-src:存放从VTK官方下载的源码
VTK-9.3.1-build:存放使用Cmake编译VTK生成的二进制文件
VTK-9.3.1-release:存放使用Visual Studio生成的lib文件的Release版本

在这里插入图片描述
3.从Cmake官方下载CMake用于编译VTK库,Cmake下载地址
在这里插入图片描述
我的系统是Windows10_X64,所以我选在了第一个,选择哪一个下载根据自己系统决定即可。

编译源代码

打开已经安装的CMake,选在VTK的源码存放路径VTK-9.3.1-src,以及build存放路径VTK-9.3.1-build,然后点击按钮Configure,此时会弹出窗口选择Visual Studio 17 2022,编译x86还是x64可以自己选择。我编译的的x64版本。点击Finish进行编译。
在这里插入图片描述
编译完成后会出现一些红色选项,我们首先需要解决这些红色选项。
在这里插入图片描述
我们可以自己选择VTK库的安装路径,CMAKE_INSTAKK_PREFIX就是VTK库要安装的位置,V通过VTK源码编译完成后生成的库文件所在位置,在这里我把安装路径修改为VTK-9.3.1-release,然后在后续的编译中,生成的VTK就会默认存放在路径VTK-9.3.1-release下。
在这里插入图片描述
最后需要在搜索窗口中搜索Qt,将所有的选项从DEFAULT改为WANT即可。设置完成后点击Configure继续编译。
在这里插入图片描述
Configure编译结束后,仍然会出现红色区域。出现红色区域的原因主要是让我们选择Qt的版本,我们用的版本是5.14.2,所以Qt版本选择5就可以了。即VTK_QT_VERSION为5。
在这里插入图片描述
而Qt的位置,我们只需要在Qt安装成功后,将其加入到环境变量中,那么就会自动检测到Qt的安装路径。
在这里插入图片描述
以上配置完成后,继续点击按钮Configure,编译完成后,如果此时只有白色界面,那么恭喜你,代表编译成功了。然后点击按钮Generate,完成后如果也只有白色界面,代表没有错误。最后点击Open Project就会打开Visual Studio 2022。
在这里插入图片描述
Visual Studio 2022编译并安装VTK
在这里插入图片描述
我编译的是Release x64版本的,右键选择项目ALL_BUILD然后选择生成进行编译。
在这里插入图片描述
可以看出已经编译成功了,接下来我们来生成VTK库文件
在这里插入图片描述
右键点击INSTALL项目,选择生成。此时生成的VTK库文件都存放在VTK-9.3.1-release路径下。
在这里插入图片描述

Visual Studio 2022 + Qt使用VTK

VTK编译成功后,当然是先来试一试能否正常使用了。我是采用VS2022+Qt写了一个测试demo。VS2022如何配置Qt环境可以自行搜索相关教程,这里就不做赘述了。
首先在Qt的窗口界面添加控件openGLWidget,然后右键点击提升为,提升为QVTKOpenGLNativeWidget,界面如下所示:
在这里插入图片描述
在这里插入图片描述
示例代码:

#include "QtVTKDemo.h"

#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCylinderSource.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkRenderer.h>

#include <array>

QtVTKDemo::QtVTKDemo(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

   QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
   
   vtkNew<vtkNamedColors> colors;
   std::array<unsigned char, 4> bkg = { {26, 51, 102, 255} };
   colors->SetColor("BkgColor", bkg.data());

   vtkNew<vtkCylinderSource> cylinder;
   cylinder->SetResolution(8);

   vtkNew<vtkPolyDataMapper> cylinderMapper;
   cylinderMapper->SetInputConnection(cylinder->GetOutputPort());

   vtkNew<vtkActor> cylinderActor;
   cylinderActor->SetMapper(cylinderMapper);
   cylinderActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
   cylinderActor->RotateX(30.0);
   cylinderActor->RotateY(-45.0);

   vtkNew<vtkRenderer> renderer;
   renderer->AddActor(cylinderActor);
   renderer->SetBackground(colors->GetColor3d("BkgColor").GetData());
   renderer->ResetCamera();
   renderer->GetActiveCamera()->Zoom(1.5);

   vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
   renderWindow->AddRenderer(renderer);
   ui.openGLWidget->setRenderWindow(renderWindow);
}

效果展示:
在这里插入图片描述
完整代码下载

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值