VTK(Visualization Toolkit)是一个开源的、跨平台的三维可视化开发库,用于处理和可视化三维数据。
以下是VTK编译及环境配置的详细步骤:
一、VTK源码下载与解压
1、前往VTK官网下载页面,下载VTK9.4.0的源码压缩包,包括VTK-9.4.0.tar.gz、VTKData-9.4.0.tar.gz和VTKLargeData-9.4.0.tar.gz。
2、将这三个压缩包解压到同一目录下,并在该目录下创建build和install两个文件夹。
二、环境配置Visual Studio中Qt开发环境的搭建-CSDN博客虽然Qt Visual Studio Tools版本与Qt版本之间存在一定的匹配关系,但这种关系并不是绝对的。开发者应根据自己的项目需求、Qt版本和Visual Studio版本选择适合的Qt Visual Studio Tools版本。同时,注意插件的兼容性、系统要求和软件的更新与支持情况。QT5.15.2在线安装教程(详细图文)_qt5.15.2安装教程-CSDN博客C++实践之Qt学习(扩展):Visual Studio中Qt开发环境的搭建_visual studio 与 qt-CSDN博客。
https://blog.csdn.net/a8039974/article/details/145707283?sharetype=blogdetail&sharerId=145707283&sharerefer=PC&sharesource=a8039974&spm=1011.2480.3001.8118
- 安装Visual Studio 2019:确保已安装Visual Studio 2019,并配置好C++开发环境。
- 安装Qt5.15.2:下载并安装Qt5.15.2,确保在安装过程中选择了对应的编译器(如MSVC 2019 64-bit)。
- 配置Qt环境变量:将Qt的安装路径添加到系统的环境变量中,以便在编译过程中能够找到Qt的相关文件。
- 安装CMake:CMake是一个跨平台的自动化建构系统,它用一个名为CMakeLists.txt的文件来描述所有平台的安装(编译过程)。下载并安装CMake,确保版本与VTK9.3.1兼容。
三、使用CMake进行VTK编译配置
1、打开CMake GUI。
2、在“Where is the source code”字段中,指定VTK源码的根目录。
3、在“Where to build the binaries”字段中,指定之前创建的build文件夹。
4、点击“Configure”按钮,选择Visual Studio 2019作为生成器,并选择x64作为目标平台。
5、指定之前创建的install文件夹。
6、在CMake配置过程中,确保启用了对Qt的支持,可以搜索一下Qt,全部改为WANT。CMake会自动检测到已安装的Qt路径(如果已正确配置环境变量)。
7、其他配置
8、配置完成后,检查是否有错误或警告信息。如果没有,点击“Generate”按钮生成Visual Studio工程文件。
四、在Visual Studio中编译VTK
- 打开Visual Studio 2019,并使用CMake生成的工程文件打开项目。
- 在解决方案资源管理器中,找到ALL_BUILD目标,并右键点击选择“生成”或“重新生成”。这将编译VTK的所有模块。
- 编译完成后,找到INSTALL目标,并右键点击选择“生成”或“重新生成”。这将安装VTK的SDK到之前创建的install文件夹中。
五、验证VTK编译结果
5.1、VS验证VTK
第一步:VS创建一个新项目,选择空项目,我们命名为testVTK
。
第二步:设置
testVTK
项目属性:右击testVTK
,选择属性。
- 设置包含目录:
- 设置库目录
- 配置链接器→输入→附加依赖项
使用python代码提取库文件
import os
def main():
BASEDIR = "C:\VTK\VTK-9.4.0-install\lib"
fn = os.listdir(BASEDIR)
with open("lib_r1.txt", 'w') as fp:
for i in fn:
fp.write("{}\n".format(i))
print("hello")
if __name__ == "__main__":
main()
- 向系统环境变量中(Win10)的Path添加
Install
下的bin
文件夹
第三步:测试源码
// CylinderExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
using namespace std;
#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 <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <array>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);// VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
int main(int, char* [])
{
vtkNew<vtkNamedColors> colors;
// Set the background color.
std::array<unsigned char, 4> bkg{ {26, 51, 102, 255} };
colors->SetColor("BkgColor", bkg.data());
// This creates a polygonal cylinder model with eight circumferential facets
// (i.e, in practice an octagonal prism).
vtkNew<vtkCylinderSource> cylinder;
cylinder->SetResolution(8);
// The mapper is responsible for pushing the geometry into the graphics
// library. It may also do color mapping, if scalars or other attributes are
// defined.
vtkNew<vtkPolyDataMapper> cylinderMapper;
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
// The actor is a grouping mechanism: besides the geometry (mapper), it
// also has a property, transformation matrix, and/or texture map.
// Here we set its color and rotate it around the X and Y axes.
vtkNew<vtkActor> cylinderActor;
cylinderActor->SetMapper(cylinderMapper);
cylinderActor->GetProperty()->SetColor(
colors->GetColor4d("Tomato").GetData());
cylinderActor->RotateX(30.0);
cylinderActor->RotateY(-45.0);
// The renderer generates the image
// which is then displayed on the render window.
// It can be thought of as a scene to which the actor is added
vtkNew<vtkRenderer> renderer;
renderer->AddActor(cylinderActor);
renderer->SetBackground(colors->GetColor3d("BkgColor").GetData());
// Zoom in a little by accessing the camera and invoking its "Zoom" method.
renderer->ResetCamera();
renderer->GetActiveCamera()->Zoom(1.5);
// The render window is the actual GUI window
// that appears on the computer screen
vtkNew<vtkRenderWindow> renderWindow;
renderWindow->SetSize(300, 300);
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("Cylinder");
// The render window interactor captures mouse events
// and will perform appropriate camera or actor manipulation
// depending on the nature of the events.
vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
renderWindowInteractor->SetRenderWindow(renderWindow);
// This starts the event loop and as a side effect causes an initial render.
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
注意:设置为X64模式
运行结果:
5.2、VS中Qt验证VTK
第一步:VS创建一个新项目,选择空项目,我们命名为testQtVTK
。
第二步:设置testQtVTK
项目属性:右击testQtVTK
,选择属性,详见5.1节
第三步:创建一个opengl窗口
第四步:添加代码
#include "testQtVTK.h"
#include <QSurfaceFormat>
#include <QVTKOpenGLNativeWidget.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkSmartPointer.h>
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
testQtVTK::testQtVTK(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::testQtVTKClass())
{
ui->setupUi(this);
QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
vtkNew<vtkNamedColors> colors;
vtkNew<vtkSphereSource> sphereSource;
vtkNew<vtkPolyDataMapper> sphereMapper;
sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
vtkNew<vtkRenderer> renderer;
renderer->AddActor(sphereActor);
renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("RenderWindowNoUIFile");
setCentralWidget(ui->openGLWidget);
ui->openGLWidget->setRenderWindow(renderWindow);
}
testQtVTK::~testQtVTK()
{
delete ui;
}
运行结果:
5.3、QCreator验证VTK
第一步:新建一个测试工程
第二步:pro文件添加库及头文件目录
#For Release
INCLUDEPATH += "C:\VTK\VTK-9.4.0-install\include\vtk-9.4"
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkcgns-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkChartsCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkCommonColor-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkCommonComputationalGeometry-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkCommonCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkCommonDataModel-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkCommonExecutionModel-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkCommonMath-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkCommonMisc-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkCommonSystem-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkCommonTransforms-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkDICOMParser-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkDomainsChemistry-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkDomainsChemistryOpenGL2-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkdoubleconversion-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkexodusII-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkexpat-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersAMR-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersCellGrid-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersExtraction-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersFlowPaths-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersGeneral-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersGeneric-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersGeometry-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersGeometryPreview-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersHybrid-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersHyperTree-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersImaging-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersModeling-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersParallel-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersParallelImaging-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersPoints-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersProgrammable-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersReduction-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersSelection-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersSMP-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersSources-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersStatistics-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersTemporal-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersTensor-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersTexture-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersTopology-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkFiltersVerdict-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkfmt-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkfreetype-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkGeovisCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkgl2ps-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkglad-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkGUISupportQt-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkGUISupportQtQuick-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkGUISupportQtSQL-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkhdf5-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkhdf5_hl-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkImagingColor-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkImagingCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkImagingFourier-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkImagingGeneral-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkImagingHybrid-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkImagingMath-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkImagingMorphological-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkImagingSources-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkImagingStatistics-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkImagingStencil-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkInfovisCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkInfovisLayout-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkInteractionImage-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkInteractionStyle-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkInteractionWidgets-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOAMR-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOAsynchronous-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOCellGrid-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOCesium3DTiles-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOCGNSReader-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOChemistry-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOCityGML-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOCONVERGECFD-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOEngys-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOEnSight-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOERF-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOExodus-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOExport-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOExportGL2PS-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOExportPDF-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOFDS-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOFLUENTCFF-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOGeometry-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOHDF-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOImage-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOImport-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOInfovis-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOIOSS-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOLegacy-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOLSDyna-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOMINC-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOMotionFX-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOMovie-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIONetCDF-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOOggTheora-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOParallel-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOParallelXML-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOPLY-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOSegY-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOSQL-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkioss-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOTecplotTable-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOVeraOut-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOVideo-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOXML-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkIOXMLParser-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkjpeg-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkjsoncpp-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkkissfft-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtklibharu-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtklibproj-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtklibxml2-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkloguru-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtklz4-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtklzma-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkmetaio-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtknetcdf-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkogg-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkParallelCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkParallelDIY-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkpng-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkpugixml-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingAnnotation-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingCellGrid-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingContext2D-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingContextOpenGL2-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingFreeType-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingGL2PSOpenGL2-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingHyperTreeGrid-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingImage-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingLabel-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingLICOpenGL2-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingLOD-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingOpenGL2-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingQt-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingSceneGraph-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingUI-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingVolume-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingVolumeOpenGL2-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkRenderingVtkJS-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtksqlite-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtksys-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkTestingCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkTestingRendering-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtktheora-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtktiff-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtktoken-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkverdict-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkViewsContext2D-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkViewsCore-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkViewsInfovis-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkViewsQt-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkWrappingTools-9.4.lib
LIBS += C:\VTK\VTK-9.4.0-install\lib\vtkzlib-9.4.lib
第三步:创建一个opengl窗口
第四步:添加代码
#include "testQtVTK.h"
#include <QSurfaceFormat>
#include <QVTKOpenGLNativeWidget.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkSmartPointer.h>
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
testQtVTK::testQtVTK(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::testQtVTKClass())
{
ui->setupUi(this);
QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
vtkNew<vtkNamedColors> colors;
vtkNew<vtkSphereSource> sphereSource;
vtkNew<vtkPolyDataMapper> sphereMapper;
sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
vtkNew<vtkRenderer> renderer;
renderer->AddActor(sphereActor);
renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("RenderWindowNoUIFile");
setCentralWidget(ui->openGLWidget);
ui->openGLWidget->setRenderWindow(renderWindow);
}
testQtVTK::~testQtVTK()
{
delete ui;
}
运行结果:
其他示例, 前往VTK示例代码页面,下载并运行与Qt+VTK相关的示例代码。
六、注意事项
- 在编译过程中,如果遇到任何错误或警告信息,请仔细检查CMake配置和Visual Studio的输出窗口以获取更多详细信息。
- 确保Qt、CMake和Visual Studio的版本相互兼容,以避免潜在的编译问题。
- 如果需要调试VTK代码,请确保在Visual Studio中选择了Debug配置进行编译。
参考:
- VTK编程指南<二>:VTK9.3.1+VS2019+Qt5.15.2编译及环境配置_vtk源码下载-CSDN博客
- https://zhuanlan.zhihu.com/p/390669033
- https://blog.csdn.net/m0_37251750/category_12841361.html
- 亦我飞也的博客_openCV(1)_51CTO博客
- Visual Studio 2019 + Qt5.15.2 + CMake 3.26.0 + VTK8.2.0 + ITK5.2.1 安装教程 - 盏茶 - 博客园
- VTK9.1.0在Windows10+VS2019+Qt 5.15.2环境下编译安装以及VTK应用于QT_vtk9+qt-CSDN博客
- VTK学习笔记2:windows源代码安装VTK9,并使用Visual Studio 2017配置VTK9-CSDN博客
- VS2019+cmake(3.15.3)+VTK(8.2.0)+配置完成后的demo演示_vtk8.2 vs2019编译 “vtkfreetypetoolsfacerequester”: 未-CSDN博客
- VS2019配置VTK开发环境 - zxc0210 - 博客园