Create surface from Point Cloud

I am fairly new to Rhino and am importing point cloud scans into rhino to create a surface that I can work with and analyze. I am looking for help to possibly create a script or find a more efficient process than what I am doing to surface.


Current Process

I import the point clouds and hide all the point clouds other than what I want surfaced. I choose arbitrary points on this point cloud (typically a roadway). These points could range from 500 to 1000+ and the processing time for rhino to catch up from this ‘lag’ could take up to an hour. After these points are made, then I will select the points and use rhino’s patch feature and trim.


What I have tried

  • Patch - patch all points on point cloud (Does sometimes work with little noise on a roadway but becomes uneven if there are signs,trees,etc and also can take an extremely long time or never patch)

  • MeshPatch - Similar issue as before with noise and also processing time when using the point cloud

  • Clipping Plane - Have tried using this to reduce noise on top of the surface I want. Similar to before, the processing time is too long for patch.

  • Clipping out points- I have clipped out points using Crtl+Shift and deleting anything above a roadway to create a smoother surface. Again, this would need to use all the points in the point cloud to process.


Possible Scripting Idea

I am not very familiar with the scripting language for Rhino, but it seems to be very similar to what I have dealt with in C++ and Matlab. A possible idea I had for scripting was to create a process of choosing these points from the point cloud in order to create a patch automatically. Lets say this roadway runs parallel to the y-axis and has a width along the x-axis. I would like to start a point at (0,0) and create points evenly spaced along the x-axis and then move down a certain distance along the y-axis (lets say 5 or 10 ft) and create even points along the x-axis again. Also, to distinguish if any points have moved to far along the z-axis from the previous point to eliminate noise.


As you can see, most of my attempts have been using the entire point cloud for patching. This takes too much time to process. I am posting here for feedback on if there is a different function or process I can use to speed up the time it takes to surface. Alternatively if there is not, then I would like any help in starting a script. Help in starting a script could be as simple as suggestion for rhino commands that I would use to achieve this.

Thank you for reading and any help in advance.

Hi Martin - hmmm - what’s going on here?? 500 or 1000 points is nothing in itself - what is the command you are using, exactly?

-Pascal

I appreciate the reply. I was able to improve surfacing by using just a couple of the point cloud scans instead of the entire point cloud population. But, I was mentioning using the patch feature and choosing around 500-1000 points in order to surface it. The process I am using now with just a subset of the point cloud population seems to be working well. If you have a better idea of how to do this, then please let me know.

Thanks,

Martin

Ah, OK - Patch with 500-1000 points could well be slow - an hour seems a lot though, I’ll fool around with that. It may well be that you can get a good surface with fewer points as input, but I’d have to see the exact situation… it depends on the level of detail required.

-Pascal

I also ran into another issue with using patch. What I am doing is taking a scan of a vehicle and trying to surface using the point cloud in rhino. Currently, I am using “Shift” + “Ctrl” to delete all but one face of a vehicle and patching this. After I use patch, I will “SelPtCloud” and then “UndoSelected” to revert the point cloud to the original and regain the color and entire point cloud population back while maintaining the surface. When I do this, I notice that the opposite side of the vehicle’s point cloud becomes missing. Any idea?

Thanks in advance,

Martin

Hi Martin - Here a patch on 1000 points is about instant. How big are the point clouds you are using?

-Pascal

The point clouds I use can be upwards of 20 millions points. Currently I am either using all of the points on the point cloud to create a surface, but it does not fit the surfaces very well if there is much curvature. I have a word document linked to illustrate the issue. I know that increasing the U and V variables can change this, but dealing with such a large amount of points causes it to crash. Typically I can only get it up to 15-20 without crashing. I also have the stiffness to ~0.3.

The other process I was talking about what patching a surface by creating new points on the point cloud, which creating new points on the point cloud can take upwards of 30 minutes to process about 1000 points that are along the point cloud. This patching process does happen about instantly.

Hi Martin - - it is hard to tell from the images, but it looks like you might be able to boost the density of the patch and possibly reduce the stiffness (in the dialog) and get a better fit to the points.

-Pascal

Thanks for the reply. I have tried lower the stiffness to about 0.3, but haven’t gotten better results. How can I increase the density of the point cloud? And will be this make the processing a lot harder to do?

Hi Martin - the density of the patch surface is what I would increase - set spans higher in both directions in the dialog - say 40 by 40, if you have not tried that.

-Pascal

Oh yes. The U and V, correct? I can’t increase it because rhino will then crash trying to process so many points.