Planarizing quad panels with specific boundary constraint

Hey everyone. I am working on planarizing quad panels. Having read a few of the discussion threads on this forum, I hope I could clear some concepts here first.

Planarizing quad panels on double curved surface - Grasshopper - McNeel Forum

My problem requires me to planarize the surface with specific panel boundary (red). Each surface will have 20 equal horizontal division and 9 or 10 vertical division at specific locations. The edge in blue could be adjusted upward if required. I have done a simple quad meshing using geodesic curves generated using two ends.

  1. Judging from the geometry, it seems impossible to planarize the mesh using the current division since they follow the geodesic curves of two designated points instead of its principal curves which most likely will rotate the grid diagonally (?).

  2. Recognizing such, while I am not interested in creating a shingle facade like the Moynihan Train Hall where all panels are broken up, I therefore wonder if it might be possible the planarize the mesh individually into vertical strips with minimal overlapping so that at least in one direction the panels are connected together. Would there be reference of such a study/ research that I might be able to refer to?

Moynihan Train Hall - seele façade know-how from design to installation (youtube.com)

Please kindly find here my Rhino work file. Thank you!
Planarizing quad panels.3dm (393.5 KB)


Strip planarization test.3dm (718.7 KB)

Here is a very manual approach towards what I was describing in 2. The horizontal members are shifted slightly yet all connected. All surfaces are planar but I think the geometry to the left might be too extreme and would require re-panelizaiton of the initial grid…

1 Like

Hi @Iris_Appleseed

I haven’t opened your file yet, but one of the first things that occurs to me is that you might find it helpful to search this forum for previous discussions on ‘developable loft’ and ‘developable strips’

Quad mesh planarization generally refers to he case where panels meet vertex to vertex, which constrains the possible layout a lot, but it looks from your last image like you are allowing panels to meet those in adjacent strips so their vertices are somewhere along the edge of the adjacent one. Approaching it by finding strips first gives a bit more freedom, then you could divide those strips into panels after.

Thank you, Daniel! Ideally if the geometry could be relaxed and planarized with all vertexes connected that would be perfect but I felt like it might be difficult for my specific geometry combining with the division I wish to implement. The current strip approach is less desirable but way better than the all broken up Moynihan Train Hall shingle approach. I will look into the ‘developable loft’ and ‘developable strips’ topics that you have mentioned. Thank you!

If you could please down-save your file to Rhino 6 3dm, then I can attempt to assist you.

Thank you Bailey. Please find here the downsaved document with my progress from earlier today… Many thanks!

Planarizing quad panels, developable strips rhino 6.3dm (847.8 KB)

I’ll be honest… I’m having quite a difficult time understanding what you are trying to achieve, based on how you have written your question.

Maybe this is what you are going for? This script still needs some adjustment, as it seems some of the quad’s normal vectors are being mysteriously flipped, or not being generated as desired.


Quad Panelized Surface - Offset Corner.gh (32.7 KB)

Here we go… Oddly enough, I had to pass the centroids through SurfaceClosestPoint before evaluating the surface for normals.


Quad Panelized Surface - Offset Corner.gh (31.9 KB)

1 Like

Thank you @baileydw. Unfortunately this is exactly the Moynihan Train Hall “shingle” approach that I was trying to prevent where all panel edges are not connected. The option’s visual effect is not continuous enough for the effect I was looking for.

Ideally, I wish to do a mesh relax and planarize all panels so that all quad panel edges are connected with one another while maintaining the red profile boundary and subdivision locations (the points on the boundary). But upon realizing the complexity reading from the previous posts, I therefore tried to propose an option between “planarizing all quad panels” and the “broken up shingle option” you have just shown, which is by dividing the mesh into unfordable planar strips so that at least in the one direction the panel edges are connected together, for which @DanielPiker had kindly pointed out that is a topic called ‘developable loft’ or ‘developable strips’.



None the less thank you for the help. I am now browsing through topics about ‘developable loft’ or ‘developable strips’ to better understand the approach and constraints.

Hello @DanielPiker! I looked into some posts about developable surfaces. They were indeed very inspiring. One problem I have been constantly running into though is similar to what was shown in this video. When the surface’s curvature begins to flatten out, it is actually very difficult to control the “fold” of the planar surface and as such the output strip became either very deformed or undevelopable (e.g. the strip to the very left).

Dev2PQ: Planar Quadrilateral Strip Remeshing of Developable Surfaces - YouTube

As a result, instead of attempting to simulate and jump directly from strips of mesh (which could be quite uncontrollable given my limited skills) into a planarized developable surface, I began to wonder if this might be a better workflow: I first flatten out individual mesh face into a planar surface using the center isocurve, scale them up and find the intersection and loft them into a continuous strip of planar surfaces (step 3). After that, I then intend to optimize them in kangaroo to better control the output result.


Would there be a way to optimize the angles of each mesh face closer to 90 degrees while maintaining the planar quality? The mesh angles doesn’t necessarily have to be 90 degree as long as they don’t look as deformed as right now. The vertexes from both sides could move along the vertical surfaces. I am quite curious by how goal priority (as represented by “strength” is maintained if i am not wrong) will work out. In this instance: planar surface > less deformed strip (closer to 90 degrees) > vertex distance from original surface.


240812 developable surface.3dm (1.1 MB)

Thank you and I hope I am not being too annoying on the forum…