Some improvement suggestions

To post any request/idea for new functionalities
Post Reply
adriantaylor09
Posts: 9
Joined: Mon Jun 16, 2014 8:48 pm

Some improvement suggestions

Post by adriantaylor09 »

Hi Daniel,

I really love CloudCompare and I use it a lot! I have a few suggestions which I think would improve my CloudCompare experience (even more!):

1. Rotate/Translate Handles.

For me, one of the most commonly used functions in CloudCompare is the translate/rotate tool. This is a really quick way of coarsely aligning two point clouds or a point cloud and a mesh. I think this tool could be improved if there were some on screen 'handles' that a user can manipulate to push/pull the object in 3D space. This would then leave the left and right mouse buttons free to orientate the view, and eliminate the need for the pause button.

Here's a screenshot from a typical 3d application which employs this technique
handles.jpg
handles.jpg (21.25 KiB) Viewed 5671 times
2. Recording and saving transformations

Quite often, I find myself transforming a point cloud from one orientation to another in several steps. For example, I might use the translate/rotate tool to coarsely align two point clouds, then perform a fine registration. These two operations currently produce two separate 4x4 transformation matricies in the console. If I want to repeat the process on a new point cloud, I either need to apply the two transformations individually (in the correct order), or combine them into one matrix somehow (currently I use Excel or matlab to do this). This can get quite messy if you move an object multiple times and you want to keep track of where it is!

I think it would be awesome if a transformation matrix was stored in the object properties. By default it would be a 4x4 identity matrix when you first import the object, each time you move it, the matrix would update.
It would also be useful if you could export this matrix to a text file
and for bonus points... maybe you could apply a matrix during import either by defining it manually or by applying a previously saved text file.

3. Dynamically changing point display settings

There are times when I need to deal with very large point clouds and for one reason or another, I don't want to sub-sample them. It would be nice to be able to reduce the amount of points which are actually displayed on screen without having to decimate the point cloud. Perhaps this could be at set intervals like 25%, 50%, 75% etc.

4. Have another go at getting the Faro SDK!

Native support for Faro .fls files would be awesome! I've managed to get my hands on the Faro SDK simply by contacting their customer service representative (ata.artuerk@faroeurope.com). Unfortunately, I can't share the SDK with you due to the NDA they make you sign, but it was a straight forward process for me. Maybe I'm just lucky!
jedfrechette
Posts: 45
Joined: Mon Jan 20, 2014 6:31 pm
Location: Albuquerque, NM
Contact:

Re: Some improvement suggestions

Post by jedfrechette »

I think these are all good suggestions.

I'd like to comment a little on the transform suggestions as that is a feature I use a lot in other applications. For the reasons you state having the transform exposed as an object property would be really nice. It would actually be great to have both a local and a global transform for each object. Consider a scan nested inside of a single group. For the group object the local and global transforms would be identical, however the scan object's global transform would be the result of composing it's local transform and the group's global transform. The global transform would always be the transform required to move an object from it's original to its current pose, while the local transforms allow you to build up that transform in a series of nested steps. I have a series of scans with local transforms that place them in a 'house' coordinate system. The house scans are inside a group with a local transform that places them in a 'block' coordinate system. The block group is inside a other group with a local transform that places it it in a 'city' coordinate system etc.

Unfortunately, as Daniel noted in the the Global Shift Discussion [1] I suspect this type of hierarchical structure isn't possible due to limitations in CloudCompare's scene graph.

The ability to save and apply transforms from disk would also be really nice and is something I use a lot. This is an area where having something like a Python API would be fantastic. I've found that often alignments need to be adjusted in the middle of a project so being able to cache out and reapply individual transforms is very useful. I end up with lots of little scripts that essentially do:

Code: Select all

scans = ['scan01.foo', 'scan02.foo', 'scan03.foo']

for scan in scans:
    mat44 = loadtxt(path.join(('matrices'), path.splitext(scan)[0]+txt))
    scan.transform = mat44
Finally, is the FARO SDK's license compatible with CloudCompare's? Also I'm glad you got your's quickly it took me 6 months.

[1] http://www.danielgm.net/cc/forum/viewto ... =872#p3053
Jed
daniel
Site Admin
Posts: 7479
Joined: Wed Oct 13, 2010 7:34 am
Location: Grenoble, France
Contact:

Re: Some improvement suggestions

Post by daniel »

Hi guys and sorry for the late answer (I wanted to sort out a few things before answering to this message so as to clear my mind ;).

I agree that all those suggestions are good ones. I just wish I had more time to implement them ;).

Clearly the one that has the most chances to be implemented soon is to track the cumulative transformation since loading time (it's quite easy in fact). And saving/loading a transformation is also very easy.

For the dynamic decimation, you can already do this by computing the octree and then displaying it at a given subdivision level (as points) in place of the cloud. But it's not very straightforward right now so we should find a (proper) way to do this in a more 'user-friendly' way. And the first suggestion is very nice, but it's certainly the one that will represent the biggest quantity of work.

Eventually, regarding the Faro SDK (which I already have) I asked them a long time ago if we could find a way to use it in an open-source application (as their current license doesn't really permit this). But they never replied me (not even a 'no'). I can't blame them as their competitors did the same... I never got an answer from any of them?! So now I'm a bit fed up (and pissed off ;). Of course if you manage to get a positive answer from them I'll be happy to integrate their SDK.
Daniel, CloudCompare admin
Dimitri
Posts: 156
Joined: Mon Oct 18, 2010 9:01 am
Location: Rennes (France)
Contact:

Re: Some improvement suggestions

Post by Dimitri »

Hi Daniel,

regarding the FARO SDK. Any chance this could be a plugin in which you would not release the source code to be consistent with FARO licensing, but the plugin would be freely available ? I suppose that even if there was a small fee for it, many user would buy it as it would be extremely useful...

Having a Faro scanner, I can try to see if I get them to react. On the LaserScanning forum, Oliver Buckler (a FARO rep) is quite present, and could answer you.

Cheers

Dim
daniel
Site Admin
Posts: 7479
Joined: Wed Oct 13, 2010 7:34 am
Location: Grenoble, France
Contact:

Re: Some improvement suggestions

Post by daniel »

I wish you would gave me a new contact ;-) (as I already said I don't blame anyone personally as other point cloud processing software editors have ignored my mails as well - this just seems to be a general trend in the industry!).

The plugin solution is interesting, I'll re-read their license. And I would be interested to see what information you can get by asking them as a customer.
Daniel, CloudCompare admin
Dimitri
Posts: 156
Joined: Mon Oct 18, 2010 9:01 am
Location: Rennes (France)
Contact:

Re: Some improvement suggestions

Post by Dimitri »

I'll give it a try !
Post Reply