Hi all,
I’m trying to use Box Morph to project a pattern, which doesn’t have a square boundary, onto a curved surface so the corners of the pattern fit together. Is this possible or if I’m using the incorrect method?
I’d like to gradually reduce the height and fade out the pattern toward the edges of the curved surface. Is this something that can be done using Box Morph too?
Any help with this would be greatly appreciated, thanks.
Grasshopper Help.gh (52.1 KB)
Hello,
I got something fittinh - I hope - your description, using Sporph
.
The problem I see here with Box Morph is that your input’s contour is not a rectangle, so you will always end up with a gap between repetitions. The array, although “rectangular”, does not follow the world axis.
I chose to not cover the entire surface, but you could also rotate your pattern slightly to fit closer to the surface edge - a scaling is still needed and left as an exercise to the reader
For the height reduction, I calculated the distance from the center of the pattern to the surface edge, but there are obviously other possibilities (mapping from UV coordinates, with a math equation or with Graph Mapper…). For the record, it could be done with Box Morph, by moving more or less the upper corners of your target box.
Grasshopper Help.gh (55.1 KB)
Thanks for your help, I really appreciate it!
I have a few questions about the definition:
If I want to rotate the input pattern by 45 degrees so it’s in a diamond formation instead is this something that I can do in the definition? I’ve tried rotating the physical pattern in Rhino and didn’t get the desired result (Please see my attempt in the image below).
I’ve noticed that you unroll the target surface before using Sporph. I was wondering if it possible to apply the pattern to a brep with multiple surfaces like the bowl in the image below? What I’d like to achieve is that the pattern blends up the sides of the bowl while also gradually reducing in height toward the top of the surface boundary. I’ve included a quick sketch of what I mean.
Thanks again for your help!
Grasshopper Help (1).gh (116.5 KB)
Grasshopper Help.3dm (476.3 KB)
Hello,
A few more ideas to play with.
For the diamond rotation, I culled one pattern every two. The global rotation of 45 degrees is still needed, then reposition the base surface on it.
It is also possible to rotate the pattern, but in this case you have to modify the calculation of the repetition vectors in “X” and “Y” directions. Your pattern does not follow an orthogonal array, which actually is a problem for the repetition around the bowl, I can’t get the patterns to be perfectly aligned.
An unroll is not necessary, but the base surface should have the same dimensions in U and V for Sproph to give decent results. Otherwise the object will be stretched. I managed to rebuild a base planar surface based on the rail dimension
Also, UV mapping only works on surfaces and not polysurfaces. So you could work on half the bowl and then mirror, or rebuild your surface using Sweep.
The height reduction can be achieved with Box Morph, or Taper
, which is what I did.
Grasshopper Help (1).gh (116.5 KB)
Hi magicteddy,
I’ve been working with a new pattern and have encountered an issue with the surface edges not joining when I scale the pattern and was wondering if you knew how to fix this? I’m also having an issue with the pattern stretching when it’s projected onto the curved surface and wondered if there Is a way to fix this too?
Thanks for your help with this so far!
Pattern Help - Box Morph.gh (267.8 KB)
Hello,
The scale component acts piece by piece and not continuously, which creates gaps between the rows.
I’m assuming you want to obtain the thing on the right, but right now this creates the thing on the left.
I don’t have an idea right now, I will search a bit more later on.
For the stretching issue, I solved it by rebuilding the base surface.
Great, thank you for your help!
Got it by constructing some Twisted Boxes along the surface.
Pattern Help - Box Morph.gh (270.3 KB)
2 Likes
Thanks for your help with this! I’ll have a look now
Hi again @magicteddy ,
I’m working with a simpler tile which follows an orthogonal array but the issue I’m having is morphing it onto my bowl surface. I’ve tried it using the bowl as either a single surface (which isn’t that clean) or a polysurface but haven’t been able to divide the surface or polysurface into an equal grid that can use to morph my tile to. Is it possible to do this? I’ve come across this thread which looks to equalise the UV’s across a brep - Equal Grid Across Surfaces
Is this useful to me or am I going down the wrong path?
I’ve attached my latest Gh fil with just the single surface I’m attempting to morph to. Any help you can give me on this would be appreciated, Thanks! K
Pattern Help.gh (131.4 KB)
Hi,
Your surface is trimmed and has some strange variations. I rebuilt is using Sum Surface
.
Sporph then works accordingly, and to finish I split the shape by a horizontal plane. This results in the corner cell being incomplete but I don’t think there is a way to prevent that given the global shape of the bowl.
Your pattern varies in height only in one direction - you can increase the depth to 5 to see it. Maybe consider changing that so it scales in both directions ?
Pattern Help.gh (225.9 KB)
1 Like
Hi @magicteddy ,
This worked very well, thanks a lot for the help!
Just wondering about Sum Surface - is there a way to build a single surface using this method that follows the original shape more accurately? I’ve tried it with the original breps but have some divergence around the rounded corner.
Is this an easy fix? Thanks
K
Sum Surface_GH Question.gh (40.7 KB)
I found that rebuilding the Sum Surface and then pulling the points to the original polysurface worked
Nice idea, I tried to use NetworkSrf but did not obtained a decent result.
I would be curious to know how the base surface is created because the corner has some weird isocurves
Hi @magicteddy
I’ve applied to tile to a larger bowl surface and I’ve encountered an issue where the output brep shrinks when I try to scale Z in multiple directions. Is this something to do with the new surface I’m using or the twisted box? Thanks, K
Pattern Help_GH_0330.gh (144.5 KB)
Your geometry is not internalized
I tried with a simple box and it seems the morph happens in the wrong “direction”.
I guess you have to change your base flat surface so it lies on the correct side of the pattern, and then probably flip the direction it so the morphing happens on the correct side.
Your target surface is again trimmed which is not possible using Sporph.
Apologies, this should be internalised now -
Pattern Help_GH_0330.gh (152.5 KB)
Hmm yes that’s strange…weirdly I’m getting the outcome I want with the orientation of the pattern on the base surface and the height change fading out to the edges
I think I’ve found the problem - using the original pattern array instead of the scaled box morph geo as the base surface