algorithmic modeling for Rhino

Hi everyone,

I have been trying to replicate an algorithm in 2D, used by nervous system to produce their hyphae lamps (see image below) using grasshopper without any additional scripting. I think this is possible especially with the use of hoopsnake now for performing iterative or recursive functions.

My progress so far has got to a point where I can get the vein to grow initially and place some additional nodal points however I am now at a point. It may be possible to continue with the same process however using a parametric script is becoming redundant due to the length and repetitive nature. I'd like to try hoopsnake to solve this but the input will change each time as the number of vein nodes grows. Is this possible on hoopsnake?

For a video of the process I am trying to replicate please see this video by nervous system:

And check out their blog here:

My previous questions and process can be found on a discussion in the kangaroo group:


My definition so far is attached to this post. I have also attached a pdf of the algorithm the lamps are based on from a research paper by Adam Runions that Mohammad Yazdi sent me. I would really appreciate any comments or help anyone can give me with this. 


Regards, Michael


Views: 22904


Replies to This Discussion

Hi all,

I've input a hoopsnake component to the definition that I think will work for the loops I just need to redefine how the sources choose which vein nodes they affect, that is, how to define the closest points to each? Once I have the loop working I will introduce a cull to 'kill off' sources that have veins too close to them as they become pointless anyway.


Hi Michael,


I am getting something but not sure what I am getting...

Have a look below and attached.


1) I needed to exclude the previous points from the CP search so I used a sub-list ignoring the previous point. While doing that, I noticed that the "iteration counter" of Hoopsnake, only works when the loop is on not when you compute each step separately. You might need to replace this step by a inclusion test like part f of your PDF.


2) I have placed only one starting point and an end point which will change at each iteration. The start input will be ignored after the first iteration, only the second one.


3) To keep the trace I have placed the Kangaroo component but somehow it only appears at the end when stopping hoopsnake so it is not very graphical...


I hope this helps for now?

Almost there !







There was a bug in the iteration counter with the version you are using... since 0.6.1 the iteration counter works normally.




Hi Christoph,

Sorry for the late reply, unfortunately I was struggling with a definition in Grasshopper and I have since been focusing on other definitions. However I am revisiting this script using Processing to try and code it and then I hope to make a component within grasshopper that I will make available for anyone who wants it.

Are you doing something similar?


Hi, I was intrigued by the pattern and decided to try to replicate it my self. this was some time ago and now i almost forgot i did it. Actually i never took the time to look at your def, instead i built all from scratch.


As you can se it works pretty well with the rules i defined for it, how ever i still have not found any satisfatory way to eliminate the problem with branches sometimes crossing over each other.


Here is my attempt, just reset the hoopsnake and then loop it and it should work fine. :)





Hi Carl,
wow, this looks great. I actually changed my direction of research so I had to drop the leaf venation for a while. I will return to it when I have a bit of spare time although this doesn't look like being any time soon. Thanks for your reply though, looks like a great base for future development and work with growth scripting.



hello carl!

i wanted to try your definition, but i just get an error... maybe its because i use the newest version of gh. could you maybe have a look? would be awesome!

thank you!


Hi Grasshoppers,

I used Rabbit to generate a L-system, then I put the L-system curves over a sphere. I didn't use the venation system but i think it's similar. Despite, my curves are getting deformed by the shape of the sphere. I want the curves grow (L-system creating more branches) without deforming it.

I don't have any idea how can I choose places (points?) for the "beginning" of the growth over the surface in all sides (various starting points). I attached a file to the message. Could anybody please help me? I tried in many ways but it's getting difficult !


Hi Mariana,

Sorry I haven't had time to reply properly to your posts. Rabbit looks really good for these kind of explorations although I haven't looked in to it fully yet. I'll try and have a look at your script when I get chance and the error from the previous script you mentioned. However, one of my colleagues perfected a growth script based on mushroom hyphae that can be applied to any surface towards any number of points.

I am not sure if he has posted it on the forum but I will ask him and then post a link if possible. I'll try and do that in the next couple of days, good luck until then.


thank you so much for the reply! It's nice to know that there are people willing to share knowledge =) If you could see my file when you have time, I'll wait for the answer! See you and good luck! 

Hi Mariana,

Mike asked me to post the script that I was working on. It's not exactly the same, but it works on similar principles. It starts with a 'food source' of points, that in this case are randomly placed, but could just as easily be replaced with the nodal points of a mesh to allow it to grow over a surface. It starts at specified points, and then grows to towards the nearest food within reach. It then branches, and does the same thing over agin using hoopsnake. If at any point there is not food within reach of the end of a strand then that strand stops growing.

I hope it's useful - sorry it took me a little while to post it!




Thank you so much!!! Great work!!!






  • Add Photos
  • View All

© 2021   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service