最近需要使用PCL来获取处理点云,需要用到VTK,看到网上有人说vtk5.8.0处理过程中有错(未亲自验证),就打算自己编译一个新的版本,网上能查到最新的版本是编译是vtk-5.10.1. 链接是http://blog.youkuaiyun.com/cgcoder/article/details/8262232。
网上现在最新的是vtk-6.0.0,按照上面链接和《VTK在WIN7,VS2010环境下安装》这篇文档的方法:
首先下载了:
vtk-6.0.0.zip 源程序
vtkdata-6.0.0.zip 数据
勾选的(按个人需要):
vtk_data_root,浏览到例子数据所在位置
build_examples:勾选上则编译例子,没有勾选
build_testing: 勾选上则编译测试代码,也是例子,没有勾选
build_shared_libs: 勾选了
其他操作跟上面一样;生成sln文件,用vs2010打开,对all build选择“重新生成”,全部成功,没有报错
在选择install后点击生成,同样会出现权限错误,把生成路径从C:/Program Files/VTK改成D:/Program Files/VTK.重新生成。
没有错误,全部通过。
尚未测试。
测试例子:
#include "stdafx.h"
#include "vtkConeSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkCamera.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkProperty.h"
#include "windows.h"
int _tmain(int argc, _TCHAR* argv[])
{
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 );
for (int i = 0; i < 360; ++i)
{
renWin->Render();
ren1->GetActiveCamera()->Azimuth( i );
Sleep(200);
}
cone->Delete();
coneMapper->Delete();
coneActor->Delete();
ren1->Delete();
renWin->Delete();
return 0;
}
跟网上其他人说的一样
程序编译已经没有问题,运行会弹框报错
Generic Warning: In ... ...\Rendering\Core\vtkPolyDataMapper.cxx, line 27
Error: no override found for 'vtkPolyDataMapper'
解决办法是在cpp文件头加上两个宏定义
如下
#include "stdafx.h"
#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)
#include "vtkConeSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkCamera.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkProperty.h"
#include "windows.h"
加在其他地方无效的,注意!!!