Planarization Problem

Hey everyone,

I want to make a physical model of a pavilion that I have designed. This is my first time trying to work with planarization, I used the plugin NGON to get the planar faces. But when I am extruding the faces, I am getting overlaps. Can anyone help me with this?

In the script, I have made two versions one with NGON and another with the planar faces. I hope I could convey my doubts.

Kind Regards,
Kedar (68.6 KB)

If you have a planar quad mesh and extrude the sides of each quad along the normal to its face, then these extruded beams will not match up between adjacent faces, because the face normals are different.

Instead you need a single normal per vertex.
You can then take the end points of each edge, and move them along their respective vertex normals to get the 4 points of each beam segment. However, in general this will result in the beams being twisted, even though the mesh is made of planar quads. It is only when the mesh and its vertex normals meet specific conditions that a torsion free beam layout is possible (i.e. the beams are all planar and intersect cleanly in a single line at each node). You can optimise a mesh to have this property though, and I shared an example of this here:

Hi Daniel,

Thank you so much for your reply. Yes I get it, yeah that’s what’s happening cause no two vertices have same normal’s, when I do evaluate surface. But if I have single normal per vertex, then each neighboring vertex has to be same right? That will be more like scaling the geometry and then lofting it.

I saw the thread that you sent and it works like a charm, really thank you. But what if I have already designed surface and just want the cleanly intersected beam layout? Is that possible of I have to make kangaroo govern the geometry. Cause when I use the designed surface, I am not getting the required output from kangaroo. I don’t know maybe I am doing something wrong. Can you please take a look at it?

I hope, I could convey myself clearly. (39.9 KB)

@DanielPiker any help or suggestion would be really useful.

Normals at neighbouring vertices have to be coplanar if you want the beams to be flat, but they do not need to be parallel.
It’s true that for any mesh you can set all the normals to be parallel, or all passing through a single point, in which case extruding the edges along these is just like extruding the whole mesh in one direction, or scaling about that point respectively.
However, for meshes with certain specific properties, non-trivial offsets exist, where the normals are not all the same or all through a single point. (See here for some more details :
While it is generally possible to make such a mesh on a given smooth surface, you can’t choose the grid directions arbitrarily, as you generally need them to align with the surface principal curvature directions.
This also usually means the grid directions will not line up with the surface boundaries, so you can’t just constrain the mesh boundary points to the surface boundary, but have to let the mesh slide off the surface in some places. I shared some examples like this in these threads:

Hi Daniel,

Thank you so much for helping and sharing all the information. I understood what you mean now when I tried to do it for the designed surface and why we need to slide the surfaces.

The image I could achieve this for the designed pavilion like you said it’s hard to constrain that the quads remain quads and that they will change their shape slightly to obtain the optimal planarization. I will further try and see if the quads can be given a certain defined shape or a combination of shapes as now they look a bit random. Is there a way thay they look a bit more homogenous or this is how it must be?

Thank you once again for this, I need to study more on planarization for sure.


The isothermic goal can help with keeping quads close to square, and also allows a torsion free beam layout if you take lines normal to each incircle and connect them with the corresponding lines of tangent incircles. Using the slide-off goal can be tricky though, because the extra portion of the mesh outside your target surface might need to grow quite large and can end up folding on itself.
Personally I much prefer embedding the constraints such as planarity or conicality at the start before shaping the mesh, rather than starting from an already designed shape and then trying to find a rational grid on it.

I was using the isothermic goal but yeah the portion out of mesh was very huge and there were folds on the surface. But I will try with connecting lines and check.
Yes, I think you are right. Since it was my first time I didn’t about its complexity but from next time I will start with the constraints first and let that govern the geometry. Thank you, this was really great help :slight_smile: