Page 1 of 1

Externally adding points/point clouds

Posted: Tue May 19, 2020 4:10 pm
by Ciaron Hamilton
Hello, I am working on a C# application which to visualize data from an end effector of a robot and want to use CloudCompare since all the tools I need are available in this software. Inputs into CloudCompare would be 3D Cartesian coordinates <x,y,z>, normals <Rx,Ry,Rz>, and the voltage <v> as a scalar color input.

Since I want to view the data realtime as we obtain it, I have to find a way to integrate or at set communications between CloudCompare and my C# application. So I am wondering if the following options are possible:
1) Use CCs command interface to add points, in which C# can easily call.
2) Through CCs API by creating a plugin that is called by the C# software.

Thanks in advance.

Re: Externally adding points/point clouds

Posted: Thu May 21, 2020 8:21 pm
by WargodHernandez
A plug-in would be the only "real-time" way to go about this. You would most likely need to use IPC (inter process communication) there are a number of different options for IPC one of the easiest would probably be to use tcp/ip and communicate over the localhost. Qt has networking libraries that could be used on the plug-in side.

Modifying and displaying point clouds in real time is possible on cloud compare but it can be challenging to interfere with each other (the main CC app and the plug-in). Depending on the throughout expected you could have a few clouds that are being updated and only 1 being displayed by CC at any given time, then swap out which cloud is displayed with the most up to date.
I have tested this type of swapping methodology up to about 50,000 pts per second coming in batches of 2,000 pts with reasonable results.

It's not a trivial problem but it is definitely possible to do.

Re: Externally adding points/point clouds

Posted: Fri May 22, 2020 3:35 pm
by Ciaron Hamilton
WargodHernandez wrote: Thu May 21, 2020 8:21 pm A plug-in would be the only "real-time" way to go about this. You would most likely need to use IPC (inter process communication) there are a number of different options for IPC one of the easiest would probably be to use tcp/ip and communicate over the localhost. Qt has networking libraries that could be used on the plug-in side.

Modifying and displaying point clouds in real time is possible on cloud compare but it can be challenging to interfere with each other (the main CC app and the plug-in). Depending on the throughout expected you could have a few clouds that are being updated and only 1 being displayed by CC at any given time, then swap out which cloud is displayed with the most up to date.
I have tested this type of swapping methodology up to about 50,000 pts per second coming in batches of 2,000 pts with reasonable results.

It's not a trivial problem but it is definitely possible to do.
Thank's a lot, this was very informative. I'll see what I can do, I'm assuming IPC is the best path I can take. Also hoping modifying/displaying the new point clouds will be not too difficult.