(1)VTK环境配置
文章目录
- 1 概述
- 2 环境
- 3 下载VTK源码
- 4 ubuntu编译VTK
- 5 windows编译VTK
- 6 Qt使用VTK(CMake)
- 7 Qt使用VTK(QMake)
- 8 问题记录
- 9 相关链接
更多精彩内容 |
---|
👉内容导航 👈 |
👉VTK开发 👈 |
1 概述
VTK(Visualization Toolkit,可视化工具包)是一个开源的软件系统,主要用于三维计算机图形学的显示和处理。它提供了一个广泛的数据结构和算法集合,用于处理各种类型的数据,并将其可视化为图形图像。VTK可以处理图像、结构化和非结构化数据,并提供多种可视化技术,包括但不限于体绘制、表面绘制、体积渲染、流线绘制等。
VTK的主要特点包括:
- 跨平台性:VTK可以在多种操作系统上运行,包括Windows、Mac OS X和Linux等。
- 扩展性:VTK的架构设计使得它非常容易扩展。开发者可以根据需要添加新的数据处理和可视化模块。
- 强大的数据处理能力:VTK不仅支持基本的数据处理操作,还提供了高级的数据分析工具,如滤波器、几何操作等。
- 丰富的可视化功能:VTK支持多种可视化技术,能够生成各种高质量的图形图像。
- 与其他软件集成:VTK可以通过多种方式与其他软件集成,比如通过Python、C++等编程语言调用VTK的库函数来实现数据处理和可视化。
- windows下在使用vs2022编译时一直报错,无法编译,改为使用vs2017编译就可以;
- 使用vs2022编译时部分dll无法生成,并且安装后没有
lib/cmake
文件夹。- 使用cmake3.32/25版本都会有一些警告信息,改为使用cmake3.22没有。
2 环境
环境 | 说明 |
---|---|
系统 | ubuntu22.04、windows11 |
cmake | 3.22、3.25 |
Qt | 5.14.2 |
编译器 | g++11.4、msvc2017 |
VTK | 9.4.1 |
3 下载VTK源码
- 进入下载 |VTK地址下载;
- 或者使用
git clone https://github.com/Kitware/VTK.git
命令下载。
4 ubuntu编译VTK
-
使用
sudo apt install cmake-gui
命令安装cmake; -
安装完g++和Qt;
-
使用cmake-gui打开VTK文件夹中的CMakelists.txt文件夹;
-
设置
CMAKE_INSTALL_PREFIX
安装路径; -
将VTK_GROUP_ENABLE_QT设置为YES;
-
将QT5_DIR设置路径
/opt/Qt5.14.2/5.14.2/gcc_64/lib/cmake/Qt5
,如果使用的是QT6就设置的QT6_DIR; -
将VTK_QT_VERSION设置使用的Qt版本;
-
然后点击【Configure】【Generate】;
-
打开终端,进入VTK/build文件夹中,执行
make -j8
开始编译; -
编译完成后执行
sudo make install
安装。 -
编译完成后安装在/opt/VTK路径下,在VTK/lib文件夹中除了有动态库还有cmake文件夹;
-
使用Qt打开
VTK/Examples/GUI/Qt
路径下的工程中的CMakeLists.txt文件; -
然后设置VTK路径,如下所示;
-
设置完成之后编译运行;
5 windows编译VTK
注意:这里我使用vs2022编译一直无法成功,不知道是环境问题还是什么,最后使用的是VS2017编译成功;
-
打开CMake3.22;
-
将VTK文件夹中CMakeLists.txt文件拖进CMake中;
-
点击【Configure】,选择VS2017-64编译器,点击【Finish】;
-
搜索
CMAKE_INSTALL_PREFIX
项,设置编译后的安装路径,不要放在C盘,C盘需要使用管理员权限; -
搜索
QT
,将下列几项改为YES; -
搜索
/INCREMENTAL
,将/INCREMENTAL
改为/INCREMENTAL:NO
,否则在vs2017中编译会失败;改为:
-
然后再点击【Configure】;
-
将
VTK_QT_VERSION
设置为Qt5,如果使用的是Qt6则设置为6; -
然后再点击【Configure】;
-
这时候会出现错误弹窗,这是找不到Qt5的cmake路径;
-
如下图所示,设置
QT5_DIR
路径; -
然后点击【Configure】【Generate】;
-
就会在VTK/build文件夹中生成VTK.sln文件,如果只安装了一个版本的VS,之间点击【Open Project】就可以打开;
-
如果安装了多个版本的VS,则进入VTK/build文件夹,鼠标选中VTK.sln,选择使用vs2017打开;
-
选择【Debug】模式(编译完成后再选择【Release】模式),选择【ALL_BUILD】,生成;
-
编译完成后,没有错误信息,选择【INSTALL】,生成;
-
安装完成后就在设置的
E:/VTK
路径下如下图所示;
6 Qt使用VTK(CMake)
-
创建一个Qt工程,构建工具使用CMake;
-
在CMakeLists.txt文件中添加下列两端代码,引入CMake;
find_package(VTK COMPONENTS CommonCore GUISupportQt InfovisCore RenderingFreeType ViewsQt) if (NOT VTK_FOUND) message("Skipping example: ${VTK_NOT_FOUND_MESSAGE}") return () endif () target_link_libraries(untitled10 PRIVATE ${VTK_LIBRARIES} "Qt${VTK_QT_VERSION}::Gui" "Qt${VTK_QT_VERSION}::Widgets")
-
然后编译,如果VTK没添加进环境变量,CMake编译时是找不到VTK路径的;
-
如下图所示,设置VTK_DIR路径;
-
然后进入UI文件,添加一个OpenGLWidget控件,提升为QVTKRenderWidget或者QVTKOpenGLNativeWidget都可以;
 获取 VTK 推荐的 OpenGL 配置 // 用 QSurfaceFormat::setDefaultFormat() 将其设为 Qt 全局默认格式 QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
