Skip to main content
Question

Filter lowest part of mesh


jdh
Contributor
Forum|alt.badge.img+28
  • Contributor

I have a detailed mesh that is concave in parts so there are multiple surfaces for a given x,y coordinate. What is the best way to filter the mesh so that there is only the lowest surface at any given point.mesh1mesh2 

7 replies

hkingsbury
Celebrity
Forum|alt.badge.img+55
  • Celebrity
  • July 12, 2021

I can think of some really inefficient and buggy ways, such as converting the mesh to points, 2d forcing (keep z value as attribute) find duplicate points, then 3d force and rebuild the mesh. This may work on simplier areas, but has the risk of completely changing your mesh when its rebuilt...


jdh
Contributor
Forum|alt.badge.img+28
  • Author
  • Contributor
  • July 12, 2021
hkingsbury wrote:

I can think of some really inefficient and buggy ways, such as converting the mesh to points, 2d forcing (keep z value as attribute) find duplicate points, then 3d force and rebuild the mesh. This may work on simplier areas, but has the risk of completely changing your mesh when its rebuilt...

I was thinking something along the lines of

  1. break the mesh into individual faces/triangles
  2. store the centroid Z-value as an attribute
  3. find overlapping triangles (create list of overlapping centroid values)
  4. filter out any overlapping triangles whose z-centroid value is greater than the lowest z-value in the list
  5. rebuild the mesh with the remaining triangles.

 

This does seem like a brute force approach, and I was hoping someone with more experience with meshed or 3d in general has a better option.


virtualcitymatt
Celebrity
Forum|alt.badge.img+38

Not ideal..but one method could be to try the following:

Flip mesh (so -z is up). SurfaceFoortprintReplacer to get polygon, drape polygon over inverted mesh with surface draper.

not the best method because recalculation of the surface needs to happen but depending on your use case it might be ok​


jkr_wrk
Influencer
Forum|alt.badge.img+29
  • July 15, 2021

I managed to do this for a pointcloud with the PointCloudSorter and a NumericRasterizer. But that is no surface.


hkingsbury
Celebrity
Forum|alt.badge.img+55
  • Celebrity
  • July 18, 2021
virtualcitymatt wrote:

Not ideal..but one method could be to try the following:

Flip mesh (so -z is up). SurfaceFoortprintReplacer to get polygon, drape polygon over inverted mesh with surface draper.

not the best method because recalculation of the surface needs to happen but depending on your use case it might be ok​

Thats a good one


jdh
Contributor
Forum|alt.badge.img+28
  • Author
  • Contributor
  • August 3, 2021
virtualcitymatt wrote:

Not ideal..but one method could be to try the following:

Flip mesh (so -z is up). SurfaceFoortprintReplacer to get polygon, drape polygon over inverted mesh with surface draper.

not the best method because recalculation of the surface needs to happen but depending on your use case it might be ok​

I may be doing something wrong, but even in drape mode model, only the perimeter of the polygon is given a z value.


virtualcitymatt
Celebrity
Forum|alt.badge.img+38
jdh wrote:

I may be doing something wrong, but even in drape mode model, only the perimeter of the polygon is given a z value.

oooh yeah right, draping will only drape the vertices. You'll need to replace the polygon with a bunch of points I guess. Then once the points are draped you can use a SurfaceModeller to produce the TIN


Reply


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