How to Place Fixed-Size Roof Tiles on Curved Surface Without Scaling

Hi everyone,

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:

  1. I need to tile the same-sized roof tiles across a 3D curved surface without scaling them.
  2. Creating evenly distributed boxes on a doubly curved surface (with uniform size) is difficult.
  3. 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!

question.3dm (192.1 KB)

Is that shape in the Rhino file a tile or roof surface? One or the other is missing.

P.S. OH :bangbang: I see the tile now, it’s extremely small relative to the roof surface.

This is a hasty and unsatisfactory effort that shows some issues with this problem. There are 6182 tiles shown, which is SLOW! More are needed.


tile_2025Jun6a.gh (117.6 KB)

Geometry is internalized, no need for Rhino file. Can be opened in R7.

1 Like

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,


tile_2025Jun6b.gh (127.2 KB)

The irregular roof edges are problematic. Tile alignment depends on which end one starts. Or perhaps a line down the middle.

P.S. There are peculiar anomalies in these projected curves. :thinking: I don’t have a fix yet.

1 Like

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 :red_exclamation_mark:



tile_2025Jun6c.gh (128.8 KB)

1 Like

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°

I’m therefore assuming that the short edges can “trim” tiles, or have some other kind of treatment.

It doesn’t help that the surface has wonky UVs due to being untrimmed and built with far too many control points.

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.

Giwa Tiles.gh (29.9 KB)

1 Like

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.


tile_2025Jun6d.gh (135.3 KB)

P.S. OK, OK, I baked the “master tile” and used Rhino to tilt it -4 degrees around the red axis


tile_2025Jun6e.gh (144.8 KB)

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.

1 Like

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.