I am facing a challenge modelling a terrain. I build existing terrain based of point cloud, but now I have to identify buildable ares. It is easy with the slope analysis, but in some areas I am allowed to modify the terrain to provide more usable area.
I can’t come up with any useful idea how to get this work.
I need a way to modify existing terrain by making some ares flat and be able to calculate cut and fill volume.(attached image, I would like to make red areas flat)
I also need a way to draw a road in 2d (easy) project road curves onto new mesh and blend the road with the mesh (see attached image)
I tried 3ds Max sculpting and then exporting points back to Rhino, but it is not a very precise way. And if I would have to change something I would have to go back to 3Ds Max.
Maybe there is a way to draw custom (control ) contours and then blend them with existing mesh? This way I will be able to adjust counters shape to fit the design idea ?
Well, this was amusing… I decided to build a road, carving out terrain or building it up as needed.
In ‘Top View’, draw a curve for the road on the ‘WorldXY’ plane. Make sure it starts and ends outside the bounds of the mesh surface.
Adjust the ‘Count’ slider to have as few points as possible but as many as necessary to follow the road accurately.
The ‘raise path’ slider will raise the projected points above the mesh surface, which can be helpful in reaching a “state of equilibrium” where the volume filled in is nearly the same as the volume of material excavated.
The two ‘Volume’ components are VERY SLOW - ~45 seconds on my laptop - and should probably be disabled while messing with other parameters. Sometimes a ‘Volume’ component will fail but a slight adjustment of a parameter will “fix” the problem.
Green in the image below shows “build up” or fill volume.
I can guess if you did the quick study in Ketchup you know how to 3D model.
Have you tried using the same components, step by step, in GH?
I guess: Curve, offset with several distances, move Z up and down…
You won’t be able to operate on the mesh vertices only. The chances of a specific vertex having an exact slope angle are vanishingly small, meaning you need to add a tolerance, meaning you’ll get multi-point regions in planarish areas and still gaps in wildly fluctuating areas.
If you mesh is strictly 2.5D (i.e. for any (x,y) coordinate there is at most a single z coordinate) then you can create a new mesh which encodes the slope of the existing mesh into its own elevation.
That is, take all the mesh vertices and replace the z-coordinate with the slope angle of that vertex. Then either recreate the mesh or use the Delaunay component. This will give you a mesh whose elevation equals the slope of the original, but crucially it interpolates the slopes between vertices. You can then slice this analysis mesh to get contours.
I did not project the contour lines back onto the original mesh in my example file: meshslopecontours.gh (19.0 KB)
I hope not, because that way madness lies. I would remove the delaunay component from the file and instead create the slope analysis mesh with the faces of the original mesh so it looks exactly the same from above. Then you can project your section polylines using Mesh Ray intersection.
How to move a collection of point to a 0.0 location ? I have one point selected and I want all other points to move relative to it. Basically moving all points but without changing their orientation.
Ok I started to work on road to mesh projection part and based on Eric’s definition.
His example uses single curve to create a road, but I need a real road with junctions and roundabouts.
So currently I have three questions:
Why Mesh | Ray projection doesn’t work? I had to use Project Point .
When I project all points to the mesh the surface I create is not flat, is there a way to interpolate a slope?
So left and right sides of the road are on the same level, but gradually rising with the terrain?
Also ho to subdivide and then build a poly line again so I have start parts with less points and more points on corner radiuses ?