Planarizing quad panels on double curved surface

and to show the right way to do this -

designing a starting mesh respecting the intended supports and openings, with higher valence points where it branches:

Which then planarizes nicely, without needing lots of other fairing forces to keep it well shaped, and can even be made conical so it gives a clean torsion free beam layout:
planar_relax.gh (22.3 KB)

10 Likes

There are 2 types of people on this planet… those that can design a starting mesh and those that cannot.

Did you do this to make that starting mesh…

  1. Start with a plan view approximation and divide into large quad areas…
    image

  2. Subdivide until you just kind of know…

1 Like

Unfortunately, I belong to the latter category of people. :frowning: I tried two methods. I am not getting the desired mesh. I made the starting mesh by drawing hexagons and parallelograms. Then I joined them using the join command of Rhino. Then I did the quadremesh command. The edges aren’t joining neatly as seen in your screenshot.

I did the catmull clark but it makes the whole mesh with curved edges.

DRAFTED PLANAR QUAD MESH.3dm (116.4 KB)

What is the meshpreview component you have? Looks like a part of a plugin. It doesn’t show up when I search for it in my Grasshopper.

1 Like

What are valence points? And how to make them higher? Is there any video tutorial, book or other reference where I can look up the process of making meshes that respect the supports and openings?

What is the difference between the conicalize component and planarize component in Grasshopper when being used to planarize quad mesh only?

What is the process of finding principal curvature directions?

1 Like

experience…

2 Likes

LOOOOL, this basically boils down to experience, nothing more nothing less! Funny nonetheless! :slight_smile:

Even though Rhino speaks n-gon, I’d always recommend to start with a nice and tidy quad mesh. This makes the face/edge flow (or topology) way more predictable, especially when you want to subdivide it further in a later step, and exporting the mesh to another application that can’t handle n-gon mesh faces, won’t be a nightmare.
The individual faces should also be roughly the same size, except when you explicitly want them to be different.

Like @martynjhogg already showed, you shouldn’t have a hexagonal face in the middle, but rather “poke” it, thus dividing it into 4 quad faces, or alternatively two in whatever direction you prefer.

8c4b80224013db1f7c4194a3d1071510bc832f91

You need to set it’s Smooth Naked Edges (S) input to 0, which means that the outer, naked edges remain fixed.

I don’t know about valence points, but valence usually describes how many mesh edges meet at a certain vertex.

“Polygon Mesh Processing” by M. Botsch, L. Kobbelt, M. Pauly, P. Alliez, and B. Lévy is a good book, but very technical.
If you want to learn about mesh modelling, I’d recommend “The Art of Moving Points” by B. Tindall, and learning a polygon modelling program (i.e. Blender, Maya, Modo, etc.). After all, it’s all about experience. The sooner you start, the sooner you’ll reach the 10,000 hours to become an expert. :wink:

I believe it boils down to this:
“Circular meshes are quadrilateral meshes all of whose faces possess a circumcircle, whereas conical meshes are planar quadrilateral meshes where the faces which meet in a vertex are tangent to a right circular cone…” (link)

Have fun!

It’s from the Intralattice plugin. You can do similar with MeshEdges component and a Custom Preview but MeshEdges can be much slower.

I manually drew the first mesh then used subdivide from the SubD menu which I was surprised to see work.

I first tried a Weaverbird subdivision but could see that it wasn’t dividing the mesh like Daniel’s example.

You habe to set the Catmull Clarke Input to “fixed” edges to stop the rounding

I’m happy to see this discussion as I think it is an important topic.
Making and understanding good quad patch layouts does get easier with practice, and I think it is a valuable skill to learn - not only for relaxing meshes in Kangaroo - many of the same principles are often useful when working with SubD and NURBS.

By ‘higher valence points’ I mean vertices of the quad mesh which are surrounded by more than 4 faces.

When we talk about a ‘nice’ quad mesh, we usually think of one where most of the internal vertices are regular with valence=4, i.e. they are surrounded by 4 faces (and connected by 4 edges to 4 surrounding vertices).

The shapes we can make from quad meshes of all regular valence without highly distorting the size and shape of the quads are quite limited though - a bit like trying to tailor a well fitting suit from a single sheet of fabric without cutting or stitching it - wrapping it onto forms much more complex than an extrusion would result in lots of stretching and bunching.

So we often need to include a few special points in the mesh (sometimes called irregular vertices/singular vertices/singularities) where the valence does not equal 4.

We can change the density or number of faces of the mesh by subdividing quads, which adds lots of new valence 4 vertices, but leaves the arrangement of irregular vertices unchanged.
The shapes and edge lengths can also change during the relaxation, so usually the precise geometry of the starting mesh also isn’t important, just its topology.

So when creating a starting mesh all we need to focus on is creating the right irregular vertices, usually with only a very small number of faces, and subdivision and relaxation takes care of the rest.
In my example above, I started with something like this and reflected it and subdivided (similar to what @martynjhogg shows, but with valence 6 vertices, not valence 5) :

