Grasshopper

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

Views: 66693

Attachments:

Replies to This Discussion

Hello 

does this need the latest rhino 5?

Wow, just got this up and running. Will experiment and feedback asap.

Hope you are well!

Would it also be possible to add an align force to the remeshing to improve the regularity of a mesh? 

f.e. in the attached image the edges feeding the exoskeleton mesh generation could be used to align one of triangular mesh sides, so that irregular vertices are pushed/limited to the nodes.

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...

Daniel. I seem to get an error regarding my RhinoCommon version from the components in those examples. Any ideas?

I'm running Rhino 5 and GH 0.9.0064

I tried upgrading to 0.9.0066 but then the Mesh tab from the Kangaroo ribbon disappeared. 

Which Rhino service release are you running?

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...

Nice example Daniel.  I added some csharp Plankton script to create an offset mesh "box" for each face.  A bit of subdivision and render and we have some nice looking blobs!

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.)

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service