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.
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 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
- break the mesh into individual faces/triangles
- store the centroid Z-value as an attribute
- find overlapping triangles (create list of overlapping centroid values)
- filter out any overlapping triangles whose z-centroid value is greater than the lowest z-value in the list
- 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.
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 managed to do this for a pointcloud with the PointCloudSorter and a NumericRasterizer. But that is no surface.
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
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.
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