Valence 2 and 3 vertices are useful for forming dome or bowl shaped regions (positive Gaussian curvature), while valence 5 and 6 vertices are useful for saddle shaped regions (negative Gaussian curvature).
(also, because a valence 2 vertex is ‘missing’ 2 quads compared to a regular vertex, it can be replaced by a pair of valence 3s (each of which is ‘missing’ 1 quad) without changing the surrounding region.
Similarly, a valence 6 vertex can be replaced by a pair of valence 5s.)

The aim with Kangaroo is that by seeing and experimenting with how meshes of different topology relax, you build up some intuition for the relationship between starting topology and relaxed shape, in the same way you get a feel for working with a particular material after working with it for a while.

QuadRemesh is a wonderful tool, but unfortunately not often suitable for this application because when making a mesh in a flat boundary it does not know your intent for which regions should be domes/saddles/supports in the 3d shape it is going to relax into.

See my answer in this thread.
A mesh can have planar faces, but that alone doesn’t guarantee it can be offset without twisting in the beams connecting the edges of the 2 layers.
Making the mesh conical can be the difference between nodes like these

9 Likes

Thanks a lot for such a detailed answer.

I’ll go through this and the linked post, then get back to you. :+1:t3: :+1:t3:

Okay, I’m trying to understand the content of your post.

What are irregular vertices? I understand an irregular polygon which is a polygon with unequal side. Are those vertices related to that?

I don’t understand, what is the difference between topology and the geometry here?

If I know tentatively the location of saddle, openings and domes in the planar original mesh itself, how do I think and draw the vertices and the lines which respect the curvature?

How do I find the principal curvature directions?

These circled points. All the other internal vertices here are regular (i.e. valence 4)
The figure on the right is the Catmull-Clark subdivision of the one on the left, and has the same irregular vertices, but lots more regular ones.


Here are 2 flat starting meshes with the same topology but different geometry, and when relaxed they are giving exactly the same result (using zero rest lengths).
So with relaxation you don’t have to worry about funny angles and kinks in the input mesh if the topology is correct.

Some people prefer to use the term mesh connectivity instead of topology here, to avoid confusion with the description of the topology of the shape as a whole, which can be considered separately from how it is meshed (like the difference between a donut and a sphere). Usually which one is meant is clear from context though.

It might sound strange, but over time you get a feel for it, and can look at or imagine a shape and have a pretty good sense of its principal curvatures.
You can see this in hatching by artists where they often intuitively follow the curvature directions.
Also by experimenting with relaxing different starting meshes, you learn how the shape depends on the starting topology.

For surfaces you can use Analyze>Curvature Circle to see the curvatures at a point:


or in Grasshopper you can use Principal Curvature

Finding principal curvatures on a mesh is a bit different to NURBS though, and always an approximation because the mesh doesn’t have continuous derivatives.
There’s no native single component for showing principal curvatures of a mesh.
Some plugins such as Dodo have components for it, or one way with native components is with this intersecting circle technique

4 Likes

Thanks for your detailed answers. Really helpful. So I believe I need to do more practice. Correct me if I’m wrong. In order to have a more buildable form that is feasible to be planarized, I should maybe design the double curved form, find its tentative principal curvatures in Grasshopper then doodle over it like this.

Then develop the base mesh from scratch by drawing and subdividing the network of principal curvature lines. Right?

If you are in the Academic bandwagon maybe. If on the other hand you are after real-life rational AEC solutions it goes entirely the other way: Enter the bottom to top design mentality. This means: first know the piston and then design the engine. Also means: if you don’t know what a piston is better design some other thing. This means that you should FIRST have fully master the nuts and bolts of a range (+ cost) of solutions (that don’t leak over time) for your envelope and then having their weak points/restrictions (freedom of movement between panels) in mind attempt to do something. For instance this glass solution is wrong over time because is based solely to structural silicone (to deal with the variable [up to some limit] dihedral panel angles):

Why is wrong? because envelope’s thermal expansions create micro cracks to silicone > after some years you’ll get a leaking chaos (prior that you’ll get a vapor condensation chaos). Too many contemporary “WOW” envelopes develop similar issues (unless are there purely for decorative purposes like the YAZ Marina blob).

Advise: in real AEC life non tri-panels are just a very expensive chimera.

2 Likes

All this happens due to the fact that triangles are more stable in the long run as compared to rectangles or squares due to their geometry?

No: it happens because you can seal glass (or some other thing) in a tri-panel the good old way … given that glass is planar and the tri-panel is planar as well. A quad is rarely planar (the way that glass likes it). Academic planar and real-life on site planar (for some blob) are totally different animals.

Note: AVOID structural silicone solutions at any cost … or use a semi-scructural variant. Nobody can spot the difference in a large scale envelope (and nobody cares as well): the whole thingy is just another mind trap or a big rabbit hole “in the name of progress” blah, blah (in fact in the name of profits: that’s the real reason that similar solutions are so heavily promoted these days).

1 Like

Okay. Thanks for the insight! :+1:t3::+1:t3:

Final tip: try to design a Lotus Elise or an Ariel Atom (the best affortable sports cars by a huge margin) instead of a Ferrari SF90 (the best waste of dollars, ponies, weight, systems, complexity [for nothing] and lot’s of other pointless things … plus is kitsch to the max).

Some examples of built quad glass panel roofs:

and one I was involved with (and is form-found with Kangaroo) recently:

An older one (not freeform but translational surfaces)

and another recent one:

8 Likes