Convert Mesh into equilateral triangles

Hi. I need your help.
I have turned surface into mesh, but the triangles in the mesh is not in the same size.

I would like to make the triangles in the mesh even, something like this.

Could someone help me with this?
It is similar to this question;
Mesh terrain that consists of same size faces

The surfaces need to be joined up first.
Have you tried that?

Firstly it can’t be done that they are all equilateral for a freeform surface like this.

To get a fairer distribution, you need to use the Mesh surface component to get mesh based on isocurves. Then triangulate these quads.

Or else I think the Lunchbox plugin can be used to make triangular patterns from the surface closer to your intentions, specifically ‘triangle pattern B’.

Actually forget Lunchbox @bmwdixi1927, sorry… you want to stick to meshes.
The excellent M+ userobjects by David Mans can be used here: https://www.food4rhino.com/app/mesh

Best wishes,
John.

M+triangulation2.gh (10.5 KB)

Thank you John, it was really helpful.
Is there some way I can apply this to multi surfaces? The surface I am trying to convert to mesh is multi surface, and I really can’t find way to turn them into single surface.


Joining the surfaces doesn’t help since it does not make the surfaces into one.

I appreciate your help.

any sample file?

Multiple surfaces can be hard because the U/V spacing is different for each different surface. And UV is what most of these tools are based on.

Two options that come to mind. You could try Quadremesher in rhino 7. Or use panelingtools, like this: Equal Grid Across Surfaces

yes, but it does not make multi surfaces into one:(

Thank you for replying.

Is there some way I could just rearrange/reshape the triangles in a mesh to equilateral triangles?

You would need to relax the mesh on the surface, so the forces equal out, but stay in the surface. Kangaroo might be able to do it.

I would rather map the quads sizes first.

If you have an example geometry we can take a look.

I am sorry I can’t upload file due to security issues. Please understand me. Thank you
This is the screenshot, I would try to be very clear


this is the surface I want to convert to mesh. (It’s a single surface, so you don’t have to care about converting multi surface to single surface)


I have tried Mesh+Diamond Tiling, and then triangulated.

I have got trigulated mesh now, what I want to do is have these triangles equal
something like this;

Thankyou.

This may help. https://www.grasshopper3d.com/m/discussion?id=2985220%3ATopic%3A1286055

Thank you, I have gone through it, it seems possible, but not so clear yet:(

Meshmachine might help here. Not sure how it handles multiple surfaces though.

Hi @bmwdixi1927
Can you give a bit more context for this - what is it for, and why do the triangles need to be equilateral?

Covering general doubly curved surfaces with exactly equilateral triangles is only possible by crumpling the mesh so the triangles no longer lie tangent to the surface, and for anything beyond very subtle curvature the mesh will hardly resemble the original surface at all.

The triangles in the file above posted by John look pretty close to equilateral. That might be about as close as possible with a surface like yours. Since your patch has a rectangular boundary, you’ll only be able to get full triangles along 2 sides, while the other 2 will have half triangles, like along the right in your last image. You can swap the u and v if you want to change which 2.

Just to add to @martynjhogg.

Mesh machine would be a nice way to go, although I think it only takes one surface/mesh if you require a non-disjoint result. However, looking at your surfaces they are connected at edges, so as long as you mesh the surfaces and connect these, you will have a non-disjoint starting point:

MeshMachineSurfaces

You can try M+ with this new mesh, or else here is an example using MeshMachine from Kangaroo1 (you will need the Plankton library):

MeshMachineGif2


meshMachineExample.gh (35.6 KB)

Daniel is now in on the thread, so might be able to help more than me if this is worth a shot.

As mentioned, this will only approximate a fair mesh close to equilateral triangles, which as Scott and Daniel allude to is not usually possible on freeform surfaces without ‘sticky out bits’ (technical term). Lobel frames are super nice btw.

John.

3 Likes

Hello everyone,

So here we go again with the same old problem. I try to do equilateral triangles following your directions and have a problem with rotation triangles in the mesh. How can I fix this? Also on a more complex mesh, I get another problem which is that triangles stop to be equilateral. Any help here?


M+Diamond_mesh grid.3dm (239.2 KB)

Are you after something like this?


Or do you need more regular connectivity?

Either way, perfectly equilateral while staying close to the input surface isn’t possible.
If it’s just about keeping a consistent direction for the triangulation, you could build the triangles explicitly from the 4 points of each quad, instead of using the triangulate function.

Otherwise you can use this to triangulate according to a guide direction without assuming anything about the vertex ordering of the quads:

2 Likes

Hi, @DanielPiker Thanks for your reply. It’s a very interesting response and solution. Beautiful thing! This might work but if I can control the size of main triangles and apply that as a repetition. So, the main triangle would be let’s say is in a size lets say 450mm and where is need is the triangle in a different size or construct domain between 200mm-600mm. Is it possible to construct a domain in this script? If not that just have size growth from big to small (small on a top). I need this grid to have around 60%-70% repetition in triangle size.

BTW somehow it amazing that this grid is not so hard to do in real life but in the calculation is such a struggle :frowning:

Thank you in advance for your help and wait to hear from you!