17th July 2023

How to browse Grasshopper Plugins

How to browse Grasshopper Plugins

Plugins extend the base capability of Grasshopper, providing new components and functions unavailable in the default library. Some plugins are designed for specific tasks, such as structural analysis or 3D printing, while others offer more general-purpose functionalities, like data management or component manipulation.

Installing and using plugins can help you streamline your workflow, tackle more complex design challenges, and explore new creative possibilities. However, with hundreds of plugins available, this vast ecosystem can be overwhelming for newcomers.

I still remember when I first got into Grasshopper Plugins; it was incredibly overwhelming. It was part of the setup process when I joined the company, they installed 60+ plugins to my Grasshopper.

Most Grasshopper plugins as open sourced and because of that, there are a lot of them out there. You can find most of them on Food4Rhino.

To better this landscape of plugins out there, I have categorized them into three different types: Functional, Quality of Life (QoL), and Hybrid. These categories have helped me navigate the plugin landscape, and I hope they help you too.

Functional Plugins

These are plugins that extend Grasshopper's base functionality. They are often designed for very specific tasks like structural optimization, matrix manipulation, or even 3D printing. They come in handy when you are trying/wanting to do something in Grasshopper that isn’t natively supported.

Here is a list of functional plugins that I personally use:

  • Human UI: This lets you build a “User Interface” based on your Grasshopper script using components. They are mostly form based though.
    • It is incredibly useful to pass on Grasshopper scripts to others who don’t know how to use Grasshopper.
    • All they have to simply do is open up Rhino → Grasshopper and then they can interact with the script through the form that you build.
    • However, building the form gets quite messy because you need a lot of wires and components.
  • Human: This is useful for rendering elements on the Rhino Viewport that aren't geometry. I use it a lot to render HUDs or legends.
  • The BHoM: More than a Grasshopper plugin, BHoM represents an entirely different paradigm.
    • They are a group that promotes interoperability between different programs.
    • While I don't really use all their components, I frequently use their explode component to inspect data.
  • Urbano: A set of components designed to bring urban planning functionality to Grasshopper.
    • It's got components that let you run walking analysis, trip scoring, and more in Grasshopper.
  • DeCodingSpaces Toolbox: This plugin lets you manipulate GIS data and run urban analysis in Grasshopper with ease.
    • I mostly only use their components to manipulate GIS, but they do have other urban planning components similar to Urbano too.
  • Anemone: This plugin allows you to create “loops” in Grasshopper, which comes in handy when you need to iterate Grasshopper operations.
  • jSwan: components that let you break down and inspect JSON files into strings.
  • Goat: This lets you run other optimization methods, local and global in Grasshopper apart from using Galapagos. I have used the COBYLA local optimizer a lot.

And the list goes on but the concept here is to give you an idea of what types of functional plugins are out there. LadyBug Tools is also another toolset worth mentioning for environmental analysis.

Quality of Life (QoL) Plugins

These are plugins that can improve your Grasshopper scripting experience. That means they either enhance the native components in Grasshopper or add more functionality to your Grasshopper canvas.

They are less about adding functionally and more about making the scripting experience better and less cumbersome.

Here is my list of QoL plugins with my two favorites being SnappingGecko and ScriptParasite.

  • SnappingGecko: Lets you snap the position of components to various elements on your canvas, which allows for more organized and less messy component placement.
    • This is extremely helpful to have a tidy-looking Grasshopper script
  • ScriptParasite: If you have ever used the script component on Grasshopper, you know that editing code on the Grasshopper editor is subpar.
    • Script Parasite lets you code using your favourite IDE by syncing up a file on your local computer with a script component in Grasshopper.
    • Apart from the better programming experience, you also unlock a lot of other benefits, like version control, IntelliSense and more.
  • Telepathy: If you have handled big scripts before, you know it's a pain to connect one container to another located far away. This plugin makes data transfer easier using key interfaces.
    • While I have used this in the past, remembering the “names” for your variables can become hard to manage if you have too many variables.
    • I find that it’s best used for scripts that have segments that make it easier to remember the names.
  • Moonlight: This plugin brings "dark mode" to your Grasshopper canvas.
    • While I am a big fan of dark mode, I don’t use this plugin anymore because I have grown used to the original colour scheme.

QoL plugins are awesome and they really do make the scripting experience much better. But the downside to this is that if you work in a team and you transfer scripts around, it can be an annoyance to force others to install plugins that they don’t use.

