1、下载VTK_9.0.0,下载链接:https://vtk.org/download/
2、将VTK解压至相应位置,建议放在除系统盘的其他盘,因为VTK编译后有好几个G,本文中的目录是D:\Program Files\VTK-9.0.0.rc1
3、在其目录下D:\Program Files\VTK-9.0.0.rc1建立一个文件夹Build用来存放编译后的文件夹内
注意:“Where to build the binaries”下的文件夹路必须与“CMAKE_INSTALL_PREFIX”路径相同,编译后生成的lib文件夹便在此目录下!
编译成功如下图:
4、打开所编译文件如下图所示,检测是否存在lib文件夹,并打开INSTALL
5、将INSTALL设置为启动项,选中“INSTALL”右击鼠标点击“Set as StartUp Project”;
6、菜单栏“Bulid”->“Batch Build”弹出对话框如右图所示,分别勾选INSTALL下Debug与Release,然后点击Build 便可进行Debug和Release下编译生成.lib和dll文件,所需时间长,耐心等待。
7、编译完成后对VTK进行配置:
(1)新建一个工程项目打开"View"->"Other Windows"->"Property Manager"
(2) 在"Property Manager"选择Debug x64右击鼠标新建一个.props,新建一个命名然后再次.props环境下进行VTK配置
(3)在新建的.props右击选择属性弹出如下图所示的对话框,在"C/C++"->"General"->Additional Include Directories下添加如下路径:D:\Program Files\VTK-9.0.0.rc1;D:\Program Files\VTK-9.0.0.rc3\Build\include\vtk-9.0
(4)同样在属性界面打开“Linker”->"General"->Additioanl Library Directories添加以下路径:D:\Program Files\VTK-9.0.0.rc3\Build\lib
(5)同样属性界面"Linker"->"Input"->"Additional Dependencies"添加编译生成的.lib文件,在lib文件夹里新建一个TXT文本,打开TXT文本并写入“DIR *.* /B>result.txt”并将其另存为VTK_9.0.0_generate_lib.bat,然后再其lib文件夹内运行,将会在其文件夹内生成一个result.txt的文本,文本里已经包含所编译生成的.lib文件名,将其拷贝并粘贴在图中所示的位置中。
贴出VTK_9.0.0所有.lib 文件的名称:
vtkChartsCore-9.0.lib
vtkChartsCore-9.0d.lib
vtkCommonColor-9.0.lib
vtkCommonColor-9.0d.lib
vtkCommonComputationalGeometry-9.0.lib
vtkCommonComputationalGeometry-9.0d.lib
vtkCommonCore-9.0.lib
vtkCommonCore-9.0d.lib
vtkCommonDataModel-9.0.lib
vtkCommonDataModel-9.0d.lib
vtkCommonExecutionModel-9.0.lib
vtkCommonExecutionModel-9.0d.lib
vtkCommonMath-9.0.lib
vtkCommonMath-9.0d.lib
vtkCommonMisc-9.0.lib
vtkCommonMisc-9.0d.lib
vtkCommonSystem-9.0.lib
vtkCommonSystem-9.0d.lib
vtkCommonTransforms-9.0.lib
vtkCommonTransforms-9.0d.lib
vtkDICOMParser-9.0.lib
vtkDICOMParser-9.0d.lib
vtkDomainsChemistry-9.0.lib
vtkDomainsChemistry-9.0d.lib
vtkdoubleconversion-9.0.lib
vtkdoubleconversion-9.0d.lib
vtkexodusII-9.0.lib
vtkexodusII-9.0d.lib
vtkexpat-9.0.lib
vtkexpat-9.0d.lib
vtkFiltersAMR-9.0.lib
vtkFiltersAMR-9.0d.lib
vtkFiltersCore-9.0.lib
vtkFiltersCore-9.0d.lib
vtkFiltersExtraction-9.0.lib
vtkFiltersExtraction-9.0d.lib
vtkFiltersFlowPaths-9.0.lib
vtkFiltersFlowPaths-9.0d.lib
vtkFiltersGeneral-9.0.lib
vtkFiltersGeneral-9.0d.lib
vtkFiltersGeneric-9.0.lib
vtkFiltersGeneric-9.0d.lib
vtkFiltersGeometry-9.0.lib
vtkFiltersGeometry-9.0d.lib
vtkFiltersHybrid-9.0.lib
vtkFiltersHybrid-9.0d.lib
vtkFiltersHyperTree-9.0.lib
vtkFiltersHyperTree-9.0d.lib
vtkFiltersImaging-9.0.lib
vtkFiltersImaging-9.0d.lib
vtkFiltersModeling-9.0.lib
vtkFiltersModeling-9.0d.lib
vtkFiltersParallel-9.0.lib
vtkFiltersParallel-9.0d.lib
vtkFiltersParallelImaging-9.0.lib
vtkFiltersParallelImaging-9.0d.lib
vtkFiltersPoints-9.0.lib
vtkFiltersPoints-9.0d.lib
vtkFiltersProgrammable-9.0.lib
vtkFiltersProgrammable-9.0d.lib
vtkFiltersSelection-9.0.lib
vtkFiltersSelection-9.0d.lib
vtkFiltersSMP-9.0.lib
vtkFiltersSMP-9.0d.lib
vtkFiltersSources-9.0.lib
vtkFiltersSources-9.0d.lib
vtkFiltersStatistics-9.0.lib
vtkFiltersStatistics-9.0d.lib
vtkFiltersTexture-9.0.lib
vtkFiltersTexture-9.0d.lib
vtkFiltersTopology-9.0.lib
vtkFiltersTopology-9.0d.lib
vtkFiltersVerdict-9.0.lib
vtkFiltersVerdict-9.0d.lib
vtkfreetype-9.0.lib
vtkfreetype-9.0d.lib
vtkGeovisCore-9.0.lib
vtkGeovisCore-9.0d.lib
vtkgl2ps-9.0.lib
vtkgl2ps-9.0d.lib
vtkglew-9.0.lib
vtkglew-9.0d.lib
vtkhdf5-9.0.lib
vtkhdf5-9.0d.lib
vtkhdf5_hl-9.0.lib
vtkhdf5_hl-9.0d.lib
vtkImagingColor-9.0.lib
vtkImagingColor-9.0d.lib
vtkImagingCore-9.0.lib
vtkImagingCore-9.0d.lib
vtkImagingFourier-9.0.lib
vtkImagingFourier-9.0d.lib
vtkImagingGeneral-9.0.lib
vtkImagingGeneral-9.0d.lib
vtkImagingHybrid-9.0.lib
vtkImagingHybrid-9.0d.lib
vtkImagingMath-9.0.lib
vtkImagingMath-9.0d.lib
vtkImagingMorphological-9.0.lib
vtkImagingMorphological-9.0d.lib
vtkImagingSources-9.0.lib
vtkImagingSources-9.0d.lib
vtkImagingStatistics-9.0.lib
vtkImagingStatistics-9.0d.lib
vtkImagingStencil-9.0.lib
vtkImagingStencil-9.0d.lib
vtkInfovisCore-9.0.lib
vtkInfovisCore-9.0d.lib
vtkInfovisLayout-9.0.lib
vtkInfovisLayout-9.0d.lib
vtkInteractionImage-9.0.lib
vtkInteractionImage-9.0d.lib
vtkInteractionStyle-9.0.lib
vtkInteractionStyle-9.0d.lib
vtkInteractionWidgets-9.0.lib
vtkInteractionWidgets-9.0d.lib
vtkIOAMR-9.0.lib
vtkIOAMR-9.0d.lib
vtkIOAsynchronous-9.0.lib
vtkIOAsynchronous-9.0d.lib
vtkIOCityGML-9.0.lib
vtkIOCityGML-9.0d.lib
vtkIOCore-9.0.lib
vtkIOCore-9.0d.lib
vtkIOEnSight-9.0.lib
vtkIOEnSight-9.0d.lib
vtkIOExodus-9.0.lib
vtkIOExodus-9.0d.lib
vtkIOExport-9.0.lib
vtkIOExport-9.0d.lib
vtkIOExportGL2PS-9.0.lib
vtkIOExportGL2PS-9.0d.lib
vtkIOExportPDF-9.0.lib
vtkIOExportPDF-9.0d.lib
vtkIOGeometry-9.0.lib
vtkIOGeometry-9.0d.lib
vtkIOImage-9.0.lib
vtkIOImage-9.0d.lib
vtkIOImport-9.0.lib
vtkIOImport-9.0d.lib
vtkIOInfovis-9.0.lib
vtkIOInfovis-9.0d.lib
vtkIOLegacy-9.0.lib
vtkIOLegacy-9.0d.lib
vtkIOLSDyna-9.0.lib
vtkIOLSDyna-9.0d.lib
vtkIOMINC-9.0.lib
vtkIOMINC-9.0d.lib
vtkIOMotionFX-9.0.lib
vtkIOMotionFX-9.0d.lib
vtkIOMovie-9.0.lib
vtkIOMovie-9.0d.lib
vtkIONetCDF-9.0.lib
vtkIONetCDF-9.0d.lib
vtkIOOggTheora-9.0.lib
vtkIOOggTheora-9.0d.lib
vtkIOParallel-9.0.lib
vtkIOParallel-9.0d.lib
vtkIOParallelXML-9.0.lib
vtkIOParallelXML-9.0d.lib
vtkIOPLY-9.0.lib
vtkIOPLY-9.0d.lib
vtkIOSegY-9.0.lib
vtkIOSegY-9.0d.lib
vtkIOSQL-9.0.lib
vtkIOSQL-9.0d.lib
vtkIOTecplotTable-9.0.lib
vtkIOTecplotTable-9.0d.lib
vtkIOVeraOut-9.0.lib
vtkIOVeraOut-9.0d.lib
vtkIOVideo-9.0.lib
vtkIOVideo-9.0d.lib
vtkIOXML-9.0.lib
vtkIOXML-9.0d.lib
vtkIOXMLParser-9.0.lib
vtkIOXMLParser-9.0d.lib
vtkjpeg-9.0.lib
vtkjpeg-9.0d.lib
vtkjsoncpp-9.0.lib
vtkjsoncpp-9.0d.lib
vtklibharu-9.0.lib
vtklibharu-9.0d.lib
vtklibproj-9.0.lib
vtklibproj-9.0d.lib
vtklibxml2-9.0.lib
vtklibxml2-9.0d.lib
vtkloguru-9.0.lib
vtkloguru-9.0d.lib
vtklz4-9.0.lib
vtklz4-9.0d.lib
vtklzma-9.0.lib
vtklzma-9.0d.lib
vtkmetaio-9.0.lib
vtkmetaio-9.0d.lib
vtknetcdf-9.0.lib
vtknetcdf-9.0d.lib
vtkogg-9.0.lib
vtkogg-9.0d.lib
vtkParallelCore-9.0.lib
vtkParallelCore-9.0d.lib
vtkParallelDIY-9.0.lib
vtkParallelDIY-9.0d.lib
vtkpng-9.0.lib
vtkpng-9.0d.lib
vtkpugixml-9.0.lib
vtkpugixml-9.0d.lib
vtkRenderingAnnotation-9.0.lib
vtkRenderingAnnotation-9.0d.lib
vtkRenderingContext2D-9.0.lib
vtkRenderingContext2D-9.0d.lib
vtkRenderingCore-9.0.lib
vtkRenderingCore-9.0d.lib
vtkRenderingFreeType-9.0.lib
vtkRenderingFreeType-9.0d.lib
vtkRenderingGL2PSOpenGL2-9.0.lib
vtkRenderingGL2PSOpenGL2-9.0d.lib
vtkRenderingImage-9.0.lib
vtkRenderingImage-9.0d.lib
vtkRenderingLabel-9.0.lib
vtkRenderingLabel-9.0d.lib
vtkRenderingLOD-9.0.lib
vtkRenderingLOD-9.0d.lib
vtkRenderingOpenGL2-9.0.lib
vtkRenderingOpenGL2-9.0d.lib
vtkRenderingSceneGraph-9.0.lib
vtkRenderingSceneGraph-9.0d.lib
vtkRenderingUI-9.0.lib
vtkRenderingUI-9.0d.lib
vtkRenderingVolume-9.0.lib
vtkRenderingVolume-9.0d.lib
vtkRenderingVolumeOpenGL2-9.0.lib
vtkRenderingVolumeOpenGL2-9.0d.lib
vtkRenderingVtkJS-9.0.lib
vtkRenderingVtkJS-9.0d.lib
vtksqlite-9.0.lib
vtksqlite-9.0d.lib
vtksys-9.0.lib
vtksys-9.0d.lib
vtkTestingRendering-9.0.lib
vtkTestingRendering-9.0d.lib
vtktheora-9.0.lib
vtktheora-9.0d.lib
vtktiff-9.0.lib
vtktiff-9.0d.lib
vtkverdict-9.0.lib
vtkverdict-9.0d.lib
vtkViewsContext2D-9.0.lib
vtkViewsContext2D-9.0d.lib
vtkViewsCore-9.0.lib
vtkViewsCore-9.0d.lib
vtkViewsInfovis-9.0.lib
vtkViewsInfovis-9.0d.lib
vtkWrappingTools-9.0.lib
vtkWrappingTools-9.0d.lib
vtkzlib-9.0.lib
vtkzlib-9.0d.lib
(6)此电脑->属性->高级->环境变量->path路径下添加此路径:D:\Program Files\VTK-9.0.0.rc3;D:\Program Files\VTK-9.0.0.rc3\Build\bin;
系统变量->新建->添加变量值:VTK_DIR;变量值添加路径:D:\Program Files\VTK-9.0.0.rc3\Build\include\vtk-9.0
如下图所示:
测试代码
#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCylinderSource.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <array>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2); //未使用cmake生成的项目需要加
VTK_MODULE_INIT(vtkInteractionStyle);//未使用cmake生成的项目需要加
int main()
{//hello vtk程序
vtkSmartPointer<vtkNamedColors> colors =
vtkSmartPointer<vtkNamedColors>::New();
std::array<unsigned char, 4> bkg{ { 26, 51, 102, 255 } };
colors->SetColor("BkgColor", bkg.data());
vtkSmartPointer<vtkCylinderSource> cylinder =
vtkSmartPointer<vtkCylinderSource>::New();
cylinder->SetResolution(8);
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New();
cylinderActor->SetMapper(cylinderMapper);
cylinderActor->GetProperty()->SetColor(
colors->GetColor4d("Tomato").GetData());
cylinderActor->RotateX(30.0);
cylinderActor->RotateY(-45.0);
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(cylinderActor);
renderer->SetBackground(colors->GetColor3d("BkgColor").GetData());
renderer->ResetCamera();
renderer->GetActiveCamera()->Zoom(1.5);
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->SetSize(300, 300);
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("Cylinder");
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderWindow->Render();
renderWindowInteractor->Start();
return 0;
}
参考博文:
1、https://blog.csdn.net/Gordon_Wei/article/details/102955924