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.
Externally adding points/point clouds
-
- Posts: 187
- Joined: Tue Mar 05, 2019 3:59 pm
Re: Externally adding points/point clouds
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.
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.
-
- Posts: 2
- Joined: Tue May 19, 2020 3:54 pm
Re: Externally adding points/point clouds
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.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.