algorithmic modeling for Rhino
I'm starting to use MeshMachine with a very simple polysurface, and find that it does not fix some of the points properly, thus producing a wonky result with holes in the mesh, and the component turning red if I set too many iterations.
Any idea why these two points are ignored whereas the others work ?
Cheers,
Tags:
The problem is that there are no inputs to FixCurves.
Try using the edges of your Brep here.
Any boundary vertices of a mesh always have to be on a fixed curve - otherwise the remeshing will eat its way in from the edge and break.
Currently not without some scripting I'm afraid.
The idea has long been to integrate what MeshMachine does more closely with Kangaroo, but it is problematic within the current way the user interface is set up. All the goals in Kangaroo have indices identifying which of the points in the system they act on.
Assigning these indices automatically and still allowing inputs to change during simulation requires some tricks to work around the acyclic directed nature of Grasshopper.
In remeshing the indexing and even number of points changes which greatly complicates things if you want to also have goals assigned to certain edges/points.
Last time I spent serious time on this though was before the K2 library, so maybe time to revisit soon. I think it would probably over complicate things trying to accommodate this remeshing directly within the main Kangaroo solver component, but there could be a dedicated membranes tool (though I know you also want me to prioritize documenting the existing tools!).
Stepping back for a moment though - it is usually possible to separate the remeshing and relaxation into separate steps. Membrane relaxation generally needs well shaped triangles (no angles over 90), and remeshing can give you this. Of course the triangles change shape during relaxation, but if the unrelaxed geometry is not too dramatically different from the end result, and you use tangential smoothing to keep vertices from drifting, they can stay well shaped throughout. For bigger changes in geometry you could also remesh-relax-remesh-relax.
The Meshmachine makes me think of a little program that I used 10 year ago :
http://facstaff.susqu.edu/brakke/evolver/evolver.html
It did both relaxation and mesh smoothing...
Yes - surface evolver is a classic, and definitely one of my inspirations.
Hi Daniel,
If I remember well, Surface evolver had an option that would collapse mesh faces that were, for instance much smaller in area, or had two long edges and a tiny one.
In short, the mesh would auto-heal as it was relaxing.
By contrast, the meshmachine produces what I call "skinny" faces, typically along the naked edges.
This is where the mesh is supposed to be bound both to a curve and to some points, which still seems a little awkward to me.
I would be greatful if you could explain more in details why we need these two types of entities to constrain the edges, and how these constraints affect the resulting mesh.
Also, of course, I would like those "skinny" faces to be automatically collapsed.
Cheers,
Hi Olivier,
This collapsing of skinny faces is exactly what MeshMachine is designed to do. More specifically, whenever the length of an edge is less than a certain threshold, that edge is 'collapsed', removing the two faces that were connected to it.
If this isn't happening then perhaps there is something in the setup preventing it, such as too many fixed points. Could you post the file where this is happening?
To explain more about why we need both FixCurves and FixVertices –
Some vertices need to be completely fixed, so nothing in the relaxation or remeshing affects them (typically the corners).
Some edges of the mesh need to be fixed to curves (typically boundaries or sharp edges of solids). The vertices at the ends of these edges are still free to slide along the curve they are attached to, so they can distribute nicely. These edges can also split or collapse so the number of vertices along the boundary can adapt, but they cannot flip, because this would lose the attachment to the curve.
Hi Daniel,
your explanation makes it obvious why I am having these skinny faces : I was using points which I distributed along the curve I used as "fixed curve", because I thought it was needed.
This is because I didn't understand that I could just have used the corner points (ends of my curves).
This is a typical example of how a little bit of documentation could really help people appreciate your work better...
Cheers , and thanks for this great tool.
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by