专栏首页图形学与OpenGLVS2008下VTK安装指南

VS2008下VTK安装指南

在 《VTK安装配置教程》修改整理而成,原文为VC6的安装指南,详见:http://blog.csdn.net/ralix/article/details/2070051

1. 必须要下载的东西,vs2008已经装好为前提:

vtk-5.8.0-win32.exe 安装程序

vtk-5.8.0.zip 源程序

vtkdata-5.8.0.zip 数据

vtkDocHtml VTK手册(可选)

cmake-2.8.6-win32-x86

2. 先执行 vtk-5.8.0-win32.exe安装到d:\Program Files (x86)\VTK 5.8.0, 安装后会产生 vtk5.0 文件夹里面还包括 bin 等子文件夹。

(project setting也是按这个目录配置的)

3. 将 vtk-5.0.4.zip解压到d:\Program Files (x86)\VTK 5.8.0,即解压后为:d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0; vtkdata-5.0.4.zip同样处理。

4. 安装 cmake-2.8.6-win32-x86,方便起见装到d:\Program Files (x86)\cmake-2.8.6-win32-x86。运行cmake,设置sourse code目录为D:/Program Files (x86)/VTK 5.8.0/vtk5.8.0, build目录为D:/Program Files (x86)/VTK 5.8.0/bin

按 configure 按钮,cmake 软件会让你选择需要使用的编译器,这里我们选vs2008,然后cmake会描所需要的文件,停下来之后,我们就可以修改 cmake选项了。

打开Show Advanced Values再configure,才可以看到一个vtk_use_guisupport,打开它,才能选vtk_use_mfc,再configure,configure的次数是无所谓的。

很多人把 vtk 安装好了,却无法运行vtk 中与mfc 混合编程的例子,提示错误都是缺少vtkmfc.lib,问题就出在这个选项,我们必须把它设置为 on。

至于vtk_use_qvtk,这是给QT用的vtk,但目前只支持QT3,现在的版本是QT4,我试过了,cmake通不过。只能等着新版cmake了。

还有要注意的就是:

vtk_data_root: 目的是告诉cmake,vtk 需要的数据都在哪里,我们的数据在d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\vtkdata

cmake_install_prefix: 这个是指定一个目录把.h .lib .dll等精华放在这里,"VTK安装三步曲"里说是为将来装vtk做准备,我不太清楚,反正用它默认的就好了。

build_examples: 就是询问是否编译 vtk 中的例子,你在看这个教程,说明肯定是初次用VTK,建议选上。

build_shared_libs: 如果设置为off,就只会生成lib 文件,用于开发肯定是够了。如果设置为on,将会多生成 dll 文件,这些dll需要拷到windows/system目录下。如果用静态库编程,即off时,应用程序可以独立运行,尺寸也比较大,如果用动态库编程,即on时,应用程序必须找到动态库才能运行,但尺寸可以做得比较小。建议选On, 我试过选OFF,所谓的静态编译,但之后新建一个项目时,还是会出现找不到文件的问题。

vtk_use_parallel: 对于想用vtk 做并行计算的朋友,要把这个选上,对于只想学学vtk 的,保持默认 off

都没问题了所有项目会变成灰色。这时就可以按OK了,几秒钟后,cmake自动退出,为VC6准备的make文件已经生成好。

5. 用 vs2008打开 bin目录下的 d:\Program Files (x86)\VTK 5.8.0\bin\VTK.sln 文件,直接build。这一般要花掉十几分钟。结果保存在d:\Program Files (x86)\VTK 5.8.0\bin\bin。如果这个过程报错,可能是防火墙、杀毒软件的原因,请关掉再试。顺利通过编译就可以继续了。

6. 第4步时build_shared_libs是ON的话,把C:/VTK 5.0/bin/bin/Debug里生成的dll文件都拷到windows/system目录下。

7. 试一下:打开d:\Program Files (x86)\VTK 5.8.0\bin\Examples\VTKExamples.sln,选择Cone项目,右键set as active project,然后build,run. 这时应该能正确运行了。

8. 但还没完。这时能运行的只是vtk自己带的项目,自建的项目还需要自己进行一些设定:

新建一记事本,一定要取消自动换行。把下面的"三大步"copy进去,确保每一步都在一行,以后会经常用到的:

1) 修改Project setting->C/C++ ->Category->Preprocessor->Additional include directories:

d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\GenericFiltering,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\Common,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\IO,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\Filtering,d:\Program Files (x86)\VTK 5.8.0\bin,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\Rendering,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\Graphics,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\VolumeRendering,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\Imaging,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\Hybrid,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\GUISupport,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\include\vtk-5.0,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\Parallel,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\lib,d:\Program Files (x86)\VTK 5.8.0\vtk5.8.0\Widgets

