|Designed by||David Rutten|
|Developer||Robert McNeel and associates|
|First appeared||September 2007|
1.0 / April 4, 2014
|OS||Windows 2000 and later|
Grasshopper is a visual programming language and environment developed by David Rutten at Robert McNeel & Associates, that runs within the Rhinoceros 3D computer-aided design (CAD) application. Programs are created by dragging components onto a canvas. The outputs to these components are then connected to the inputs of subsequent components.
Grasshopper is primarily used to build generative algorithms, such as for generative art. Many of Grasshopper's components create 3D geometry.[ex 1] Programs may also contain other types of algorithms including numeric, textual,[ex 2] audio-visual[ex 3] and haptic applications.[ex 4]
Advanced uses of Grasshopper include parametric modelling for structural engineering, parametric modelling for architecture and fabrication, lighting performance analysis for eco-friendly architecture and building energy consumption.
The first version of Grasshopper was released in September 2007, and titled Explicit History. Grasshopper has become part of the standard Rhino toolset in Rhino 6.0 and later.
AEC Magazine stated that Grasshopper is "Popular among students and professionals, McNeel Associate’s Rhino modelling tool is endemic in the architectural design world. The new Grasshopper environment provides an intuitive way to explore designs without having to learn to script." Research supporting this claim has come from product design and architecture.
Grasshopper features an advanced user interface. The main window consist mainly of the component 'palettes' and the 'canvas'. Since Grasshopper is a plug-in to Rhinoceros 3D, the layout of the main window is kept minimal.
GUI elements include:
- Component Palettes - All installed commands appear within component palettes, with each group of commands in one tab. Additional component palettes may be installed with various grasshopper add-ons. Commands are dragged out of these palettes onto the canvas.
- Node Based Editor - Programs are edited in grasshopper using a node-based interface. Components are dragged out of palettes, and placed onto the canvas. Each component node represents a certain function, with input and output pins. Pins can be interconnected to form programs.
- Zooming User Interface - Some objects drawn on the canvas adjust their display based on the zoom-level. This results in a less detailed view when zoomed out and additional information when zoomed in.
- Find Dialog - The search function lists both exact and similar matches. The Find dialog provides both textual and spatial feedback regarding the search hits. Objects are highlighted on the canvas by a Metaball outline and arrows on the dialog point towards the location of the search results.
- Color Picker - The in-built color picker supports and displays color values and transparency values.
- Command Prediction - A Markov chain database is maintained of all the add actions of the user. This enables Grasshopper to predict with a reasonable level of accuracy which command(s) will be called upon next.
- Multi Document Interface - The multiple document interface menu contains small preview images of the documents currently open
- Recently Used Documents - The MRU menu maintains not just a large collection of previously used documents, but also checks each file for availability. Files which are no longer present on the system are shown greyed out. In addition, the history of the MRU is categorized into distinct period such as "Just Now", "Today", "Thursday" and "Last Week".
Node based editor
The main interface for algorithm design in Grasshopper is the node-based editor. Data is passed from component to component via connecting wires which always connect an output grip with an input grip. Data can either be defined locally as a constant, or it can be imported from the Rhino document or a file on the computer. Data is always stored in parameters, which can either be free-floating or attached to a component as input and outputs objects.
In the image above we see three free-floating parameters that are hooked up to a subtraction component. The two yellow boxes on the left both define a set of numeric constants. The top-most panel contains four integers (6, 7, 8 and 12) while the bottom-most panel contains only a single value. These floating parameters supply the subtraction component with input data, which results in four output values (6-5=1, 7-5=2, 8-5=3 and 12-5=7). The same result can be achieved using textual expressions and an evaluator component. In this fashion Grasshopper allows users to combine both visual and textual programming within the same environment.
- Architectural engineering
- Comparison of CAD software
- Design computing
- Generative Design
- Responsive computer-aided design
- Visual programming language
- Tedeschi, Arturo (January 2011). "Intervista a David Rutten". MixExperience Tools1 (in Italian and English). Naples, Italy: MixExperience. pp. 28–29. Retrieved February 8, 2011.
- Loomis, Mark (Dec 23, 2010). "About Generative Design platforms by Mark Loomis" (Blog). Designplaygrounds.
- Loomis, Mark (Jan 10, 2011). "Rhino Grasshopper VS Generative Components" (Blog). Designplaygrounds. Retrieved Feb 9, 2011.
- Georgiou, Odysseas (2011-10-12). Performance Based Interactive Analysis (Computational Design Modeling: Proceedings of the Design Modeling Symposium Berlin 2011). Springer Science & Business Media. ISBN 978-3642234354.
- Tedeschi, Arturo (2011). Parametric Architecture with Grasshopper: Primer. Le Penseur. ISBN 978-8895315102.
- Echarri, V. (2016-08-31). Eco-Architecture VI: Harmonisation between Architecture and Nature. WIT Press. ISBN 978-1784661113.
- Willis, Dan (2016-06-23). Energy Accounts: Architectural Representations of Energy, Climate, and the Future. Routledge. ISBN 978-1317428787.
- Rutten, David (2013). "Back home". I Eat Bugs for Breakfast.
- Jae, Woo (September 2009). "Architect. Grimshaw Architects, New York". Grasshopper Workshop. Cornell University: Cornell University. Retrieved Feb 9, 2011.
- Michael, Chen; Lee, Jason (2009–2011). "Crisis Fronts". Crisis Fronts Degree Project. Pratt Institute, NY: Pratt Institute, NY. Retrieved Feb 9, 2011.
- Andrew, Kudless (February 2010). "Co-Coordinator CCA MediaLab. San Francisco, CA". Formations 2010. California College of the Arts, San Francisco: California College of the Arts. Archived from the original on 2011-02-13. Retrieved Feb 9, 2011.
- Marc, Fornes; Payne, Andy (August 2010). "Sam Fox School - Calendar". MATERIAL RESONANCE WORKSHOP. Sam Fox School of Design & Visual Arts, Washington University St. Louis, Missouri: Sam Fox School of Design & Visual Arts. Retrieved Feb 9, 2011.
- Miller, Nathan (2010–2011). USC ARCH 517: Spring 2011. University of Southern California, CA: University of Southern California, CA. Retrieved Feb 9, 2011.
- Estévez, Prof. Alberto T. (2010–2011). "Master's Degree in BIODIGITAL ARCHITECTURE". ESARQ School of Architecture Universitat Internacional de Catalunya, Barcelona: ESARQ School of Architecture Universitat Internacional de Catalunya, Barcelona. Retrieved Feb 9, 2011.
- Westlake, Michael; Tansey, Alan; Keough, Ian; White, Joe (2010). "Club de Futbol Monterrey". ACADIA 2010 - Association for Computer Aided Design in Architecture, Exhibition Catalog. United States: PrintingHouse Inc, WI. 1 (1): 142–145. ISBN 978-1-4507-3472-1. Retrieved Feb 9, 2011.
- 2. Gensler (August 2009). "BIM analysis for Form and Façade". Shinkenchiku-sha Co.. Ltd. Retrieved 7 February 2011.
- 3. Day, Martyn (June 2, 2009). "Rhino Grasshopper". AEC Magazine. Retrieved 7 February 2011.
- Novak, James; Loy, Jennifer (2017-02-09). "Recoding Product Design Education: Visual Coding for Human Machine Interfaces". KnE Engineering. 2 (2): 227. doi:10.18502/keg.v2i2.620. ISSN 2518-6841.
- Celani, Gabriela; Vaz, Carlos Eduardo Verzola (2012). "CAD Scripting and Visual Programming Languages for Implementing Computational Design Concepts: A Comparison from a Pedagogical Point of View". International Journal of Architectural Computing. 10 (1): 121–137. doi:10.1260/1478-0722.214.171.124. ISSN 1478-0771.
- K Lagios, J Niemasz and C F Reinhart, "Animated Building Performance Simulation (ABPS) - Linking Rhinoceros/Grasshopper with Radiance/Daysim", Accepted for Publication in the Proceedings of SimBuild 2010, New York City, August 2010 (full article).
- J Niemasz, J Sargent, C F Reinhart, "Solar Zoning and Energy in Detached Residential Dwellings", Proceedings of SimAUD 2011, Boston, April 2011
- Arturo Tedeschi, Architettura Parametrica - Introduzione a Grasshopper, II edizione, Le Penseur, Brienza 2010, ISBN 978-88-95315-08-9 (in Italian)
- Arturo Tedeschi, Parametric Architecture with Grasshopper, Le Penseur, Brienza 2011, ISBN 978-88-95315-10-2
- Arturo Tedeschi, AAD Algorithms-Aided Design, Parametric Strategies using Grasshopper, Le Penseur, Brienza 2014, ISBN 978-88-95315-30-0
- Pedro Molina-Siles, Parametric Environment. The Handbook of grasshopper. Nodes & Exercises , Universitat Politècnica de València, 2016. ISBN 978-84-9048-499-9
- Grasshopper Community Website
- Official Grasshopper Blog
- EXPLODE_BREPS is a site with Grasshopper Tutorials and a Catalog of Experiential Grasshopper Definitions from the UVa School of Architecture
- PARAMETRIC ENVIRONMENT. The Handbook of Grasshopper. Nodes & Exercises
- Example projects
- Akos, Gil; Parsons, Ronnie. A sample of grasshopper generated forms (Blog). StudioMode Beta.
- A list of functions to link to datastreams containing numbers and text information Fraguada, Luis. "LaN co-director".
- Andrew, Kudless (July 2011). "Biodigital Architecture Master". Biodynamic Structures Workshop. California College of the Arts, San Francisco: AA San Francisco Visiting School. pp. photos. Retrieved Feb 9, 2011.
- Payne, Andrew, Using a WII Nunchuck to Control Grasshopper