Hybrid Plugins

These plugins offer both benefits: they extend Grasshopper's capability and offer components that improve your scripting experience. These kinds of plugins normally revolve around a theme.

A plugin that I use a lot is called EleFront and its theme is to improve the data transfer between Rhino and Grasshopper. For that, they have plugins that help you better read/write data but also extend Grasshopper’s native components.

  • EleFront: This plugin aims to improve the data transfer between Rhino and Grasshopper.
    • It offers components that streamline the reading and writing data to and from Rhino
    • This is a very powerful plugin and it unlocks a lot more than just easier data transfer. It lets you build multi-script/file workflows using Rhino and Grasshopper.
  • MetaHopper: This plugin provides components to manipulate other Grasshopper components, simplifying the number of controls in a Grasshopper script.
  • LunchBox: A set of components to help create mathematical shapes, and better manipulate data.
  • Pufferfish: Provides numerous custom geometry operations, which are quite useful.
    • They also offer components that simplify some of Grasshopper's native geometry functions.
    • I tend to use their tweenoffset and point components a lot.

The Downside of Plugins

As you can see, plugins can be extremely helpful, offering new perspectives and solutions using Grasshopper. However, there are some drawbacks to using Grasshopper plugins.

Plugins make collaboration harder

Even though plugins can greatly extend the functionality of Grasshopper, they can be a point of frustration for teams. Anyone that opens the script needs to have all the relevant plugins along with the right version installed on their machine.

That means it isn’t as simple as sending a single file to others to use, you need to also make sure that they have the same versioned plugins installed on their machine too. This can get quite frustrating, especially for other Grasshopper users because it can clutter up their Grasshopper environment.

Plugins can slow down and clutter Grasshopper

As you explore the world of Grasshopper plugins, you will undoubtedly accumulate a fair number of plugins. Depending on how many you have, this can seriously impact the performance of both the processing and the start time of Grasshopper.

Not to mention if you have many plugins with similarly named components, it gets harder and harder to search for them.

Plugins are open-sourced and can be unstable

Due to the open-source nature of plugins, some may be unstable and cause Grasshopper/Rhino to crash. A good indication of stability can be the last version date and the number of reviews on the plugin. The more recent the date and the more reviews it has, the more stable the plugin is likely to be.

The open-sourced nature of plugins is a double-edged sword, you get plenty of choices but you aren’t guaranteed the quality and maintenance of the plugins.

My advice on trying and adopting plugins

With the sheer number of plugins out there, you need to be able to discern the signal from the noise. I have tried and tested a lot of plugins, some good, some bad and some just don’t do much. But plugins do add clutter and overhead performance to Grasshopper, so you should be intentional about which plugins to use.

I normally start with identifying a problem that you cannot solve with your current Grasshopper configuration. This is normally an inconvenience with the current process or lacking the functionality that I need. (e.g. Grasshopper doesn’t have environmental analysis natively)

Then, I would comb through Food4Rhino and Google for any plugins that might solve my issue. This can sometimes be challenging because their names don't always reflect their function. Plugins like Elefront and Pufferfish don't advertise their plugins’ functionality in their naming. I usually come across these plugins in forums, Reddit or even through word of mouth from others.

Once I get a list of plugins to try, I will install all of them and then test them out on how well they solve my problem. Generally, in a list of 4-5, I would pick 2-3 to keep. I would then set a calendar reminder for 1-2 months later to re-evaluate which plugin I want to finally keep.

The main concept here is to just review and clean the list of plugins you have in Grasshopper because it is very tempting and easy to just mindlessly include every plugin you come across.

Final Thoughts

There is no doubt that plugins can amplify the functionality of Grasshopper. They give you new functions, enhance the scripting experience and even offer new ways of using Grasshopper.

The array of plugins I've listed here represents only a fraction of what’s available. They are my personal plugins, curated through experience and necessity. But everyone’s plugin collection will be unique and somewhat influenced by their work and preferences.

Having too many plugins that you don’t use only adds clutter and unnecessary strain to Grasshopper. By simply reviewing your plugins on a problem-by-problem basis, you can avoid these pitfalls. It allows you to routinely evaluate your toolkit's effectiveness, keeping it lean and efficient while still addressing your design challenges.

Remember, the goal of leveraging plugins is not to bloat your Grasshopper with functionality but to create a tailored environment that empowers you to innovate and design effectively.

Thanks for reading,