new features needed for Point Clouds

To post any request/idea for new functionalities
Post Reply
timcoddington
Posts: 3
Joined: Thu May 02, 2013 4:34 am

new features needed for Point Clouds

Post by timcoddington »

Hi,
First, I want to acknowledge that CloudCompare has been a very useful tool. It's has a lot of the features I've been working on in my own editor, but I think CloudCompare will save me a lot of time.

This is my first post and I'd like to get answers to some questions I have, so please bare with me.

Q1: Here are a set of features I need that are not directly supported by the CC. I'd like your thoughts on what I can expect or how I should get started implementing a plug-in.
o Rotate and Translate, Delete, or Split all points within a dataset after a selected point. Assuming that the rendered points for a selected dataset are accessible in the same order as the imported file. For example, the currently Rotate and Translate operates on the whole data set(s) read in from imported file(s), per user's selection. The selected point within a single data set being operated on would be the center for a rotation, if it were performed. Translation and rotation would be performed on all of the points after (based on order) the selected point. Also the current version of CloudCompare, allows you to draw a polygon around a region of points which can then be split apart from the original data set. The capabability would make possible a range of operation that are performed on all the points after a specific point in the data set.
o Take a slice of points from a data set, where a slice has a chosen "thickness" and can lie parallel to the XY, YZ, or XZ planes. Once selected, one of several operations my be chosen to be performed, e.g. "Collapse", where for example all the points in the XY slice are flattened to the same z.

Q2: Is there any documentation on how to build a plug-in? Is there are example template for plug-in available?

Q3: Can you reference a specific plug-in that might serve as a good example and starting point for implementing the first feature above?

Q4: The first thing I saw missing that I thought would be helpful is a background grid, along the Z=0 plane and so I implemented the changes in CC. I've done some OpenGL programming and knew what to look for in order to get it properly implemented. It appears to work well. If interested, how do we feedback the changes we made for others ot implement or to be put into the base code?

Thanks you.
daniel
Site Admin
Posts: 7710
Joined: Wed Oct 13, 2010 7:34 am
Location: Grenoble, France
Contact:

Re: new features needed for Point Clouds

Post by daniel »

Hi,

Q1-1) By default, the points order remains the same as the input file one. It only changes if you apply (re)sampling or if you cut-out some points with the interactive segmentation tool or the scalar value-based segmentation tool for instance. Wouldn't a simple method to split a point cloud relatively to a given point (index) be sufficient to do all this? The result would be two clouds, just as the interactive segmentation tool actually works (the scissors icon).

Q1-2) A cross-section tool is currently under development. It should meet your needs. It will take some time however before it's ready. Meanwhile, you can use the 'Tools > Projection > Export coordinates to Scalar Field" tool in order to create a scalar fields with the (for instance height) values. Then call the "Edit > Scalar Fields > Filter by value" tool (or play with the dedicated widgets in the cloud properties dialog) to select only the points falling in a given range of (height) values.

Q2) Look at the qCC/plugins/qDummyPlugin for a template. Don't forget to update the CMake files (in qCC/plugins)

Q3) I guess that the qPCL plugin is a good example (not in the way it internally works, but in the way it creates on initialization multiple "actions" - QAction instances - that each correspond to a new tool bar icon. Each action has its own 'slot' that is called when the user click on the corresponding icon). In your case, you can simply copy the code for each method (rotate/translate, etc.) from the MainWindow class and maybe spawn a dialog first to choose the 'splitting' point. If there's high redundancy we will sort out a way to share the code later.

Q4) Yeah, great! You should 'push' your change with git (see the github interface: https://github.com/cloudcompare/trunk). You'll have to create a github account if you don't have one already.
Daniel, CloudCompare admin
Post Reply