最近正在用點雲做三維物體的6自由度位姿估計問題,需要將CAD文件轉化爲pcd格式點雲圖,看到pcl庫裏有一個相關的寫好的例程https://github.com/PointCloudLibrary/pcl/blob/master/tools/mesh_sampling.cpp 拷貝之後,直接貼在了空的一個工程中,直接用了之前弄好的配置文件,果然還是出了些問題,問題前後分爲兩段,搞好一個又出來一個,不管是當時弄ros還是vs都有這種情況,哎,這種東西最煩了,時間都耽誤在這上面了!好多人的解決方法和我的還不大一樣,有點小區別,我有預感我之後可能還會有類似的問題,這裏貼出來一下也記錄一下 共享一下。
1.直接複製代碼編譯之後,出現上面兩張圖的提示, 查着看大家的說法,大體上是因爲vs沒有像cmake那樣默認設定好一些關於vtk的配置,導致需要手動配置一下,參看 https://stackoverflow.com/questions/18642155/no-override-found-for-vtkpolydatamapper/41969027 這裏的說法是在源文件前面先於任何關於vtk的頭文件之前,貼上
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
然後再編譯,於是就有了問題2.
2.編譯之後,出現下面的問題,查了看大家的說法,反正很複雜,說是什麼初始化的vtk配置和之前設定的配置不同,需要改cmake文件
期間我一直很奇怪,我看到我vtk目錄下的lib文件中只有 vtkRenderingOpenGL之類的lib文件,沒有vtkRenderingOpenGL2系列的lib,我想是不是第一步應該改成
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL); // 把2去掉
VTK_MODULE_INIT(vtkInteractionStyle);
但是編譯之後100+個錯誤,之前看到 https://stackoverflow.com/questions/40086584/errorno-override-found-for-vtkpolydatamapper/43222907
試了之後,果然搞定!
總結:其實第一步參考的網站中,也有提到讓你去看你安裝的到底是vtkRenderingOpenGL2還是vtkRenderingOpenGL,但是卻卻沒提到vtkRenderingOpenGL的情況具體咋辦,有人再遇到這種情況,先看看自己裝的哪個。