Page 1 of 1

Developer - help getting started with CC

Posted: Wed Jan 24, 2018 6:09 am
by Graeme2017
Hi all, I have a requirement to locate 'certain' features in a point cloud. I have faith these features will reveal themselves with some cunning code to search the cloud for the point arrangements/patterns/anomalies I am looking for. An example of what I am trying to achieve is location of manhole covers in a length of road - these circular deformations in an otherwise 'flat' cloud should be easy to locate (well I would like to give it a go anyway).

I have written many point processing apps from a CAD perspective, including some triangulation algorithms, so hopefully I will be able to make a good go of this task. Can someone please guide me as to cloud compare being a good candidate as the foundation for my task. Lets start with the basics.

1. Does it have an SDK?
2. What language does it support? (ANSI C, C++, other)
3. Is there a cost involved in obtaining/using the SDK?
4. Will I need Visual Studio, and if so, what version(s) can I use? Will the VS 2015 community edition suffice?
5. How can I find out if someone has already done pattern recognition from point clouds? (I hate reinventing the wheel)
6. Are there existing functions to locate near points, with the possibility of including selection criteria?
7. Once I have a point (or collection of points) can I obtain/extract their geographical position (GPS aligned coords)?
8. Will the application I write be implemented as an add-on, or a plug in, or integrate with the product?
9. How would I load and invoke my add-on?
10. Can I run my add-on on other computers with CC installed, for free?

Thanks,
Graeme

Re: Developer - help getting started with CC

Posted: Wed Jan 24, 2018 9:03 pm
by daniel
Hi,

That sounds very interesting.

1. Well, the whole project is open-source, and it is built upon 4 libraries that are a kind of SDK: CC_CORE_LIB (algorithms, octree, etc.), QCC_DB (data base), QCC_IO (file loading and saving), and QCC_GL (3D display).

2. C++ (and C if you insist ;)

3. Nope, it's open-source, you just have to respect the licences (LGPL for CC_CORE_LIB and GPL for the other components).

4. You can use Visual Studio (from 2013 to 2017, and the Express/Community versions are sufficient). You can also use QtCreator, gcc, clang, etc. (well, not necessarily on Windows though)

5. There may be some things already existing in CloudCompare (you can ask more specific questions on this forum), but you'll get more chances by looking at libraries like PCL (http://pointclouds.org/). There's already a plugin based on PCL by the way

6. Yes, the octree is a central piece of CloudCompare. Once computed it will let you do fast neighborhood queries, etc.

7. You can get the coordinates of any point. For clouds with big (GPS) coordinates, we have a mechanism named 'Global Shift & Scale" (see http://www.cloudcompare.org/doc/wiki/in ... _and_Scale) as we store the coordinates on 32 bits only to save memory. Therefore there's a dedicated method to retrieve the global coordinates for these points.

8. As you wish. The best way is to create a plugin though.

9. You just have to place the plugin in the 'plugins' folder (you must compile it with the same version of Qt as the version of CloudCompare you use).

10. Yes! There's no particular obligations for plugins (at least this is how we have decided to treat plugins). Of course if your plugin is open-source and shared with the community, we might be motivated to help you ;)

Re: Developer - help getting started with CC

Posted: Wed Jan 24, 2018 10:42 pm
by Graeme2017
Awesome, thank you Daniel. Please direct me to a document that outlines how to get started, what to download, what to install and steps to achieve compiling my first test code. Is there a plug-in template I can follow? I struggle with setting up compilers etc, so would appreciate a few tips. TIA, Graeme

Re: Developer - help getting started with CC

Posted: Thu Jan 25, 2018 7:41 am
by daniel
Yes! Follow these guidelines: https://github.com/CloudCompare/CloudCo ... IBUTING.md

And all the other plugins are good examples.