NudiBranch 0.028 is out!


Seven months later after the first official release, I kind of managed to properly update Nudibranch to the Grasshopper 0.9.005X series. The new version out is 0.028 (yes there were 27 different incremental attempts in between..) and it marks bug fixes (two evident plus more that were not that easy to spot), minor updates and optimization of some components, and finally 5 brand new components (**more details further down on this post). Bouncers, Slicer, BundleAttractor, MeshClimber, FrameGrid(new sub-tab Utilities) and Box3dGrid(new sub-tab Utilities).


Hopefully this is a major update, not only for introducing new components but mainly for improving the existing functionality of the add-on, specifically by reinforcing its global character, increasing its accessibility and user-friendliness, while exponentially reducing the calculation time for many of the existing routines. This release is unfortunately supported only by Rhino 5.0. The previous release for Rhino 4.0 is still going to be available to anyone who might be using the previous version of the software but its functionality is limited.

Some snapshots of the New Features are displayed in the following figures.



Of course your feedback is valuable in any case, so do not hesitate to contact us and add your comments or critique, either here on the blog or though the official Nudibranch group in the Grasshopper3d forum.
You can download Nudibranch of the Food4Rhino website.
Enjoy 🙂
• Satellite Component: The component was throwing an exception when loading geometry that was of Type IGH_GeometricGoo. This is fixed. (thanks Igor GH Forum for noticing)
• PointAttractor and CurveAttractor: These components were creating Null vectors when the attractors where further than the attraction range. This is fixed, they return Zero length vectors. (thanks Igor GH Forum for noticing)
• AttractorValues + CurveValues:
 Switched data arrangement to longest list
 Added additional right-click drop down menu to the distribution input
 Added auto-fill options when a value-list component is connected to the distribution input
 Added three options for the attractor solver as a right-click menu on the component (Minimum, Average, Maximum)
• PointAttractor + CurveAttractor:
 Switched data arrangement to longest list
 Added additional right-click drop down menu to the distribution input
 Added auto-fill options when a value-list component is connected to the distribution input
• TwirlAttractor:
 Switched data arrangement to longest list NUDIBRANCH Version History
Nudibranch Version History
• Railway:
 Added inheritance of the DataPath for the curves used as rails to organize the
generated points in a branched structure of the original.
• Walkers:
 Added an extra input for randomizing the speed for each walker in the
domain of (-Factor to Factor)
• PointHicking + CurveHicking + PointPatrolling:
 Switched data arrangement to longest list
• Uphill + Downhill:
 These components were replaced by the Climber Component
 Added two options for the solver as a right-click menu on the component
(DownHill, UpHill)
• Bouncers:
 Animators Tab: Generates and animates a Number of Particles bouncing
within a user defined Box boundary.
• Slicer:
 Animators Tab: Generates and animates Rhino Clipping planes for a set of
user defined curves.
• BundleAttractor:
 Attractors Tab: Generates an iteratively bundled point list for any given
DataTree population of points.
• MeshClimber:
 Scramblers Tab: Generates the gradient descent or ascent paths on a Mesh
object for any provided point list.
• FrameGrid:
 Utilities Tab: Generates a 2-dimensional grid of points distributed as a
row/column structure for any given 3dRectangle.
• Box3DGrid:
 Utilities Tab: Generates a 3-dimensional grid of points distributed as a
row/flippedrow/column structure for any given Box.
• All modified components have been marked as “OBSOLETE”; hence they will continue to
operate in existing files with the previous release functionality. The “OLD” logo will appear on
top of the component’s icon.
• Added a tab icon for the 0.9.005x series
• Added a new icon in component Libraries
• Loaded from COFF Data
Creative Commons License

Nudibranch Copyright (C) 2013 by Marios Tsiliakos is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.

Permissions beyond the scope of this license may be available at

Nudibranch + Millipede | Realitme Flowing Isosurface Definition


I know I haven’t properly updated the Nudibranch examples on the GH forum, however since I have been getting a lot of requests to display what and how exactly this isosurface snapshot from the previous post about the release of Nudibranch works, i decided to spent a few hours to document this process and also share the definition. Take a look at the following video.

This definition uses two Nudibranch components the Satellites and the AttractorValues, combined with the Millipede’s isosurface component. Three or more satellite entities create a 3d non-uniformal field of values from 0.00 to 0.5  these values are fed to the isosurface component and Voila!!.  No hustle animated complexity defined by certain rules ( number of attractors, equation for the values distribution <cos,sinc ect>.

You can download the definition as usual from the [Sub]code page.

And of course you must have Nudibranch and Millipede installed..


Enjoy.! 🙂

2-state Cellular Automaton in Python for Grasshopper


I just got my hands on Python for rhino last week (more specifically on a package called ironpython), because I wanted to try out the capabilities and the adaptive character of this powerful scripting/coding language. What is interesting in the case of ironpython is the import of both the rhinoscript syntax and the Rhinocommon elements within the Grasshopper3d environment. Having prior programming experience python is fairly easy to learn and quite user friendly. The  feature of debugging without compiling the code is also really useful.

To test the scripting possibilities of Python I wrote a 2-state cellular automaton based on this code from Processing on Worlfram 2d CA’s. I have implemented both Rhinocommon and rhinoscript syntax commands and members in the code, plus I have introduced some time based evolving  just to make the simulation dynamic.


The algorithm can create a variety of patterns, emerging from the initial rule defining the state relation between the automata (ie. the famous rule 110). The parameters of the python component are the number of the rule  used, the width of the drawing grid, the size of the cell and the time. The process becomes kind of slow after a few iterations because lots of geometry is being generated, thus if the boxes were to be replaced by simple points the algorithm would have a much better performance.



Here is a small video documenting the process.

This is a snapshot of the grasshopper definition. I plan to release the code after I clean it up a little bit, so stay tuned if you want to try it out.