CloudComparePlugins

qUDPTransfer

这是一个辅助 cc 通过 UDP 方式从远程扫描仪加载点云的插件,start 按钮可以用来发送自定义指令。
因为目前手中的扫描仪都是写死的 ip 地址与 port,所以这俩在插件中也是写死的,可以在代码里自己修改,之后可能会加上修改功能(其实原来有,功能被砍掉了)

qVolumeMeasure

这个插件用来测量一块点云的体积

具体用法:

  1. 从点云选取三个点
  2. 点击确认保存地面数据
  3. 点击计算体积开始计算
  4. 点击生成报告生成报告

因为软件本身是为施工现场的工人师傅设计的,所以各个功能的可选参数非常少,交互也比较死板,后续有需要的话可以改成比较适合开发的版本。

插件最核心的部分在 onCalPushButtonClick() 函数中

  • 首先计算三个点的法向量,从而得到将法向量旋转到与 z 轴方向一致的旋转矩阵(体积计算的前提假设为地面水平)
  • 之后将点云整个根据旋转矩阵进行旋转,同时确定地面高度
  • 栅格化点云(这里将栅格尺度写死为 0.15mx0.15m,因为软件要测量矿场料堆的体积,都比较大),计算每个栅格中点云的平均高度
  • 对没有点云的栅格进行插值补全(这里用的 CGLA 的东西,没太看明白,有三角剖分之类的东西在里面)
  • 将所有高度值加起来,除以栅格面积得到点云体积

qXYZILoader

用来导入 *.xyzi 文件,文件本身是二进制保存的四个浮点数,数据结构如下

struct point {
    float x,y,z,i;
};