简介:
cloudcompare是一个三维点云处理软件。原始用途是用在两个点云比较或者一个点云和一个三角网格(triangular mesh)比较。软件基于八叉树的数据结构,可以处理大型点云。
速度和储存数据的权衡
储存采用八叉树结构,八叉树可以用于近邻点查询和计算,不适合实时显示(尤其带有细节的情况)。
cloudcompare 1GB最多可以显示3200万个点,过多的点会导致交互卡顿。
如何自制插件
命名:
变量名:
开头字母小写,之后的单词开头大写,除了常用名称避免缩写。常用类型命名如下。
- static variables: should always begin with prefix
s_
(in lower case – likes_defaultFilename
- static methods: should always begin with a upper case letter (like
InitGLEW
) - classes: should always begin with prefix
cc
(in lower case – likeccConsole
) - enumerators:
- all letters in upper case
- should always begin with prefix
CC_
- words are separated by underscore (like
CC_OBJECT_FLAG
)
- macros: begin with prefix
MACRO_
followed by a standard method name (likeMACRO_SkipUnselected
) - const variables:
- all letters in upper case
- words are separated by underscore (like
NORMALS_QUANTIZE_LEVEL
)
macro const
(#define
): should be avoided; same syntax as const
文件名:
开头小写,一个类包含头文件和源文件。
数据有关类放在db文件夹。图片放在image文件夹。GUI(.ui)文件放在ui_templates文件夹。
Example: ccConsole saved in ccConsole.h and ccConsole.cpp
总结:
Element | Example |
---|---|
Class | ccMyClass |
File | ccMyClass.h and ccMyClass.cpp |
Attribute/variable | myAttribute |
Static attribute/variable | s_myAttribute |
Method | getMethod() |
Static method | GetMethod() |
Structure | myStruct |
Enumerator | CC_MY_ENUMERATOR |
Macro | MACRO_myMethod |
Const variables | MY_CONSTANT |
Const (#define ) | MY_CONSTANT |
设计qCC插件:
1.首先复制粘贴qDummyPlugin文件夹在同一文件夹下(trunk\plugins)。重命名。
2.然后打开文件夹,包含以下文件:.hpp,.cpp,.qrc(Qt的资源文件),CMakeLists.txt。
3.将每个文件名子修改为自己的文件名。
4.打开CMakeList.txt文件,将所有的DUMMY改为自己插件的名字,增加依赖库。
5.接下来激活插件。
首先在头文件里可以看到标准的CloudCompare header。我们需要把插件名字和作者名字修改。在下面,我们需要把Q_DUMMY_PLUGIN_HEADER修改为我们自己的名字(例如: Q_MY_PLUGIN_ HEADER)。更改类描述和类名字。
在源文件,需要改变所有关于插件和类的名称。接下来需要修改getDescription方法(更改Dummy Plugin字符串为自己插件的名字,并把Action的名字也修改)。把我们的代码放在doAction方法下(在两个HERE STARTS THE MAIN PLUGIN ACTION分隔符之间 )。
当使用者按下你的插件图标,CloudCompare会调用你的方法。你可以通过m_app成员调用大部分CloudCompare资源(包括数据集,主窗口,3D窗口)为了确定操作的实体和是否激活插件,我们需要在onNewSelection方法里添加自定义代码。
所有算法和3D实体都可以在插件里调用,详见
实践:
在 CloudCompare-master/plugins/example 文件夹里有三个插件的例子,以 ExamplePlugin 为例子,在用cmakeGUI编译,将PLUGIN_EXAMPLE_STANDEARD勾选,然后点configure后generate,之后在命令行窗口make再make install就可以看到例子的效果。
编译器选择如下:
- Visual 2013, 2015, 2017 (64 bits)
- gcc (Linux 64 bits)
- Unix Makefiles (Mac OS X)
- CodeBlocks - Unix Makefiles (Mac OS X)
有可能要手动选择Q安装安装位置QT5_ROOT_PATH,在windows上为Qt\5.6\msvc2013_64。
如果想在编译器里调试使用插件,需要在’/plugins/CMakePluginTpl.cmake’ 文件里注释
QT_NO_DEBUG。
下文为一个角度扫描插件的实现全过程:
给cloudcompare增加plugin,实现自己的功能