Polaris Mesh源码解读_ci

链接: https://pan.baidu.com/s/1Ci85MrtVHKVkxpGDYz2dXw

提取码: cueq

上一篇文章:InsaneGuy:Meshlab编写自定义插件(上) -- 源代码编译


2 添加自定义插件

MeshLab中主要插件类型有 filter plugins, i/o plugins, edit plugins,这里只介绍如何添加 filter plugins。

下面这个链接是官方给出的例子:

Meshlab Developmentmeshlab.sourceforge.net


简单来说就是 MeshLab 提供了 MeshFilterInterface 这个接口,我们只需要继承这个接口实现自己的类即可。

附件中的 “random_displacement.zip” 实现了一个让每个 vertex 产生随机位移的插件,具体代码如下:


// random_displacement.h


重点是要实现 `applyFilter()` 这个方法:


// random_displacement.cpp


把附件中的 “random_displacement.zip” 解压到 meshlab/src/my_plugins 下面:(my_plugins 文件 夹自己创建一个空的即可)


Polaris Mesh源码解读_环境变量_02


Polaris Mesh源码解读_环境变量_03


用 VS 打开 “meshlab_dev.sln”(之前由 meshlab_dev.pro 转换而来),利用 Qt5 插件打开 刚才 “meshlab/src/my_plugins/random_displacement” 中的 “random_displacement.pro” 文件:


Polaris Mesh源码解读_右键_04


Polaris Mesh源码解读_ci_05


打开后侧边栏多出了一个“random_displacement”子项目:


Polaris Mesh源码解读_右键_06


右键点击该子项目,选择“Properties”,在 “C/C++ -- Preprocessor -- Preprocessor Definitions” 中加入 “_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS” :


Polaris Mesh源码解读_环境变量_07


然后在 “Linker -- Input -- Additional Dependencies”中添加 glu32.lib 和 opengl32.lib:


Polaris Mesh源码解读_环境变量_08


右键点击“random_displacement”,选择“Build”,成功后在 meshlab/src/distrib 下打开 meshlab.exe 文件,此时 “Filters”菜单下多了我们刚才添加的插件功能项:


Polaris Mesh源码解读_环境变量_09


打开一个三维网格模型,处理前后分别如下图所示:


Polaris Mesh源码解读_ci_10


3 添加 PCL 插件

附件里还有两个插件:

- transformation_sample_plugin : 一个将三维模型绕坐标轴进行旋转变换的插件,没有 PCL 的内容,可以参考代码看看旋转是如何实现的

- pcl_icp_plugin : 一个利用 PCL 中的 ICP 算法将两个三维模型进行配准的例子

关于 PCL 的配置:

- 安装 PCL-1.8.0-AllInOne-msvc2015-win64.exe

- 检查系统环境变量里的 PCL_ROOT 是否为安装 PCL 的路径

- 在系统环境变量的 PATH 变量里加入如下内容


%PCL_ROOT%bin;%PCL_ROOT%3rdPartyFLANNbin;%PCL_ROOT%3rdPartyVTKbin;%PCL_R OOT%Qhullbin;%PCL_ROOT%3rdPartyOpenNI2Tools;


插件的添加同之前一样,利用 VS 的 Qt 插件打开相应的 .pro 文件。

注意:

- 要在每个子项目的 Properties 的 “C/C++ -- Preprocessor -- Preprocessor Definitions” 中加 入“_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS”。

- 要在每个子项目的 Properties 的 “Linker -- Input -- Additional Dependencies”中添加 glu32.lib 和 opengl32.lib

- pcl_icp_plugin 这个插件里的 .pro 文件中,我链接的是 release 版本的库,注释里有标明, 可以改成链接 debug 版本的库,但是处理速度会比较慢。如果使用 release 版本,之前的 external 项目和 meshlab_dev.pro 项目都要重新编译一次 release 的版本,在 VS 中可以切换:


Polaris Mesh源码解读_右键_11