2)修改Project setting->Link->Input->Object/library modules:

opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib vtkCommon.lib vtkDICOMParser.lib vtkexoIIc.lib vtkexpat.lib vtkFiltering.lib vtkfreetype.lib vtkftgl.lib vtkGenericFiltering.lib vtkGraphics.lib vtkHybrid.lib vtkImaging.lib vtkIO.lib vtkjpeg.lib vtkNetCDF.lib vtkpng.lib vtkRendering.lib vtksys.lib vtktiff.lib vtkVolumeRendering.lib vtkWidgets.lib vtkzlib.lib

3)还有Additional library path:

d:\Program Files (x86)\VTK 5.8.0\bin\bin\Debug

像Cannot open include file: 'vtkConeSource.h':这样的错误都是上面三大步没走对或dll没拷到windows/system下造成的。要建立新项目,必须重新配置三大步,因为那三步都是Project setting里的,新项目没有默认这些设置。

如果某个项目再提示缺什么lib或.h的话,再临时加上去就行了。

9. 这时新建一个project, win32 console application, an empty project, 生成后给source files加一个test.cpp,把下面的代码放进去:

#include "vtkConeSource.h"

#include "vtkPolyDataMapper.h"

#include "vtkRenderWindow.h"

#include "vtkCamera.h"

#include "vtkActor.h"

#include "vtkRenderer.h"

#include "vtkProperty.h"

int main()

{

vtkConeSource *cone = vtkConeSource::New();

cone->SetHeight( 3.0 );

cone->SetRadius( 1.0 );

cone->SetResolution( 10 );

vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();

coneMapper->SetInputConnection( cone->GetOutputPort() );

vtkActor *coneActor = vtkActor::New();

coneActor->SetMapper( coneMapper );

vtkRenderer *ren1= vtkRenderer::New();

ren1->AddActor( coneActor );

ren1->SetBackground( 0.1, 0.2, 0.4 );

vtkRenderWindow *renWin = vtkRenderWindow::New();

renWin->AddRenderer( ren1 );

renWin->SetSize( 300, 300 );

int i;

for (i = 0; i < 360; ++i)

{

renWin->Render();

ren1->GetActiveCamera()->Azimuth( i );

}

cone->Delete();

coneMapper->Delete();

coneActor->Delete();

ren1->Delete();

renWin->Delete();

return 0;

}

看过vtk example的第一个例子就会知道上面的程序在做些什么。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实验3 直线裁剪算法

    本次实验主要结合鼠标画线程序来验证编码裁剪算法和实现梁友栋-Barsky裁剪算法,具体步骤如下:

    步行者08
  • 实验4 编码裁剪算法

    了解二维图形裁剪的原理(点的裁剪、直线的裁剪、多边形的裁剪),利用VC+OpenGL实现直线的裁剪算法。

    步行者08
  • 机械版CG 实验6 简单光照明模型实现

    Phong光照明模型是由物体表面上一点P反射到视点的光强I为环境光的反射光强Ie、理想漫反射光强Id、和镜面反射光Is的总和,即

    步行者08
  • Python实现微信防撤回

    微信(WeChat)是腾讯公司于2011年1月21日推出的一款社交软件,8年时间微信做到日活10亿,日消息量450亿。在此期间微信也推出了不少的功能如:“摇一摇...

    吴延宝
  • Python - 去除list中的空字符

    Python内建filter()函数 - 过滤list filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢...

    AIHGF
  • 欧拉计划 problem 16

    题目 幂的数字和 215 = 32768,而32768的各位数字之和是 3 + 2 + 7 + 6 + 8 = 26。

    用户4492257
  • 图片数据集太少?Keras Image Data Augmentation 各参数详解

    图像深度学习任务中,面对小数据集,我们往往需要利用Image Data Augmentation图像增广技术来扩充我们的数据集,而keras的内置ImageDa...

    AI研习社
  • 伙计们,Go 并没有那么简单

    出于好奇,我最近开始接触一些 Go 的代码。我之前对它有一些了解,但是从来没有尝试去写(没有需求)。但是现在我们团队选择使用 Go 来开发一个项目,所以我觉得这...

    李海彬
  • Go语言基础

    Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, ...

    刘亦枫
  • 【实时音视频】视频相亲背后的音视频方案

    基础通信网络的提速降费,下一代无线通信网络5G即将迎来商用。基础设施升级的驱动下,信息流动和连接的方式也在经历从文字、图片、语音到视频的进化。

    shixin

扫码关注云+社区

领取腾讯云代金券