Skip to main content
Question

Extracting Top Surface from 3D Solids

  • November 22, 2021
  • 4 replies
  • 88 views

kelvin.jenkins
Contributor
Forum|alt.badge.img+5

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

virtualcitymatt
Celebrity
Forum|alt.badge.img+35

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

 

 


virtualcitymatt
Celebrity
Forum|alt.badge.img+35
virtualcitymatt wrote:

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


virtualcitymatt
Celebrity
Forum|alt.badge.img+35

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


kelvin.jenkins
Contributor
Forum|alt.badge.img+5
  • Author
  • Contributor
  • February 18, 2022
virtualcitymatt wrote:

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


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings