Best way of creating nurbs site topo from large mesh imported topography?

I’m working on making a large site model and imported data from TouchTerrain as it was the easiest way for me to find decent quality topography for my location. However, I want to work with this in grasshopper and with other nurbs objects, so I need to convert the mesh to a nurbs surface/polysurface. Workflows like QuadRemesh subd and then ToNurbs doesn’t seem to work here because of how large the mesh object is, it just processes forever and the final nurbs object is so complex and heavy it’s almost unusable. I was trying to use the Drape command which returns a very clean and computationally light surface, but even when trying to maximize the vertex points/UV count, the drape is still far too inaccurate for what I’m looking for. There is an error of sometimes what looks like 10+ feet, and I would like to see only about 1-2 at most if I can help it for my use case. I have uploaded some pictures of the differences between the two. I turned off mesh wires so it’s easier to see the difference and overlap between the original mesh and the drape. The drape nurbs surface visually has odd smooth parts but I’m guessing that that is just a rendering error. The file is a little too large to upload here so I included a media share link.

Any workflow advice is great! Perhaps I could get my topography from a different source that’s already nurbs, but haven’t found any really. The site location is in San Diego, CA.

Mesh visible


Mesh hidden

(It’s kind of hard to tell when just looking at the pictures but when flipping back and forth with hiding and showing makes the difference more apparent)

Edit: Updated file link to correct file and explained location.

Hi @Dane_Sosna,

Do you need the same detail/density for the entire file you upload or just a portion?

You could have location or locations of “variable density” for more precision closest to your building site for example and less precision further away.

My next question is why NURBS? in other words, what is the next logical step after having a NURBS topo of your site, you then aim to do “X” next?

Answer to that question will determine how I think you should process your topo mesh initially.

Thanks for clarifying!

Any conversion to NURBS will interpolate the surface and increase the deviation from the original mesh. Its impossible to have NURBS without the interpolation. Therefore, you need to carefully consider why you need the NURBS and then you must accept the deviation if you need NURBS

Or, find a different process that will work with the mesh.

I’m trying to make a site plan that is deformed to the topography. I’ve attached some images to help explain.

So I was given the site buildings and surfaces shown here. They were all completely planarly aligned on the bottom. I originally got them as meshes from a SketchUp file, but because I need to be cutting pulling them I wrote a few grasshopper scripts to convert everything to NURBS and simplify some of the geometry.


image

However, the important part is this area here.

This is where we’re working to propose and the site has a decent gradient/slope of about ~10 feet across it’s north south length. Considering the building will be small, it’s important that we have a somewhat accurate topology map so we can account for cutting or filling. This is only preliminary so there won’t be any surveying, or any super accurate data collected by us at this time, and the original mesh I found seems to be detailed enough.

In addition is the flow of people through the campus, and because there is a slight slope, we want to have this in our model when we’re designing for certain views or approaches.

I don’t have a good justification for all the topography detail 100 feet away from the campus boundary, but we still want to preserve some detail and information as we might want it later.

The way I made site map I have now is as follows. I took the original mesh and did a drape over the top of it trying to max out the values at about 1500 U and 1500 V, but it scales down anyways to somewhere around 700 U 500 V.

I then situate my planar site information over the drape to align as closely with the topology as I can use a small grasshopper script that is able to move all the buildings down to the topology. There’s almost 2,000 buildings so there’s no chance I want to do this by hand. I originally was just trying to use the original mesh but grasshopper was working incredibly slowly with the script I had written which utilizes the Project Point component to get the vertical movement distance for each object. With the mesh it took a tremendous amount of time to compute for some reason but with the NURBS drape it could do it in a few seconds.

The next part was to get the site surfaces (roads, grass and landscaping, sidewalks, etc.) to matchup and follow the topology. I did this by taking the planar surfaces, open extruding them downwards into the topology, splitting the topologys, doing ShrinkTrimmedSrf to save file size, move the trimmed surface up the amount I want, say move roads up 1’ above the topology to elumate road height, or 1.5’ vertically for sidewalks. I finally take the surfaces gumball extrude them directly down below the topology and then Boolean Split to clean up the underside and make it them all flat together.

Now to be fair, it’s not mission critical that everything be a closed solid, the surfaces could just stay as surfaces, but I also want to be able to possibly adapt this for render, and having gaps on the sides where the sidewalk is 6" higher than the road isn’t ideal.

I’m aware that converting from mesh to NURBS in anyway will lose precision, but that’s okay, I’m not looking for inch or sub inch accuracy, just not huge swings that could turn a 10’ slope deviation into a 5’ slope. I could try to cut out the campus site from the original mesh and then do a QuadRemesh subd then ToNurbs and then try to match up a drape for the surrounding topography. Perhaps that would be best, but I’m still interested in other workflows. In a perfect world I could have this all done in grasshopper so that if surface boundaries are changed or added, I can just add them to the planar model and then the script will do the rest of imposing and conforming them to the site. I tried doing this but because of the computation complexity of all the operations put together, it ended up being a better option for me to chunk it and do it manually.

Thanks for the help.

That’s entirely dependent on the geometry at the location where a significant change occurs within a relatively small area in relation to the whole. That’s the reason you don’t use NURBS if the interpolation is smoothing out the detail you want. I suppose you could cut out the areas that are problematic after you generate the entire surface and then try to create a new surface that more closely matches the mesh in specific areas. Of course, that translates to a lot more manual work.