Best Practices for Reshaping Complex Topography Models

I use Rhino for architecture and frequently build topography models that require extensive manipulation, including cut-and-fill operations and reshaping. Often, I deal with revisions that require restoring portions of the original topography, which inevitably results in a complex polysurface consisting of a mixture of smooth, undulating surfaces and sharp, orthogonal cutouts.

I am struggling to maintain a clean topography and blend “filled” areas seamlessly. I am looking for a more efficient workflow to achieve smooth transitions without persistent seam lines. My current approach involves:

  • Patch: Using Patch to bridge fragmented, non-tangent intersections between surfaces. This invariably results in surfaces that do not meet cleanly, leaving visible seam lines because the surfaces lack mathematical tangency.

  • Direct Control Point Manipulation: Attempting to force alignment by manipulating control points directly. This is laborious and inefficient, and I am unable to achieve clean, smooth transitions.

  • CageEdit: Experimenting with CageEdit, but finding it difficult to isolate specific local regions while maintaining a natural and smooth appearance across the topography.

  • MergeAllEdges: Attempting to collapse seams with MergeAllEdges, which consistently fails because the boundaries lack curvature continuity (G2).

  • MatchSrf: Using MatchSrf to force tangency, which has proven difficult due to the complexity of selecting individual sub-object faces within dense polysurfaces.

Honestly none of these achieve a acceptable result and I currently find myself rebuilding the entire surface from scratch when modifications are required to ensure the model remains clean, which is terribly inefficient.

What I am essentially looking for is a workflow that allows me to integrate curves into an existing surface/polysurface to reshape the topology if that makes sense. So if i could select the polysurface and then get Rhino to reshape it by “integrating a curve” into it.

Am I overlooking a more standard architectural workflow for this? Has anyone successfully sculpted similar undulating geometry without introducing new joints or creases?

I have attached some images which illustrate an example of a scenario i find myself in so you can perhaps better understand my dilemma. Imagine for example a scenario where a wall or a slab moves position and i need to smoothly reshape the topography to fit snuggly up against it (without having ugly joint lines or having to rebuild the entire thing from scratch).

This shows an example of what happened when we had to raise the slab level at the lower parking and i needed to reshape the driveway to accommodate that. I had to “add” to the surface and i couldn’t join the new shape cleanly into the existing polysurface.

In this case i created a patch where the new soil was and then extruded it and tried to Boolean Union that with the existing however the union failed (presumably because of the complexity of the surfaces). When i finally manage to get it to union it left horrible distracting joint lines between the surfaces…

What was the original source of the topography?

I build the topography from AutoCAD files i receive from surveyors.

Not sure if this will make it easier for you, but you might consider using Drape to create a new surface based on the existing one. The # of control points can be entered, then select the control points to be modified.

From what I can see it looks like you’re doing pretty okay. Solutions that can actually handle complex topography start at about $3,000/year and when things get complicated that stuff can break too.

Topography in Rhino can get pretty challenging. I find each site almost requires me to use a unique approach. Anything I share here is probably stuff you already know.

A few advantages I have are that I can get away with even 2-3" of tolerance as long as it’s not everywhere (just localized). I’ve also stopped using solids unless I really feel I need to. I think you want the solid for the cut/fill?

When I first create the surface/solid from the topography, I’ll copy it to a safe place. If I have to re-boolean difference the solid or cut the surface I will start with a fresh copy versus doing multiple operations on the same topo. If my foundation gets ugly I might make new geometry just for cutting. I usually don’t have to do this because foundations are almost always plane. But I have created cleaner (and ever-so-slightly bigger) geometry to make a cleaner cut. Anything that can be hidden by lineweights also won’t matter if I need quantities.

For creating the initial surfaces, I haven’t found the best workflow yet (or I might have and forgot already). But I sometimes create a mesh from points and then use patch on that mesh.

In my opinion, Drape is the better tool for this specific application, even compared to Patch in v9 where it is significantly improved. Drape is a lot less fuss and guesswork with precise spacing for the resulting control points. Of course the resolution is still limited and it will fail as well if pushed too far. Additionally, Patch does not produce consistent spacing between control points when using Refine, which must be used to increase the resolution.

What version of “Drape” are you using and what are you starting with? I’ve never had much luck with Drape myself.

Played around a bit. Drape creates a really cool result!! What I’m missing I think is that I need a starting surface (I was hoping drape would work with points or topo linework, it doesn’t as far as I can tell). So unless there’s something I’m missing I’m stuck with the other options:

I used Drape in v8.

Unfortunately Drape will not work with points or curves. If you have created a surface from the topo lines by another method, Drape will give precise spacing for the control points which would make moving them up or down in elevation provide very predictable results.

@cdordoni I have experimented with Drape and Shrinkwrap but i find that neither of them recreate the surface closely enough. Using Drape, as you suggest, in order to properly capture the contrast between the flat cuts and the undulating topography you need to set the point count extremely high which makes the file very heavy and also makes the surface nearly impossible to manipulate. I also notice that the surface is not entirely “smooth” there are a bunch or weird little waves in it. I tried to capture that in the second screen grab.

Well i like it being a solid so i can cut things out of it and so that it reads nicely visually. The subtraction part is not the problematic part its the addition to / restoration of the surface once its already been reshaped that becomes complicated.

Its very rare that i refer to Revit which i intensely dislike as a software but it does have a nice topography feature where you can add points to a surface at any point in time and it reshapes the topography in a nice clean/smooth way to fit those points. It also has a nice feature where designated elements (i.e footings) will “cut” a topography without actually “cutting it” so that if they’re moved or removed at any stage in the future the topography simply resets to its original state as though it was never cut. With Rhino however once you subtract from the polysurface you permanently damage it and in order to make any changes you need to rebuild it from scratch. Rebuilding it when you have complex footings and things like stairs with many faces becomes very impractical. There is also the issue where at some point when the surface is very complex Boolean commands start failing on the surface. Its all very fiddly and prone to errors. I am sure there is an alternative workflow which i’m not seeing. Or at least i hope so!

