Terrain mesh inaccuracies... 'Minimize Flat Areas' equivalent?

Hi there,

Using contours as the input, I have been experimenting with various ways to generate accurate terrain meshes using Rhino, Grasshopper, and also plugins such as Lands Design. All of the methods I have tested generate a common inaccuracy.

Essentially, it seems most methods use the Delaunay triangulation or similar, which often ends up creating triangular faces between 3 vertices on the same contour line rather than between two contour lines which results in flat faces that should actually be sloped. This is most common when a contour line takes a sharp turn causing control points on itself to be closer than those on the adjacent contour line.

I have included the image below to illustrate the issue:

The left half shows how all methods I have tried thus far generate the mesh. The green/yellow faces are areas that should be flat as there are no contours higher. The red faces are areas that are generated as flat faces but should be sloped.

The right half illustrates what I would like to achieve, with the red mesh edges forming triangular faces that are sloped when they should be.

I can manually edit the mesh to remove the flat sections, or use MeshFromPoints to get an approximation of the terrain, but neither of these is an ideal solution. I am hoping to find an automated way to generate accurate terrain that remains true to the contour data, with the control points of the contour lines used as the vertices for the mesh faces.

Is anyone aware of a way to generate meshes that conform to the actual topography in such a way?

Essentially the solution I am hoping to find would be the equivalent of the “Minimize Flat Areas” function in Civil 3D.

Hello - the only way I can think of in Rhino is to add some line segments - I realize this could get tedious - bridging across the flat area -



Thanks for the reply. Ideally any manual techniques like that would be a last option. I regularly deal with large landscapes requiring large meshes and as you said, such methods get tedious very quickly.

As a reference, I had a colleague generate a small test mesh in Bentley’s inRoads using the same contours and it did a much better job, resolving all but the most tricky areas. The comparison is below.

Again red areas = false flat areas

inRoads seems to be doing exactly the type of triangulation that I illustrated in the “Good” side of my initial post.

It would be incredibly useful to work out a way to implement a similar triangulation method using Rhino/Grasshopper.