I’m working on a Grasshopper project where I need to place traditional Korean roof tiles (giwa) onto a freeform 3D surface. The tiles are already modeled in fixed dimensions, and I want to retain their original size without distortion.
Initially, I considered using Box Morph, but the issue is that it scales the geometry based on the reference box size, which results in unwanted deformation of the tiles.
Here are the key challenges:
I need to tile the same-sized roof tiles across a 3D curved surface without scaling them.
Creating evenly distributed boxes on a doubly curved surface (with uniform size) is difficult.
I’m also worried about performance, since placing thousands of detailed tile geometries will slow down rendering significantly.
So, I’m looking for two things:
A better approach to place identical-size tiles on a curved surface without using Box Morph.
A suggestion for rendering optimization: is there a way to represent the tiles visually (e.g., using textures or lightweight geometry) without modeling every tile individually?
Any plugin recommendations, sample definitions, or workflow tips would be deeply appreciated.
Thanks in advance!
This version offsets the bottom curve so all tiles are “parallel” to that edge. (white group) An ‘Overlap’ slider (blue group) sets a tile overlap value. There are 12,872 tiles shown,
I made changes to address the anomalies before realizing that this roof is extremely far from the origin, which I started to “fix” but abandoned that. Tile alignment remains an issue, as well as the irregular edges. Also, this roof has very little slope which would likely be a code violation in the USA, but addressing all these issues is more work than fun so I’m done
This is going to be tricky, because the amount of curvature is limited by how the tiles interlock. The style is defined by the very well-aligned columns of “roll” tiles that sit over the gap between the “cups”. You also have a very clear 90° angle between the columns and the exposed ends
Do you want the columns of tiles to follow the edges? Because I don’t think there’s enough flexibility in the system for that. You especially run into trouble on the left hand side where the corner is very much not 90°
So I rebuilt the surface so that it overshoots the ends for a more regular UV grid, used Surface Frames to get a grid of cplanes, aligned them per column and sent alternating dishes and rolls to the planes. I used a 2D trim curve to throw away planes outside the roof boundary. For the tiles, I used single surfaces, which will be good enough for rendering at a distance.
You can’t ever get perfect 90° alignment on the long edges, but you can get perfect columns, which I think is more important. You can adjust the boundary curves of the roof surface to try and tease things into place.
You clearly thought it through more than I did, and perhaps more than @lee3 did?
Before I saw your post I revisited this with a new idea of aligning the tiles “vertically”, because to work, they must have nearly the same number of tiles facing up as mine facing down. 13,000 tiles shown in this version - I didn’t bother with tiles facing up and didn’t try to tilt these tiles slightly so they overlap, though I believe that’s a relatively simple matter of tilting the “master tile” before Orient.
The “vertical” direction of the tiles is determined by the Point On Curve component (yellow group) which affects Line SDL(other yellow group) that is the basis for the offsets.
Again, this “Spanish” tiled roof requires similar tiles in the “valleys” facing up.
I sincerely thank you for all your responses and feedback.
The next question has also been uploaded.
I would greatly appreciate your continued interest and support.