从vtk/pcl源码中,分离pclVisilization 和 vtkQtWidget

背景:

vtk和pcl是优秀的三维开源引擎, 但是我们在工程中,需要集成到我们软件中,因而有了QVtkOpenglWidget等直接嵌入Qt程序的要求; 但是从vtk8.2之后,这部分源码又剔除出去了,随之影响的还有pcl 8.0系列之后的版本;

那么升级就遇到问题了, 如果在版本之前的编译我们还好说,但是随着这两个引擎的升级,新功能的迭代添加,为了适配之前的工程,我们就只能保持版本不动吗?这不可行! 这无疑是个巨大的痛点!

因而,本博主决定:从两个引擎中的源码中,分离pcl_visulization 和 vtkQtWidget,从而将渲染界面独立出来, 先看成果:

 

 

以上部分,就是抽离出来的两个库,独立编译并在qt中成功运行后的结果; 那么接下来就说说,移植之后的关键过程以及中间的坑

分离过程:

1.本博主是从pcl-1.13.1版本和vtk 8.2版本的 Rendering抽取

 

 

2.这里使用的是vstudio 2019 编译器:  分别创建 一个 QtPclVisulization 和  QtVtk3DWidget库
3.将这两个引擎的源码拷贝到工程目录下,并添加进来

                                                                 

 关键点一: 里面凡是涉及到 <pcl/visulization/xxxx> 的,统一改成: "pcl/visulization/xxxx" ;保证是从本地文件读取到的
关键点二:  pcl 中,记得把这些环境配置好!

 关键三: vtk的src中,会缺少下面这些文件,记得从 Rendering中,把这些数据引入;

 关键点四: 里面涉及到和全局环境中重叠的部分,因而,我们要把用到的类,放到自定义的命名空间中,我这里取的XPlote, 并注意把导出宏先去掉;

 关键点5: 在上述分离库都完成的情况下,我们要写demo, 要使用 XPLote::QVTKWidget,我们必须添加下面的头文件以及宏,来初始化OPenGl相关的资源,否则pcl/vtkwidget 都会失败.

 本博主就是在这一步被坑了很多次!!!! 切记

调用实例:

 

到此,我们的分离工作完成, 以后vtk或者pcl的库,任其升级变化,我们的上层软件交互都不会受到影响!

当然,其它的模块也可以这么做!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值