algorithmic modeling for Rhino

Hi all,

I m trying to do differential growing curves and couldn't come up with any ideas  to get started.Any strategies will be helpful .


                                                                                             Thank u 

Views: 81555

Replies to This Discussion

slightly improved version of the definition


Hi Daniel, i have tried your curly kale definition, it is very nice! anyway, i'm trying to improve it with the division function to grow the naked points of the mesh over time, do you have any suggestion to do it without scripting? and how to sort the linked points so i can reconstruct the surface topology  in every generation? Thank you..  

WOW!..... thanks Daniel: your Kale is already growing in my virtual garden :)

I think the key to these effects is self-collision. For just curves this can be quite simple - just increase the length of a curve, with self-collision, while keeping it on a surface:




Sorry for late reply Daniel, had problem connecting Grashopper site. This is amazing Daniel, i tried the definition but for some reason i find few overlapping lines. The green curves(i think is piped) is smooth at the begining of the video , perfectly spaced and no overlaping . how can i achieve that perfect growth  ???

Thank u

I had to move his slider very slowly to the right to avoid overlapping loops. Using an interpolated curve is much slower but more delightful than a polyline, too. Still, it's not very dynamic once it has formed the initial result and I haven't figured out how to control resolution either.

You can get different results by playing with the input parameters of the different goals  - the radius and strength of the SphereCollide, length, and OnMesh goals.

To increase the resolution you can increase the number of subdivisions of the initial curve. Make sure though that the shortest segment is still longer than the tolerance input of Kangaroo.

Also - as it can be tricky to manually move the slider slowly and steadily enough, you can connect a counter with a timer as in the attached file.

For visualizing it with thickness, I'd recommend trying Mateusz' mesh pipe tool - it's a lot quicker than the NURBS pipe.

Another thing that could be interesting to try is to script this so that it actually adds more segments over time, instead of just lengthening a fixed number.


Could also be interesting to have attraction- and repellance-points so these structures could flow around obstacles or get more dense at certain points.

Or maybe react to an underlying texture?

Awesome topic - I love what you guys come up with! :-)

and Nik - Since I know you are such a fan of the bunny ;)

Covered with a single closed curve(seems like this could be an interesting thing to try and 3d print)


Webbing between the ears, an occasional loop, and somehow my closed curve opened. Tends to bog down in stability and then suddenly expand. Had to set Kangaroo tolerance down to get much to happen with the timer. I'm lacking a variable to separate spacing from fineness, and tight fit of the curve to the mesh between the ears. It's also terribly slow due to the lulls in expansion of the original small curve on a mesh into full coverage.

Maybe my mesh is too fine and not uniform enough, so I need MeshMachine first?

No, in fact, your coordinate system for the points that create a polyline is independent of the mesh:

...and seems to embody a regular hexagonal grid, like Kangaroo has already remeshed the whole thing.

The Length(Line) Kangaroo component is slow when I turn up the segments of the input curve, as in a quarter of a second per iteration, though Kangaroo 2 is only twice as fast as that, so overall it's just slow.






  • Add Photos
  • View All

© 2022   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service