安装VTK需要先安装CMake,CMake是一个用于生成对应编译器的工程文件,再通过工程文件对代码进行编译,从而得到相应的库或软件。
1.CMake安装
官网下载地址:https://cmake.org/download/
开始安装,基本是一直Next就可以
可以看到已经安装好了!
2.VTK安装
官网下载地址:Download | VTK.这里只选择了源码包,也可以下载数据包、文档包。
下载完成后,在D盘或者C盘创建一个目录(这里是D盘),将下载好的VTK-9.3.0.rc1.tar.gz拷贝至该目录并解压为VTK-9.3.0.rc1,另外再新建两个目录,分别命名为build_x86、prefix_x86(我这里生成的是32位的工程文件),操作完成的结果如下图所示:
勾选Advanced选择项,可以在CMake界面上看到更多的选项。
勾选Grouped分组显示。
两个输入框设置完毕后,就可以点击左下角的Configure按钮,接着会弹出如下对话框,我这里选择的是VS2019,win32表示x86,点击Finish按钮。
等待构建,完成后如下图:
出现标红,不是出现啥错误,是需要确认一些配置项。
a.勾选BUILD_SHARED_LIBS,生成VTK动态连接库(默认是勾选上的),这样之后生成的VTK应用程序将会比较小。
b.修改CMAKE_INSTALL_PREFIX的值(这里补充一下,在build目录同级路径创建prefix目录C:/InstallPackage/VTK9.3.0/prefix);VTK生成路径,这里存放之后使用vtk时的一些动态库dll,二进制库lib,vtk的一些头文件之类的。
c.勾选VTK_BUILD_EXAMPLES,编译生成一些测试用例。
d.修改VTK_MODULE_ENABLE_VTK_GUISupportMFC为YES,支持MFC开发。
再次点击Configure按钮,然后点击Generate按钮,生成完成如下图:
在build目录会生成VTK.sln解决方案文件,使用vs2019打开该工程。
3.VTK编译
由于CMake默认选择的是x86位,所以vs2019打开的就是Win32版本。
设置ALL_BUILD位启动项,右键选择生成(生成时间比较久),则会在bin\Debug目录下生成相关dll,VS2019切换为Release,则会在bin\Release目录下生成相关dll,如图所示:
如果还想把VTK相关的头文件、动态链接库文件等提取出来,便于其它项目的开发,可以设置INSTALL项目为启动项,右键生成,VTK里的所有头文件以及相关的库文件等,即会被提取到CMAKE_INSTALL_PREFIX选项所指定的目录里,如下图所示:
由于我选择了MFC开发,所以生成INSTALL项目时,出现如下图错误
打开VS2019安装,安装MFC模块,如下图所示:
到这里就安装完了VTK_x86的开发环境,包括debug、release版本库文件。
4.编写VTK示例
VS2019创建一个C++控制台应用程序:
右键项目->VC++目录->配置头文件的包含目录
附加依赖项选择的是目录下所有lib文件。
相关代码如下:
#include "vtkSphereSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkTransform.h"
#include "vtkAxesActor.h"
#include "vtkOrientationMarkerWidget.h"
int main() {
//创建一个球体
vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();
sphereSource->SetCenter(0.0,0.0,0.0);
sphereSource->SetRadius(1.0);
sphereSource->Update();
//
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(sphereSource->GetOutput());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
vtkSmartPointer<vtkRenderer> render = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindow->AddRenderer(render);
renderWindowInteractor->SetRenderWindow(renderWindow);
render->AddActor(actor);
render->SetBackground(0.2, 0.3, 0.4);
vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
transform->Translate(1.0,0.0,0.0);
vtkSmartPointer<vtkAxesActor> axes1 = vtkSmartPointer<vtkAxesActor>::New();
render->AddActor(axes1);
axes1->SetUserTransform(transform);
vtkSmartPointer<vtkAxesActor> axes = vtkSmartPointer<vtkAxesActor>::New();
vtkSmartPointer<vtkOrientationMarkerWidget> widget = vtkSmartPointer<vtkOrientationMarkerWidget>::New();
widget->SetOutlineColor(0.9300, 0.5700, 0.1300);
widget->SetOrientationMarker(axes);
widget->SetInteractor(renderWindow->GetInteractor());
widget->SetViewport(0.0, 0.0, 0.2, 0.2);
widget->SetEnabled(1);
widget->InteractiveOn();
render->ResetCamera();
renderWindow->SetSize(800,600);
renderWindow->Render();
renderWindowInteractor->Start();
return 0;
}
编译完成并启动程序,会出现如下错误:
缺少依赖库dll,我这里是将D:\VTK9.3.0\build_x86\bin\Debug目录下所有dll拷贝至exe同级目录下;
运行成功后的画面,写到这里就结束了,本文介绍了VTK安装与配置及开发测试。
附上代码:https://download.csdn.net/download/qq_31461977/88475018