How to morph along a single brep with multiple faces


I’m trying to use the Surface Morph component on a unrolled pattern along a complex surface which contains curves, fillets and straight lines. But I am running into a issue where the base brep needed to be exploded to extract each surface leading to the entire pattern being repeated on each face. Is there a way to morph is pattern on a brep instead of a single surface?

Unroll Pattern:

Base surface:

Divided faces:

GH: (89.1 KB)


Sorry to chase up, but does anyone have a idea how to solve this issue?

You can fit a degree 3 curve to one of the boundaries of your brep and extrude that instead of the polycurve. The result of the extrusion is a single surface. Unroll this for your reference surface. (7.5 MB)

1 Like

Hey Martin,

Thanks for the reply, I have a few questions:

  1. Do you need the C# script you provided to achieve this result?
  2. What does fit curves actually do? I attempted to follow your script minus the custom code you provided, but for some reason it still produces a brep for me? I did make some small adjustments to the base curve as there is a high chance it’ll change throughout the project I’m working on.
  3. There is also some deformation in one corner, why is this? is it because the dimensions of the unrolled unsurfaced is incorrect?

Your script states the extruded surface is a untrimmed surface:

My script states the extruded surface is a brep:


Here is the base script trying to copy what you provided, I’ve highlighted the areas in purple which have changed: (7.6 MB)

I noticed the deformation just now and with a tolerance of 0.1 the problem seems to be solved.

FitCurve creates a copy of your curve with the degree specified. You did not provide an input for the degree so the curve which is created in your defintion has the same degree as the input curve. The essential difference of the new curve is that it can be extruded to a single surface.

The curve in the file you posted in the second file is not the same as in the first file. It has kinks and thus needs additional steps to be rebuilt into a clean curve. One way to solve that problem is adding a small fillet.

Unfortunately there is no native component to unroll surfaces in Grasshopper. You can also create the base surface with the Plane Through Shape component. That surface might have the U and V directions flipped so the plane might need to be rotated 90°.

Due to the random transformation of the upper voronoi boundaries the seam of the mesh doesn’t fit. (7.6 MB)

1 Like

I see, makes a lot more sense now! Thanks for taking the time to solve the problem and answering my questions, your help is greatly appreciated!

1 Like

Adam, it took a moment for me to figure out the right solution to create a seamless mesh for your case. The trick is to use a linear array and have the same transformation on the boundary on both ends. I haven’t tested too many locations of the seam but I think as long as it is on a straight part of the curve it should work fine. (80.2 KB)


Hey Martin,

Sorry for the late reply,

Thank for you solving that issue to I was curious if there was solution!

1 Like

Glad I was able to help you. This wasn’t my first ‘vase’ definition or ‘cylindrical’ voronoi but I was never really able to circumvent some of the seam related problems with surface mapping. I’m happy it worked out this time.

1 Like