algorithmic modeling for Rhino
Here are some demo's of remeshing with Plankton combined with some relaxation functions from Kangaroo.
(Similar to what I described here:
http://www.grasshopper3d.com/profiles/blogs/meshmash-dynamic-remeshing)
The first is a simple remeshing aiming for equal edge lengths, while the second also allows interpolation between multiple target lengths, and also optimizes for circle packing.
They require the latest version of Kangaroo to run.
Enjoy!
More explanations to follow soon
Daniel
Tags:
Wow, just got this up and running. Will experiment and feedback asap.
Hope you are well!
Hi Mathias,
Yes, alignment with curvature directions would be a very nice thing to add to the remeshing.
In fact, the edge flipping in Plankton is written in such a way that it also works with quads (it is really a sort of edge rotation) and I had been thinking that such an alignment force could be used for quad remeshing.
With triangles though there might be other ways to reduce the number of irregular vertices by allowing the edge lengths to vary more...
Apologies Daniel. I had missed that i was a release or so behind. Silly mistake to make. Thanks for the help.
Based on the Remesh Plankton circles example.. ignoring the circle packing part it seems like this could potentially be used to generate decent FEA meshes? i.e. an engineer could use points to define seed locations for denser mesh regions? This could be really very useful for those of us playing with the refinement of geometry within GH/Rhino to then link into full-blown FEA.
Before I play around a lot more.. could there be a way to define a "general" target length and then a localised mesh defined by seed points? I guess there'd need to be another variable regarding the size of region affected by the seed?
Indeed, generating meshes for FEA was one of the applications I had in mind.
The target edge length can actually come from any function that takes a point location and returns a number - so yes, it would be possible to have some global baseline value and local deviations from this based on proximity to seed points, or distance from the boundary, or a grey-scale image, or surface curvature...
Thank you Daniel,
this is super useful!!!
One problem: I am trying to use the same script on a mesh with more than one loop of naked edges (simply, a surface with an hole), but the definition has problems in recognizing the two distinct edge loops, and so it uses them as as single one, connecting them with new edges and collapsing the mesh structure.Is there a quick way to solve this? I am not an expert in scripting with meshes...
I tryed to comment out from the script these two lines:
if(P.Vertices.NakedEdgeCount(i) > 0)
{P.Vertices.SetVertex(i, boundary[0].ClosestPoint(Point));}
and managed to avoid the collapse of the whole mesh, but of course the boundaries of the mesh are broken. Any idea on how to solve it?
Thank you!
Hi Andrea,
I did develop a workaround for this problem - if you input a list of boundary curves, and then for each naked vertex, get the closest one from the closest points on each curve in this list. I'll post the script later.
(This still isn't an ideal solution - generally I'm trying to develop a way of keeping mesh boundary edges associated with particular edge or feature curves (such as sharp creases) given as input. However this needs to be integrated with the topology operations in Plankton itself - so for instance if a mesh edge on a feature curve gets split, then the 2 new edges also become attached to the same curve.)
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