-
进入widget.cpp文件,添加下列代码;
#include "widget.h" #include "./ui_widget.h" #include "QVTKOpenGLNativeWidget.h" #include "vtkConeSource.h" #include "vtkPolyDataMapper.h" #include <vtkActor.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> Widget::Widget(QWidget* parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } void Widget::on_pushButton_clicked() { vtkNew<vtkConeSource> cone; vtkNew<vtkPolyDataMapper> mapper; vtkNew<vtkActor> actor; vtkNew<vtkRenderer> renderer; mapper->SetInputConnection(cone->GetOutputPort()); actor->SetMapper(mapper); renderer->AddActor(actor); renderer->SetBackground(0.2, 0.3, 0.4); ui->openGLWidget->renderWindow()->AddRenderer(renderer); }
-
编译运行后效果如下所示;
7 Qt使用VTK(QMake)
-
创建一个Qmake工程;
-
打开pro文件,添加下列代码,链接VTK库,下面代码中有3中链接库的方法,任选一种就可以(推荐3)
#----------------------------------------------------------------方法1:手动链接每一个库文件,比较复杂 # win32:CONFIG(release, debug|release): LIBS += -LE:/lib/VTK/lib/ -lvtkCommonCore-9.4 -lvtkGUISupportQt-9.4 -lvtkInfovisCore-9.4 -lvtkRenderingFreeType-9.4 -lvtkViewsQt-9.4 # else:win32:CONFIG(debug, debug|release): LIBS += -LE:/lib/VTK/lib/ -lvtkCommonCore-9.4d -lvtkGUISupportQt-9.4d -lvtkInfovisCore-9.4d -lvtkRenderingFreeType-9.4d -lvtkViewsQt-9.4d #----------------------------------------------------------------方法2:自动链接所有库文件 # 获取所有库文件名(自动处理路径) CONFIG(release, debug|release):{ LIB_FILES = $$files(E:/lib/VTK/lib/*-9.4.lib) }else:CONFIG(debug, debug|release):{ LIB_FILES = $$files(E:/lib/VTK/lib/*-9.4d.lib) } LIBS += $$join(LIB_FILES, " -L", "-L") # 添加库路径 LIBS += $$LIB_FILES # 直接链接库文件 #----------------------------------------------------------------方法3:自动链接所有库文件(标准链接方法) LIB_PATH = E:/lib/VTK/lib/ # 指定VTK库路径 CONFIG(release, debug|release):{ LIB_FILES = $$files($$LIB_PATH/*-9.4.lib) # 自动获取路径下所有-9.4.lib结尾的库文件路径 }else:CONFIG(debug, debug|release):{ LIB_FILES = $$files($$LIB_PATH/*-9.4d.lib) } LIBS += -L$$LIB_PATH # 添加链接路径 for(lib_file, LIB_FILES) { lib_Name = $$basename(lib_file) # 获取文件名E:/lib/VTK/lib/vtkIOInfovis-9.4d.lib --> vtkIOInfovis-9.4d.lib LIBS += -l$$section(lib_Name, ., 0, 1) # 去除后缀 vtkIOInfovis-9.4d.lib --> vtkIOInfovis-9.4d,并链接库 } #---------------------------------------------------------------- # 添加头文件 INCLUDEPATH += E:/lib/VTK/include/vtk-9.4 DEPENDPATH += E:/lib/VTK/include/vtk-9.4
8 问题记录
-
cmake构建出现
X11::Xcursor not found; custom cursors will be ignored.
sudo apt-get install libxcursor-dev
-
错误信息:
CMake Error at D:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/cmake/Qt5Sql/Qt5SqlConfig. cmake:15 (message): The imported target "Qt5::Sql" references the file "D:/Qt/Qt5.14.2/5.14.2/mingw73_64/plugins/sqldrivers/qsqlmysql.dll"
需要编译安装mysql插件才可以解决。
-
错误信息:vs中编译安装时出现。
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB3073 命令“setlocal C:\Users\MHF\Downloads\cmake-3.22.4-windows-x86_64\bin\cmake.exe -DBUILD_TYPE=Release -P cmake_install.cmake if %errorlevel% neq 0 goto :cmEnd :cmEnd endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone :cmErrorLevel exit /b %1 :cmDone if %errorlevel% neq 0 goto :VCEnd :VCEnd”已退出,代码为 1。 INSTALL D:\VS\2017\Common7\IDE\VC\VCTargets\Microsoft.CppCommon. targets 138
安装路径在C盘,需要修改安装路径或者使用管理员打开vs。
-
错误信息:
vs2017: fatal error LNK1210: 已超过内部 ILK 大小限制
vs中设置使用链接时使用 /INCREMENTAL:NO
或者在CMake中将/INCREMENTAL改为/INCREMENTAL:NO。
9 相关链接
- VTK / VTK · GitLab
- Releases · Kitware/VTK
- 下载 |VTK
- 构建 - VTK documentation
- 构建设置 - VTK documentation
- VTK:VTK 9.4.20250308 文档
- VTK示例