Question

Extracting Top Surface from 3D Solids

  • 22 November 2021
  • 4 replies
  • 8 views

Badge +1

I'm trying to extract a tin surface from 3D solid mesh in an FBX file.

Ideally we would extract the top and bottom as separate surfaces.

Any Ideas?

If it isn't possible to filter the top/bottom triangles to create a surface, is there a workflow to create a raster grid sampling the highest/smallest Z at each point?


4 replies

Userlevel 4
Badge +26

I think there is a custom transformer which can be used to help with this (sort of) - Check out the PointCloudDuplicateRemover.

It takes a point cloud as input (just use a PointCloudCombiner first). It works by 'snapping' the points into a grid of some given size and sorting by some value (you would pick z descending). The resulting point-cloud can be fed into a NumericRasterizer which should give you the hingest points - This can then be fed into a SurfaceModeller to give you the top surface. I've found the results to be a little bit variable but for the most part i was happy

 

 

Userlevel 4
Badge +26

I think there is a custom transformer which can be used to help with this (sort of) - Check out the PointCloudDuplicateRemover.

It takes a point cloud as input (just use a PointCloudCombiner first). It works by 'snapping' the points into a grid of some given size and sorting by some value (you would pick z descending). The resulting point-cloud can be fed into a NumericRasterizer which should give you the hingest points - This can then be fed into a SurfaceModeller to give you the top surface. I've found the results to be a little bit variable but for the most part i was happy

 

 

some more discussion: https://community.safe.com/s/question/0D54Q00008mGHAjSAO/filter-lowest-part-of-mesh

Userlevel 4
Badge +26

Alternatively you can also deaggregate/extract the surfaces and use a PlanarityFilter to get the surface normal vector. Anything positive will be an upwards pointing surface (like a roof) and anything negative will be pointing down (like a ground surface). Vertical surfaces will be 0 (or veeery close to 0). This is a good process for buildings

Badge +1

Alternatively you can also deaggregate/extract the surfaces and use a PlanarityFilter to get the surface normal vector. Anything positive will be an upwards pointing surface (like a roof) and anything negative will be pointing down (like a ground surface). Vertical surfaces will be 0 (or veeery close to 0). This is a good process for buildings

Nice one, I think thats worked well, thanks

Reply