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:

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.


More explanations to follow soon


Views: 58305


Replies to This Discussion

Hi Daniel,Thanks for the quick reply.

I was thingking exactly about the same solution, just I never had time to really look into Plankton's functionalities and I do not really know how to do it.

It would be great if you could post the fixed script!

Thank you again.

I also added another small improvement where the boundary vertices have a target valence of 4 instead of 6, which leads to nicer triangles around the edges.


You can even use proximity to the boundary as a sizing function:

This is so cool! How does this sizing function work here? Love the graphics on this one!


Like in the 2nd example in my post, the target edge length sizing function is checked per edge before splitting or collapsing.

So any function that takes a point in space as input and returns a number can be used here.

In the example above this function is to get the distance to the closest point on the boundary curve, multiply by some constant, and add some small value to keep it above some minimum.

I've also experimented with using greyscale values from an image as the sizing function - will post examples soon.

The idea with remapping HSL values is nice. I am trying to apply planarity of a quad mesh with a gradient and convert the values for scaling the triangles...hmm,lets see-will post an update soon;

¿I was wondering if the c#  lengths input from the remeshing.ghx accept genpool values or is it something maybe that I am missing?

Awesome work Daniel! How could this be adapted to take into account boundary edge complexity? (Similar to, and of course Jonathan Shewchuk's original Triangle software.)

When finding the closest point, could you also measure the local curvature of the boundary curve?

To do that i guess you'd:

convert edge polyline to curve > find closest parameter to test point > evaluate curvature

Alternatively as you're working from a mesh could you use the edge segment lengths as a measure of complexity? i.e.

find closest edge segment > evaluate length

Is this potentially all a bit unstable as we're dynamically changing the position of the edge points and therefore potentially both the curvature and the segment lengths? 

Looking into this (i'm guessing as per RCD) in the direction of FEA mesh generation.

The parent mesh doesn't change, so it should work just fine.

The only issue with using this for FEA meshing is that you really want a quad-dominant mesh for that (or so I'm told...).

Good point - use the parent rather than the changing mesh.

And yes - Quad's allow for a better determination of a stress-strain field in analysis from my understanding.

Triangles do work provided as an engineer you understand the limitations. 

But surely a following stage where as many triangles as possible are turned back to quads would still provide the wished-for variation in density of the mesh? 

I wondered also if maybe one could simply measure the distance from the midpoint of the naked mesh edge to the boundary curve:

and then split the boundary edges based on this.

How does this work with the edge length weighting?






  • Add Photos
  • View All

© 2020   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service