Building from point cloud and outline

Hi everyone!

I have been trying to figure out how to solve this myself, but I just can’t figure anything even remotely smart. I’m trying to create building representations from laserdata points and outlines. Since the points don’t follow the corners of the buildings, I don’t know how to make it nice and boxy. Does anyone have an idea on how to do it?

I’ve included a crude drawing of how it should look, sorry about the ugly lines :slight_smile:

I’ve also included a grasshopper file with the points and outlines. I’m going to replicate this on quite a lot of buildings when making site models, that might be good to know.

Thank you and have a good day!

Building from (41.5 KB)

Your question is a bit unclear.

Does this mean you need to use the outlines you’ve drawn?

If yes, then why try to rely on the points?

If you’ll use outlines defining the boundaries, then why not separate the pointclouds into sections, which you can enclose with extrusions of each outline?

Sounds like a nightmare of impossibility. Will you draw outlines for every pointcloud?

Is the outline you’ve provided drawn by you or automatically generated with a pointcloud software/plug-in?

I ask because there are discrepancies that will affect extrusions if you went that route:

0. I work with pointclouds often so I’m trying to be of help :wink:

  1. Pointclouds are a pain in the ass.
  2. Pointclouds are a bigger pain in the ass using Rhino.
  3. There are plug-ins for both rhino/grasshopper but #2 is still true.

Perhaps a viable option for your current file can involve:

  • separating your outlines into regions:
  • extruding these outlines to the ‘height of each pointcloud’ once you split the clouds into separate ones based on actual as-built parameters:

    You’ll quickly realize that even this quickie isn’t reliable as some points will ‘share walls’ and will affect the separate heights.
    Nonetheless feel free to check it for possible insight:
    Building from (62.3 KB)

Alternatively you could look into CloudCompare’s shape detection, or poisson reconstruction - betting you’ve probably heard of it. Test it for your pointcloud(s) and see if you can generate meshes automatically, which you could trim to your outlines aftwerwards:


wait for it…

yes, it will suck :slight_smile:



Oh yeah I forgot, you could also use convexhull to isolate planar outlines per each pointcloud region:

They will not be rectangular though. Probably pointless (lol, no pun intended) because you already have outlines…

Another approach could be to segment the points into groups that are mostly coplanar using Lunch Box’s GaussianMix and AssignPaths from Tree Frog, find their 2d minimum bounding boxes with Minimum Bounding Box in a fitted plane, intersect these bounding boxes with the building footprint, then create volumes from each region. Splitting the footprint as @anon78208900 recommends would help clean up the small steps in the tower profile. (58.5 KB)



Here is also a very quick test using Cockroach.

1 Like


Thank you so much for all the input, it looks very promising and I look forward to testing it as soon as my work load lightens!

About the input, the point cloud is not as dense as what I would like, and the outlines comes from another file, so I don’t create them myself.

Kind regards, and THANK YOU SO MUCH again!

Hi @Adam_M and @Brian_Washburn

Both your ideas worked very nicely, so I thought I’d challenge you a bit more! I tried to build upon your ideas myself, but so far I haven’t been able to create anything useful. The biggest struggle has been sloping roofs, which I don’t really know how to handle. There’s also the matter of replicating the over several, which I’ve managed half-well.

I’m including a gh file with 70 buildings sorted with their outline and their point cloud. Any ideas on how to work them?

Thank you, and kind regards
Kaj (751.8 KB)

Hi @Kaj.AL
I highly recommend @Adam_M 's approach with Cockroach. You may need to play around with the NormalThresholdDegree and MinClusterSize, but you can get some decent clusters per roof plane with the CloudClusterCilantro component. I found when doing all the buildings at once, those settings didn’t work for every building, so you may need to do some individually.

70_buildings_cloudandcurve (771.8 KB)

Hi Brian!

It works so well with so many buildings! Amazing! Unfortunately a few of them seem to behave weirdly, especially when there are too many planes intersecting.

I did a few changes to your model, but I still couldn’t figure out why these issues happen. Do you think it’s because of the Cilantro settings, and is there anyway to work around it without having to make changes manually?

Thank you!
/Kaj (2.0 MB)

Hi Kaj,
I think my definition could use some refinement, but ultimately I believe it comes down to the Cilantro settings. I’ve seen papers like this use CGAL to do what you are after, I just don’t know how to implement it in GH.

Have there been any advancements on this topic? I got satisfying results for LOD2 buildings with a trial version of Lidar360, but the program is way too expensive for this use case only.

No, not really. It proved to be quite difficult to achieve good volumes for different kinds of buildings. If you have any good ideas I would be interested to hear them!