Rebuilding a Surface and Mesh (Mesh to Surface Conversion)

Hi Everyone,

Im quite new to using grasshopper and I have somewhat of a similar request. I have a surface (Layer v1) I was forming as a roof for my project however it has become far too complex. I tried converting it to a mesh (Layer mesh) and remeshing it but now I want it to convert it back to a surface while also smoothing it.

in my grasshopper file my first cluster is where I tried to turn it into a surface, however it doesnt look very good at all. So I wanted to try after to try and rebuild my surface from a set of rebuilt curves in the second cluster. However, I do not know how to continue. The rebuilt curves are on the layer (Rebuilt Smooth).

I would greatly appreciate any help in Reconstructing my roof surface. Whether that is:
-Somehow making my original surface less complex, without ruining its shape
-Turning my Mesh into a replica surface and not an ugly surface
-Or Rebuilding my surface from my mesh curves (15.4 KB)
I cant seem to upload my rhino file as its too big but Ive added it to a dropbox

Thank you all for the help.

1 Like

Hi @Jasper_W - maybe this should have been a new topic?


Your V1 layer has an open surface in it - when untrimmed (for checking), there are some issues with it:

I assume that’s why you ask if there’s a way to make the original surface less complex - however a relevant question would be why is the surface like this in the first place? Can’t we avoid it being made this way?

What do you mean by ‘it doesn’t look very good’ ? Are you referring to its creased appearance as opposed to a smooth one?

You can turn your 4-point surfaces into quad meshes, join them, and convert to a SubD object so it looks ‘smooth’:

Obviously the SubD isn’t a ‘surface’, but maybe it doesn’t matter?
Another fair question would be if you’re looking for a single, untrimmed surface - then it would matter I guess :slight_smile:



Hi, thanks for answering! Oh sorry this is my first time posting and I just came across this thread while looking for answers.

When I was saying it doesnt look very good I was referring to the surface that can be baked from the top cluster on grasshopper, which isnt yet baked in the rhino file, as it just doesnt achieve the result I’m looking for.

Ah yes that definitely looks pretty good, although ideally as you have mentioned I would like to end up with a single untrimmed surface. Would you have any idea how to do that? I dont know if you had a look at the resulting surface from the original grasshopper file I had, but as you might have seen that one doesn’t end up looking very good at all.

Also were you able to have a look at the curves as well? On my grasshopper file I also have a cluster where I try to rebuild the curves from my mesh, which you can see in my picture as well. The curves looks a lot smoother, so I would love to be able to make a surface that follows these curves somehow.

Thanks for all the help!


This is going to be tough or not really doable given the shape you’re dealing with - to get a single untrimmed surface, such surface would most likely need to exceed the boundary of your trimmed region - plus it seems you’re trimming it for a reason, so you’d end up trimming it again for the surface to be within your roof trim boundary. I did see what you’re doing with the rebuilt curves, perhaps to loft them or to make some grid via curve divisions - nonetheless your curves have been obtained from sectioning a trimmed shape - hence the transition from curve to curve (some short, some long, some split into 2 curves from plane-surface intersections) will not give you the desired result.

I’d say you’re better off with the SubD method.

1 Like

Ok I see, would it be possible to end up with a trimmed surface instead of a subD?

Also I must say the rebuilt curves do give a much smoother form and is more what I’m after, is there no way at all to build a surface from that?

Either way appreciate all the help :slight_smile:


Once you get the SubD, you can convert it into a brep, which gives you a polysurface - it’s not the same as a ‘trimmed surface’ just like your original open surface wasn’t, but it would have a smooth appearance.

You can feed these curves (and boundary points) into a ‘patch’ component, which will give you a single untrimmed surface approximating your rebuilt curves (as mentioned before this surface will exceed your curves and you’ll probably want to trim the surface again based on your roof boundary) - nonetheless the patch will remain as an approximation only, and not an exact transition from curve to curve - again, up to you whether it should matter or not - you can play with adjustments in the patch component, divide your curves by same length, pull these points onto the patch surface, and get a ‘sense’ of the ‘deviation’ from the rebuilt curves to the patch surface by measuring the distance(s) between curve division points and pulled points - just keep in mind patch adjustments can turn out to be slow: (20.5 KB)

In this particular instance as you can see the average distance from curve division points (every 100 units) to the pulled point is 0.04 - perhaps not bad if ‘0’ isn’t the goal.


@Quan_Li - considering your take on this other topic, what would you do here? :stuck_out_tongue:

1 Like

I don’t have “drop box”, can you upload just the curve network? Or ‘original surface’?

I’d probably do it manually.

triremesh (20.7 KB)

You can convert that Subd to Brep



Thank you for taking a look at this! It definitely looks like it follows the form quite well in the preview, however I must say once I bake it it shows some areas that could perhaps be a bit smoother. Do you Have any suggestions perhaps from here how the form could be made more smooth?

Perhaps it has to do with the mesh edges that I extracted, which don’t seem to be very smooth. It seems when I tried to convert it to a simpler mesh the geometry became less smooth. The edges from the SubD solution seem to be a lot smoother than the mesh I used. Perhaps there is a way of making this trimmed patch look somewhat smoother?

Hi Quan Li,

Thanks a lot for joining the discussion :slight_smile: The image u have added seems to look quite good!
I must say that I cant seem to be able to run this gh file though. Are you using any plugins?

Also from what I can see I am assuming you are using the original surface, am I correct? It seems to be simplified quite successfully! Thank your for that. My secondary goal other than simplifying the surface was to smoothen the geometry a bit, perhaps get rid of some of the edges that are draping too much. Something that I have attempted to do using a few methods and what some of the other people have touched on as well. Would you have any advice on this?

All the best,

I keep it short, because its, in my opinion, the only correct answer to the topic of mesh-to-surface conversions. Although professional reverse engineering software has made great progress and occasionally a workaround in GH is feasible, a perfect conversion is hardly doable at this point. And this is because a surface model is more than a mesh. There is a lot of guessing involved in this process. You either build and stick to surfaces, but this requires a decent understanding of this kind of modeling. Or you choose to model it in a different form (mesh, sub-d, clay-scan etc) and then you remodel it manually based on this template. And of course only if you require a surface model at all. I hope this helps you somehow, at least this post should prevent you from wasting your time too much

Did you try adjusting patch spans/flexibility to see if you get a ‘more loose’ surface?

Might be better to make sure the surface has the ‘smoothness’ you prefer prior to trimming.


Yes thank you, I think I’ve got somewhat the result I had in mind, using your prior help. Would you have any idea about the reply @Quan_Li gave me and why it might not be working, since I have not heard back from him. Are there any plugins he has used that I need to get? Thanks for all your help so far Rene.

triremesh (20.1 KB)

I just remeshed your surface. TriRemesh worked at first, but now somehow it doesn’t work. So just do the QuadRemesh.


Starting from an extrcted RenderMesh of surface V1, then using the Tolerance based Surface Approximation to Mesh vi RhinoReverse RROnePatch commad gives the results in the attached files (Tolerances used 100 and 1000 ‘units’).

roof-renderMesh-to-surf-via-RROnePatch.3dm (1015.7 KB)


Hi Stefan thanks for the reply, I appreciate it a lot. I’m unfamiliar with the command, whats the exact command?

Hi Quan Li, Im just coming back to this now. The result looks very good, but even with a quadremesh I cant seem to get it to work.

This is in the offset loop cut