@Rhino_Admin Is it possible to add “Cutting Objects” to the Rhino 9 suggestions list by any chance? I forget how that suggestions process is handled but i recall at some point you were accepting user suggestions for features to add. In this case it would be wonderful if objects could be set to “cutting objects” so that they automatically subtracted (boolean difference) from objects they interacted with and when they’re moved or deleted the objects returned their initial state.

Add/intergrate/blend point/curve into surface/polysurface would also be incredibly useful!

Thanks!

Me too! Especially now with the section styles. I’ve made really good sections by drawing stuff in layout views only to be reminded that I can’t dimension to it any longer.

Haha! I really don’t like Revit either. But I do remember the automated cutting being really nice. I’m sure it can break at times though (it would be the first ever thing not to) - with Revit, when stuff works it works, and when it doesn’t you’re screwed.

I’m still establishing my workflow as far as site modelling goes and I’ve been having basically the same issues as you. I think if I get one or two more gnarly ones I’ll have it figured out. Basically just repeating why I wrote above (and probably stuff you already know), what I’ve found to work well so far is:

  • Creating the topo (something including the existing and/or finished grade surfaces) and saving it somewhere.
  • Only cutting once. If I have to make changes I just delete what I’ll call the “site” or “earthworks” massing, copy the original, and cut from that one.
  • For the worst cases, which for me is going to be curved geometry and/or lots of level changes, I’ll actually create a polysurface just for my boolean differencing. The key is to keep it smooth even if you simply it a little. I don’t mind the odd line deviated here and there and the majority get concealed by the lineweight when I print.

The last one is admittedly not a good solution and I’m trying to not have to do that. I really want to get better at this so I can even do things like model the gravel fill (and even the drain tile) among other things.

I always keep a copy of the uncut topography on an “off” layer so i can attempt to restore something that i change however once you’ve cut the original you wont be able to boolean objects with it cleanly. If it does boolean (often it wont) you’ll see the unsightly lines on the surface between the original surface and the piece you’ve tried to add. I think this is because the surface changes ever so slightly when you cut pieces out of it and rhino wont see it as a continuous surface. Its a bit anal but i hate see the ugly joint lines everywhere. I find it distracts from the info which you’re trying to illustrate which is the topography and where it interects with objects.

It doesn’t take many cuts from the surface it become very complicated very quickly and then as i said you’ll often find that the boolean commands stop working (boolean failed).

Another scenario which i find very hard to model is driveways and roads that need to cut through a surface and maintain a smooth gradient. These are very difficult to model and a NIGHTMARE to edit. In the past i have spent hours modelling a beautiful driveway winding up a hillside (almost all the sites i work on are steep and have very uneven terrain) and then there is a change and the road gets moved or widened or straightened and I literally have to start the entire thing again from scratch. It is horribly inefficient and i waste ridiculous amounts of time doing that often knowing that its bound to change. I just hate the the idea of sending something out on the model that isn’t precise.

i remember we talked briefly about this two years ago, but i am not happy to report that in two years, i also haven’t found alternatives to this type of problem :frowning:

my contours-in-MeshPatch-out workflow works pretty well, but i haven’t needed to use it in a while. the basic premise is that you do everything you need to do by modifying projected 2D contours, then mesh patch those contours to get a mesh and then clean it up. it’s all a mesh but we’ve used the workflow for cut and fill exercises before we had a civil engineer on a project.

i feel like there’s gotta be ways to get what you’re going for through adjusting view settings. i was able to get this shaded view to work by hiding all the mesh wires and turning off the lighting (the black lines are the input contour lines):

Copy of Shaded.ini (13.9 KB)

Hi @BTH nice to hear from you again.

I remember our back and forth in 2024. I’ll be honest I never managed to apply your "curves-in MeshPatch-out” method. I am one of those Rhino users that has never taken the scary step into grasshopper. I don’t know if you recall what it felt like before you learned Grasshopper but for me its all a bit overwhelming and I have never felt that it is useful enough for what i do (which is typically orthogonal architecture) to justify mastering. I also felt that it introduces a level of abstraction and complexity which could result in me screwing things up in the model which is something i really encountered when i tried to teach myself Revit (family editing and parameter management). I ended up abandoning Revit because of that frustration.

Anyhow i appreciate you bringing that chat back to my attention. In your opinion would it be difficult to play with your GH script as someone who has never really used it before? Having AI this time around will help a lot no doubt.

One issue with this is that I usually apply the aerial photo to my topography surface to really give a nice idea of the site conditions. It also helps me model the site. You need to work in rendered mode for that. I have never applied an image to a mesh before but i am guessing that it doesn’t nicely map on it like it will a polysurface. Also, as you bring up, the mesh seams will totally obscure the image (especially if they’re dense).

I thought plugins like LandArchGrade or LandKit Topo are interesting and nice-looking workflows, but I have yet to pay and try. If you want surfaces with editable contouring by modifying contour curves rather than surface points, I recommend using Grasshopper, inputting your contour curves and creating a mesh/surface from them. So when you modify or change those curves, the grasshopper would update live. When you’re satisfied, bake the mesh/surface (This would likely be a hassle if you’re working with an entire neighborhood as your site, but a single property should be easy to handle). I did something similar to this to design a topographical water feature when I manipulated surface points and used grasshopper to create contour lines from the surface for feedback and documentation.