Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Visual Programming with Rhino, Grasshopper & Revit
Highest Rated
Rating: 4.5 out of 5(13 ratings)
86 students

Visual Programming with Rhino, Grasshopper & Revit

Master parametric BIM design workflows and computational techniques for architecture and construction
Last updated 9/2023
English

What you'll learn

  • Navigate and utilize the Grasshopper visual programming interface within Rhino efficiently.
  • Create parametric definitions with components, data types, lists, and conditional logic in Grasshopper.
  • Manage complex data structures such as data trees to build advanced parametric models.
  • Integrate Rhino and Grasshopper seamlessly into Revit using Rhino.Inside.Revit for BIM workflows.
  • Control Revit elements, parameters, grids, levels, and walls through computational design techniques.
  • Apply Kangaroo physics engine to simulate physical forces and optimize architectural geometries.
  • Prepare parametric models for 3D printing and perform physical simulation-based analyses.
  • Explore generative design methods to enhance creativity and efficiency in architectural projects.

Course content

3 sections30 lectures3h 59m total length
  • Introduction to Rhino Grasshopper3:22

    Welcome to the first lecture of this course, where we introduce visual programming with Rhino using the Grasshopper environment. This session sets the stage by explaining the course aims and the software environment you'll be working in, focusing on Rhino 7 as the main 3D modeling engine.

    Grasshopper, integrated since Rhino 6, is a visual programming tool that allows you to create and control parametric models intuitively. It complements Rhino by enabling automations and advanced modeling workflows without the need to write traditional code.

    Through this lecture, you will understand the methodology behind visual programming, using nodes and cables to form logical connections that define algorithms, streamlining tasks that would otherwise be done manually in Rhino.

    Key topics covered:

    • Overview of Rhino 7 and its role in 3D modeling

    • Introduction to Grasshopper as a visual programming tool

    • Integration of Grasshopper with Rhino for parametric control

    • Concept of graphical algorithm editing and automation

    • Basic understanding of nodes and cables in visual programming

    • Benefits of using Grasshopper for repetitive task automation

    Practical value in computational design:

    • Enables precise parametric control over 3D models

    • Supports generative design and advanced workflows

    • Reduces manual repetitive work in modeling tasks

    • Facilitates learning visual scripting without complex coding

    By the end of this lecture, you will have a clear understanding of what Grasshopper is, how it integrates with Rhino, and why visual programming is a powerful tool in computational design, setting a solid foundation for more advanced lessons in the course.

  • Grasshopper User Interface Tour15:29

    This lecture provides a comprehensive tour of the Grasshopper user interface, the essential visual programming environment integrated within Rhino since version 6. It introduces the main workspace elements, including the tool panels, canvas, and menus that allow efficient creation and management of parametric definitions in Grasshopper.

    You will learn how to navigate the interface, load and organize components, and customize the workspace preferences such as fonts, colors, and helpful widgets. Important interface features like the canvas navigation controls, node search functionality, and the use of alignment widgets to organize nodes are demonstrated to streamline workflow.

    The lesson also covers practical node operations such as adding, copying, deleting, connecting nodes, grouping them for better organization, and adding annotations using the scribble tool. Additionally, it explains how to control node visibility and create named views on the canvas to improve project navigation.

    Key topics covered in this lecture

    • Grasshopper tool panels and canvas overview

    • Loading and managing components and nodes

    • Interface customization including preferences and widgets

    • Node navigation: zoom, pan, and zoom extend

    • Using alignment widgets to arrange nodes

    • Grouping and annotating nodes for clarity

    • Searching for nodes and canvas views

    Practical value in computational design with Grasshopper

    • Master efficient workspace management for parametric design

    • Enhance productivity with shortcuts and interface customization

    • Organize complex definitions for better readability and maintenance

    • Utilize annotations and groupings to document design intent

    After completing this lecture, learners will confidently navigate and customize the Grasshopper user interface, effectively organize components and nodes, and leverage interface tools to build clear, scalable parametric definitions.

  • Communication with Rhino Geometries6:58

    This lecture focuses on how Grasshopper communicates with Rhino geometries, demonstrating the workflow of creating and managing geometry within the Rhino canvas through Grasshopper's visual scripting environment.

    Starting with simple points, learners will explore the visual distinctions between geometries created directly in Rhino versus those generated by Grasshopper, enhancing their understanding of the linked workflow.

    Gradually increasing complexity, the lesson shows how to create lines, extrude surfaces, and move objects using vectors. It also introduces the important concept of "baking" geometry, which converts Grasshopper previews into permanent Rhino objects.

    Key topics covered in this lecture include:

    • Creating basic geometries such as points and lines within Grasshopper

    • Understanding visual cues distinguishing Grasshopper and Rhino geometries

    • Using sliders to control geometry parameters interactively

    • Applying vector-based transformations like extrusion and move

    • The baking process to make Grasshopper geometry permanent in Rhino

    • Checking and managing unit settings between Rhino and Grasshopper

    • Utilizing the Remote Control Panel for quick parameter edits without opening Grasshopper fully

    Practical value in computational design and BIM workflows:

    • Enables precise control of geometry creation and manipulation across Rhino and Grasshopper

    • Facilitates efficient geometry management and iteration through baking

    • Improves design workflow by offering lightweight parameter editing via the Remote Control Panel

    • Supports interoperability and visualization of parametric design elements

    Upon finishing this lecture, learners will understand how to create, differentiate, and manipulate geometries within Grasshopper and Rhino, including the key process to convert dynamic previews into fixed Rhino objects. They will also gain workflow tips like using sliders and the Remote Control Panel to streamline parameter control, enhancing their computational design capabilities.

  • Object Types in Grasshopper12:14

    This lecture explores the types of objects you will encounter when working with Grasshopper layouts and definitions, specifically focusing on parameters and components as foundational building blocks in visual programming workflows.

    We start by understanding parameters, which function as storage points for information within Grasshopper definitions. This data can come from Rhino geometry or be manually created and edited inside Grasshopper. Different parameter types such as points, curves, and text inputs are examined, alongside tools like panels that help visualize data.

    Next, the lecture covers components, which take parameter data as input and execute operations such as math functions or geometry manipulation. You will learn how components process inputs to output transformed data, including examples of curve division and circle creation.

    Key topics covered in this lecture:

    • The role of parameters in storing and managing data within Grasshopper

    • Editing and configuring collections of points and curves as input data

    • Using panels to view and manage textual or numerical information

    • Slider components for numeric input, including multidimensional sliders

    • Using graph mappers to define functional transformations on data

    • Basics of components performing operations on input parameters

    • Interpreting component and parameter states such as warnings, errors, selection, and disabling

    Practical value in visual programming for computational design:

    • Enables efficient management and manipulation of complex geometric data

    • Supports creating dynamic parametric models by linking input data to output geometry

    • Helps troubleshoot and optimize Grasshopper definitions through feedback states

    • Facilitates the combination of Rhino geometry and Grasshopper logic for innovative designs

    After completing this lecture, learners will understand how to work with various types of objects in Grasshopper, including how to create, edit, and use parameters as input data and how components process these inputs to perform operations. They will also be able to recognize and interpret visual indicators for warnings and errors to troubleshoot their visual scripts effectively.

  • Components in Detail7:22

    This lecture dives deeper into the core concept of components in Grasshopper, explaining their structure and how they operate within the visual programming environment. It begins with creating a basic component, such as a circle defined by center, normal, and radius inputs. The focus is on understanding the layout and interaction of inputs on the left, outputs on the right, and the main component body.

    We explore how to access detailed information about each component, including hovering for input/output descriptions, handling runtime warnings, and using the help feature to understand component functionality. Attention is also given to the different ways components can be displayed, such as icons or names, with customization through the Display menu.

    Beyond basic use, this lecture introduces helpful tips like using keyboard shortcuts to locate components within the tool panels and recognizing components without outputs. It also emphasizes the dynamic and editable nature of some components, showcasing methods to add or remove inputs, change panel content, and adjust appearance and behavior through context menus.

    Key topics covered include:

    • Component anatomy: inputs, outputs, and central functions

    • Accessing component information and runtime warnings

    • Customizing component display modes (icons, names, input/output abbreviations)

    • Using shortcuts to locate components in the toolbar

    • Identifying components without outputs or inputs

    • Contextual menus and editable components

    • Editing panel components including font, alignment, and background

    Practical value in computational design:

    • Understanding component structure aids in building efficient parametric definitions

    • Accessing and interpreting component information prevents errors and improves debugging

    • Customizing display enhances workflow clarity and speeds development

    • Editable components enable flexible, dynamic design adjustments during modeling

    By the end of this lecture, learners will be able to confidently navigate and manipulate Grasshopper components, customizing their interaction and display to streamline parametric design workflows and effectively troubleshoot and optimize their visual programming definitions.

  • Data Types Explained5:05

    This lecture dives deeper into the concept of data types within Grasshopper, explaining how data is managed and maintained throughout the design process. It highlights the distinction between temporary and persistent data, focusing on why maintaining persistent data is crucial when working on complex parametric models.

    The discussion includes practical techniques to make data persistent by internalizing it, ensuring that values remain unchanged and available even after source data is removed or altered. This lays the foundation for reliable parametric workflows.

    Additionally, the lecture explores various input data types such as sliders, emphasizing their flexibility. It explains how sliders can be configured to accept integers, floating points, or prime numbers, enhancing precision and control in parametric design.

    Key topics covered in this lecture:

    • The concept of persistent versus temporary data in Grasshopper

    • How to internalize data to keep it persistent within definitions

    • Understanding data input types, including sliders and value lists

    • Configuring sliders to handle different numeric types like integers and floating points

    • Using value lists for selecting from predefined options with various modes such as checklist, sequence, and value sequel

    Practical value in visual programming and parametric design:

    • Learn to ensure data longevity and reliability in parametric models

    • Develop control over input parameters for more flexible design iterations

    • Use value lists to efficiently manage option selection in design workflows

    • Improve data management to minimize errors and increase efficiency

    By the end of this lesson, learners will understand how different data types work in Grasshopper, how to maintain data persistence for stable parametric models, and how to customize input controls for better project flexibility and accuracy.

  • Cables and Data Connections9:39

    This lecture provides a detailed exploration of how cables and data connections work within Grasshopper, a critical aspect in visual programming for parametric design. You will learn to create and manage connections between different components and parameters, including how to merge data and handle multiple inputs efficiently.

    The session begins with creating basic curves in Rhino, then transferring them as lists into Grasshopper. You will discover techniques to connect, disconnect, and combine multiple data sources using various keys like Control and Shift to manage cables. Furthermore, the lecture explains the concept of internalizing data to make parameters persistent within Grasshopper, independent of changes in Rhino.

    Additionally, you will learn to interpret the visual characteristics of cables, such as wire thickness, color changes, styles, and symbols that represent data types, errors, and structures like lists and trees. This helps in troubleshooting and understanding the flow and grouping of data through the graphical connections.

    Key topics covered in this lecture:

    • Creating and selecting multiple curves in Rhino for Grasshopper input

    • Establishing, merging, and deleting wire (cable) connections between components

    • Using control keys (Ctrl and Shift) to manage single or multiple connections

    • Internalizing data to keep it stored within Grasshopper

    • Creating sliders and controlling subdivisions for parametric inputs

    • Interpreting wire visual styles to understand data passing, including lists and data trees

    • Recognizing error indicators and persistent data within cable connections

    Practical value in computational design:

    • Enables efficient management of complex data flows between design components

    • Facilitates the creation of multi-input parametric models enhancing design flexibility

    • Improves troubleshooting and debugging through visual feedback from cable styles

    • Allows caching and preserving design data inside Grasshopper for stability

    By the end of this lecture, you will understand how to effectively connect, control, and visualize data pathways in Grasshopper. You will gain skills to create sophisticated parametric definitions by manipulating cables and data structures, which are foundational for advanced computational design workflows.

  • First Grasshopper Definition7:53

    In this lecture, we apply the foundational concepts learned so far by creating our first parametric definition in Grasshopper. We start by drawing a line in Rhino and then import it into Grasshopper, where we explore how to subdivide the line into adjustable segments.

    Through the use of components like "Divide Curve," we learn to manipulate the subdivisions interactively by changing the number of division points. We also examine the outputs generated by these components, such as subdivision points, tangent vectors, and normalized parameters of the curve.

    Next, we introduce the Graph Mapper tool to modulate these parameters, creating more dynamic and organic forms. We explore mathematical operations such as multiplication to modify the parameters and use tangent vectors to construct perpendicular circles along the curve with varying radii. Finally, we generate a lofted surface from these circles, demonstrating a complete parametric workflow where any input changes dynamically affect the geometry.

    Key concepts covered in this lecture:

    • Importing and referencing Rhino geometry into Grasshopper

    • Using the "Divide Curve" component for line subdivision

    • Understanding and utilizing tangent vectors and curve parameters

    • Applying Graph Mapper for parametric control

    • Creating and manipulating circles perpendicular to a curve

    • Generating loft surfaces from curves

    • Interactive parameter control with sliders

    Practical applications in computational design:

    • Developing parametric models based on existing geometry

    • Using data-driven parameters to control design variability

    • Creating dynamic architectural forms and components

    • Building workflows for organic shape generation

    By the end of this lesson, learners will be able to create a simple yet powerful parametric definition in Grasshopper that imports Rhino geometry, subdivides it, and generates complex organic forms controlled via dynamic inputs, reinforcing the core parametric design workflow.

  • Working with Attractors (Hot Spots)6:54

    This lesson continues exploring key components that enable the creation of complex parametric definitions in Grasshopper. It introduces the concept of attractors—special geometries that control the behavior and transformation of other objects in a design.

    Through a practical workflow, you'll learn how to generate a hexagonal grid and manipulate its parameters such as cell size and cell count using number sliders. This foundational setup allows the creation of center points for each hexagonal cell, which serve as references for additional geometry like circles and surfaces.

    The core of the lecture focuses on using an attractor point to dynamically influence the orientation and shape of surrounding geometries within the grid. By defining vectors from cell centers to the attractor point, the lecture demonstrates how to direct surfaces and curves to respond interactively as the attractor changes position.

    Key topics covered in this lecture:

    • Creation and parameterization of hexagonal grids

    • Use of number sliders for dynamic control of size and count

    • Definition and role of attractor points in parametric design

    • Vector construction between points to influence orientation

    • Offsetting and modifying curves to create adaptable surfaces

    • Interactive manipulation of geometry based on attractor position

    • Visualization of dynamic parametric relationships in perspective and top views

    Practical value for computational design:

    • Understanding how to govern geometry behavior using attractors

    • Building flexible parametric grids responsive to user inputs

    • Creating interactive designs that adapt smoothly to changing parameters

    • Applying these techniques for architectural and environmental form manipulation

    By the end of this lecture, you will grasp how attractor points serve as essential tools in Grasshopper for directing complex geometric behaviors. This knowledge equips you to design adaptive parametric models that visually and functionally respond to interactive elements in your projects.

  • Expressions and Conditionals12:27

    This lecture dives into fundamental mathematical expressions and logical operations essential for algorithmic modeling in Grasshopper. It begins with a review of basic mathematical and logical operators, demonstrating how to use them to manipulate numerical values and create boolean logic within the visual programming environment.

    The session progresses to exploring more complex operations such as trigonometric functions, which are crucial for creating geometric figures. Using Grasshopper, learners will build spiral patterns and three-dimensional shapes by applying sine and cosine functions to point coordinates.

    Additionally, the lesson covers the use of Grasshopper components like point constructors, arrays, and vector manipulations to efficiently generate and repeat geometries. Learners will also discover how to simplify these operations with mathematical expression components for more powerful and concise definitions.

    Key topics covered in this lecture:

    • Basic mathematical and logical operators in Grasshopper

    • Creating and manipulating boolean values

    • Use of trigonometric functions (sine and cosine) to generate spirals

    • Constructing and deconstructing points and vectors

    • Repeating geometries using linear arrays and factors

    • Using mathematical expression components for concise formulas

    • Generating Voronoi diagrams from point arrays

    Practical value for computational design:

    • Enhancing algorithmic modeling skills with fundamental math and logic

    • Creating complex geometric patterns and parametric designs

    • Optimizing definitions with custom expressions to improve workflow efficiency

    • Applying spatial algorithms like Voronoi tessellation for design exploration

    After this lecture, learners will be able to apply mathematical and logical operators in Grasshopper to build parametric definitions, create dynamic geometric forms like spirals, and explore advanced concepts such as Voronoi diagrams. This foundation equips them to develop more sophisticated computational designs and workflows.

  • Domains and Colors8:00

    In this lecture, we introduce two fundamental concepts in Grasshopper: domains and colors. These concepts are tightly connected, as colors often depend on defined domains for their application. We start by creating a simple geometry—a polygon—and explore how to manipulate its properties such as origin, radius, and number of sides to form a base for applying these concepts.

    Next, we transform this polygon into multiple surfaces by exploding its curves and extruding the resulting segments. This setup allows us to assign different colors to each surface, demonstrating the practical use of domains in color assignment. We then explore how to create and subdivide domains in Grasshopper, including one-dimensional and two-dimensional domains, to segment values effectively.

    The lecture further explains the HSL color model used in Grasshopper, focusing on the hue component ranging from 0 to 1, which aligns with the domain's value range. Finally, we apply these colors to the extruded surfaces using the Custom Preview component, visualizing how domain subdivisions correlate with color variations.

    Key topics covered in this lecture:

    • Creating and manipulating polygons in Grasshopper

    • Generating multiple surfaces through exploded curves and extrusion

    • Understanding and constructing one-dimensional and two-dimensional domains

    • Subdivision of domains into multiple segments

    • Introduction to the HSL color model and its components

    • Using the Custom Preview component to apply colors to geometries

    • Linking domains with color application for visual differentiation

    Practical applications in computational design:

    • Enabling precise control over color assigning in parametric models

    • Facilitating the visualization of segmented data through color ranges

    • Enhancing design presentations by applying dynamic color schemes

    • Creating complex and detailed visual patterns within Grasshopper definitions

    By the end of this lecture, learners will understand how to define domains in Grasshopper and leverage these domains to apply color dynamically to parametric geometries, enhancing both the aesthetics and functional clarity of their computational designs.

  • Geometries and Curves8:58

    In this lecture, you will learn how to work with various types of curved geometries and lines within Grasshopper. The session guides you through practical examples using a downloadable script that showcases different curve creation methods. You'll start with basic line creation, selecting points from a list, and then move into more complex geometries such as polylines, circles, ellipses, arcs, and various curve types.

    The workflow involves understanding how to manipulate start and end points, use boolean toggles to close polylines, and adjust parameters like radius, normal direction, and angles to define shapes precisely within Grasshopper's environment.

    Further, you will explore NURBS and interpolated curves, learning their differences and how control points or interpolation points affect the curves' shapes. The video also covers polycurves, which combine several curves, and kink curves that adapt shape based on angular thresholds, providing comprehensive coverage of curve manipulation.

    Key topics covered in this lecture:

    • Creating and manipulating lines using point lists and indices

    • Defining polylines with open and closed paths using boolean toggles

    • Constructing circles and ellipses by specifying center points, radii, and planes

    • Understanding and adjusting arcs through radius and angle parameters

    • Exploring NURBS and interpolated curves and their control versus interpolation points

    • Working with polycurves as unions of multiple curves

    • Using kink curves with angular threshold control for versatile curve shapes

    Practical value in computational design:

    • Enable precise creation and customization of complex curved geometries

    • Gain control over curve behavior in parametric models for responsive design

    • Improve ability to integrate various curve types into workflows for modeling and fabrication

    • Understand key parameters that influence curve forms and transitions

    By the end of this lecture, you will understand how to manipulate a wide range of curves in Grasshopper, including lines, arcs, circles, ellipses, NURBS, and complex curve combinations, empowering you to create sophisticated parametric designs and pave the way for advanced computational modeling tasks.

  • List Processing Basics8:39

    This lesson introduces the fundamental concepts of list processing within Grasshopper, an essential skill for working with parametric designs. Lists can vary in size and can be nested to form complex data trees, which are crucial for managing and manipulating data effectively in visual programming workflows.

    We will explore how to handle two example lists of points and understand how their interactions shape the creation of lines and other geometry. By experimenting with these lists, you'll see how different list lengths influence outputs and how Grasshopper handles mismatched list sizes by default.

    Key to mastering this lesson is understanding three specific components that manipulate and control list interactions in Grasshopper. This knowledge allows you to create algorithms and parametric definitions that handle data more dynamically and flexibly.

    Key Topics Covered

    • Understanding list sizes and nesting in Grasshopper

    • Creating relationships between two lists of points

    • Using the Shorter List component to trim lists to the smallest size

    • Using the Longer List component to repeat elements for list compatibility

    • Exploring different list repeat and interpolation options

    • Using Cross Reference for creating all combinations between lists

    • Configuring cross reference options to include or exclude diagonal elements

    Practical Value in Computational Design

    • Manipulate and structure data efficiently for parametric modeling

    • Create complex geometrical relationships and algorithms

    • Handle variable-length data inputs to avoid errors and unexpected results

    • Produce design variations through data iteration and combination

    By the end of this lecture, you will understand how to manipulate lists and their behavior within Grasshopper. This foundation equips you to build more robust parametric definitions and complex design algorithms that rely on dynamic and nested data structures.

  • Creating Lists6:08

    In this lesson, we explore multiple methods available for creating lists in Grasshopper, which is essential for managing data efficiently in visual programming workflows. Building on the concepts introduced in the previous lecture, this class focuses on deepening your understanding of list creation techniques.

    We start by revisiting collections as the simplest way to group items, looking at how to create collections of various types such as Boolean values, integers, floating-point numbers, text strings, and colors. You also learn how to configure and customize these collections effectively within Grasshopper.

    Next, we explore more dynamic list creation methods including the use of 'range' and 'series' components. You learn how to define numeric ranges with specified intervals and generate sequenced series based on starting points, step sizes, and element counts. The lesson also covers the generation of random lists, emphasizing the role of domains and the importance of a seed value to reproduce consistent random outputs when needed.

    Key topics covered in this lecture:

    • Creating and configuring collections of different data types

    • Using the range component to generate lists based on defined domains and intervals

    • Generating series of numbers with start, step, and count parameters

    • Creating random value lists and managing consistency with seed values

    Practical value for computational design:

    • Enables efficient data management for parametric definitions

    • Supports automation of repetitive numeric sequences and ranges

    • Offers control over randomness for simulation and algorithm testing

    • Improves accuracy and reproducibility in computational workflows

    By the end of this lesson, you will understand how to create and manipulate lists in various ways within Grasshopper, enhancing your ability to manage data for complex visual programming and computational design tasks.

  • Displaying Lists6:39

    This lesson focuses on techniques for displaying and identifying points within the Rhino Grasshopper viewport. The session begins by creating a simple list of points using a defined numeric range, which serves as the basis for visualization.

    You'll learn how to use components such as Point List to label points with their indices directly in the viewport, enhancing clarity during modeling. Additionally, the lesson covers moving points spatially using vectors and labeling them with the Text Tag component, enabling customized text annotations at specific locations.

    Finally, the tutorial explores the use of gradient colors applied to points with the Gradient and Custom Preview components, allowing you to visually differentiate points based on their respective values.

    Key topics covered:

    • Creating and visualizing lists of points using domains and ranges

    • Using the Point List component to display point indices in the viewport

    • Applying the Move component to reposition points based on vector directions

    • Adding textual labels to points with the Text Tag component

    • Utilizing Gradient component presets to generate color ranges

    • Applying colors to points using the Custom Preview component

    • Techniques for enhancing point visualization in parametric design workflows

    Practical value in computational design:

    • Improves the ability to identify and manage points during parametric modeling

    • Facilitates debugging and refinement of Grasshopper definitions through clear visual feedback

    • Supports better communication of design data by labeling and coloring geometry

    • Enables more intuitive control over point distributions and data presentation

    By the end of this lecture, you will understand different methods to display, label, and color points in Grasshopper, equipping you with effective visualization techniques to improve your parametric modeling process.

  • Lists Management5:08

    In this lecture, you will learn how to effectively manage lists in Grasshopper, a crucial skill for handling data in visual programming. We will explore how to obtain values from lists and modify these lists to suit your design needs. The lesson starts by examining a sample list of numbers and demonstrates how to view and interpret its contents using key components.

    Several essential list management tools are introduced, allowing you to count items, access specific list elements, reverse the order of a list, and shift its contents by varying offsets. Additionally, you will discover how to insert new elements into precise positions within a list, enhancing your control over data flow.

    The lecture also covers advanced techniques like weaving two lists together based on defined patterns and removing elements from a list using pattern indices. These operations enable sophisticated manipulation of data sequences, which is critical for creating complex parametric definitions.

    Key topics covered in this lecture:

    • Understanding and counting elements in a list

    • Accessing list items by index

    • Reversing and shifting list orders

    • Inserting elements at specific positions

    • Combining lists with the weave component

    • Removing items based on pattern indices

    Practical value in visual programming and computational design:

    • Efficient data manipulation to support parametric workflows

    • Enhanced ability to create dynamic and adaptive definitions

    • Improved control over how data influences design outcomes

    • Preparation for more complex data structures and logic

    By mastering these list management techniques, you will be equipped to handle and organize data more effectively within Grasshopper, allowing you to build more flexible and powerful parametric models.

  • Advanced List Operations5:12

    This lecture focuses on practical applications of list processing within Grasshopper to create complex patterns. Starting with preloaded geometric elements including solids and curves, students will see how to manage and manipulate these elements to develop advanced definitions.

    The workflow involves enabling previews of objects, merging geometries, and constructing rectangular arrays with specified repetitions and cell sizes. By leveraging the repeat data component, learners will explore pattern creation using list values and how indices can control geometry placement within arrays.

    The session concludes with techniques for customizing patterns with multi-line repeat sequences and finalizing geometry creation within Rhino through the cook function, enabling real-world object generation post-processing.

    Key topics covered in this lecture:

    • Preloading and previewing geometric elements

    • Merging geometries for combined processing

    • Creating rectangular arrays with specified size and repetitions

    • Using repeat data to generate pattern sequences

    • Indexing elements to control placement in arrays

    • Customizing pattern repetition with complex sequences

    • Cooking geometry to produce finalized Rhino objects

    Practical value in computational design:

    • Develop parametric patterns based on list operations

    • Control spatial arrangement of design elements efficiently

    • Visualize geometry repetition and pattern effects dynamically

    • Implement workflows to automate design variation generation

    • Export processed geometry for further modeling in Rhino

    By completing this lesson, learners will understand how to work proficiently with lists in Grasshopper to manipulate data flows for pattern creation and spatial arrangement. They will be capable of building repeatable design arrays with customized sequences and produce finalized geometries ready for integration in their projects.

  • Working with Surfaces4:24

    This lecture dives deeper into the topic of working with surfaces in Grasshopper. Unlike curves, surfaces offer additional complexity and versatility, especially when combined with other geometric forms. We explore how surfaces can interact with other objects for advanced modeling tasks.

    The workflow focuses on subdividing a complex surface into smaller sections and repeating a geometrical object across it. This process involves using key components that break down the surface domain and apply transformations to shape 3D volumes constrained by the surface's curvature.

    Through practical examples, you will see how to parameterize surfaces using internal U and V domains and utilize components such as Divide Domain Square and Twisted Box to create bent and transformed box geometries along a nonlinear base surface.

    Key topics covered in this lecture:

    • Surface parameterization using U and V internal domains

    • Subdividing surfaces into smaller segments with Divide Domain Square

    • Generating boxes that adapt or twist along curved surfaces using the Twisted Box component

    • Creating bounding boxes to define object limits

    • Transforming objects to follow complex surface shapes

    • Combining geometry repetition with surface-based transformations

    Practical value for computational design:

    • Understanding fundamental techniques to create complex, patterned surfaces

    • Applying surface subdivision for controlled repetition of design elements

    • Learning to morph simple geometries to fit complex curved forms

    • Enhancing parametric design skills with advanced surface-object interaction

    By the end of this lesson, you will understand how to break down and manipulate surfaces to produce complex geometry patterns that adapt fluidly to nonlinear shapes. This knowledge is essential for creating innovative and visually interesting parametric models in architectural and design projects.

  • Understanding Data Trees5:18

    In this lecture, we explore an essential concept in Grasshopper called Data Trees, which enables the organization and management of complex nested data structures. Just as we can manipulate geometric elements from curves to surfaces and solids, we also need to handle data in hierarchical forms to work efficiently with parametric designs.

    We will learn how Data Trees represent nested lists inside lists, allowing you to handle grouped sets of data more intuitively. Using practical examples like subdividing curves into points, you will see how these nested lists form branches and sub-branches in data structures, facilitating advanced parametric control.

    The workflow includes internalizing lists of curves, subdividing them, and examining their data through panels and specialized Grasshopper components that visualize these nested structures.

    Key topics covered:

    • Introduction to hierarchical data structures in Grasshopper

    • Understanding nested lists and Data Trees

    • Using the Divide Curve component to generate points and subdivisions

    • Visualizing Data Trees with Panels and the Param Viewer component

    • Analyzing tree statistics to understand data paths and counts

    • Applying practical techniques to manage complex parametric data

    Practical value in computational design:

    • Enables organization of complex parametric data for responsive design models

    • Facilitates debugging and control over data flows inside Grasshopper definitions

    • Improves efficiency by structuring data for downstream components and workflows

    • Supports advanced data manipulation for creating adaptive and nested parametric designs

    By the end of this lesson, you will understand how to work with Data Trees in Grasshopper, enabling you to organize, inspect, and manage nested data effectively. This foundational skill is crucial for developing flexible and sophisticated parametric models within your computational design projects.

  • Components for Data Tree Manipulation10:14

    This lecture dives into essential components for managing data trees or hierarchical data structures within Grasshopper. Data trees organize lists inside lists, allowing complex data management for parametric design workflows. Understanding how to manipulate these structures is crucial for efficient and organized parametric definitions.

    We start by exploring components that simplify, flatten, or restructure the hierarchy of data trees. Examples include the flatten tree component, which removes nested structure to produce a single list, and the graph tree component, which separates elements into individual branches for granular control. Other components demonstrated include simplify tree, flip matrix (transpose operation), and path mapper, which provides a logical text-based method to remap list paths.

    The lecture also covers operations performed on lists such as dispatching lists based on patterns, creating linear arrays, reversing list orders, and weaving lists to create complex composite outputs. These techniques allow fine control over data flows and generative shape creation, illustrated through practical examples of line arrays and curve manipulation.

    Key topics covered include:

    • Flattening and simplifying hierarchical data trees

    • Generating individual branches with graph tree component

    • Transforming tree structures with flip matrix and path mapper

    • Pattern-based list dispatch and culling with curl pattern

    • Reversing and weaving lists to control data order

    • Creating nested parametric geometry from manipulated data trees

    • Practical use of components to control complex parametric workflows

    Practical value for computational design:

    • Manage complex hierarchical data effectively for parametric modeling

    • Optimize and restructure data inputs to streamline design definitions

    • Use list patterns and logical remapping to produce desired geometric outputs

    • Apply learned components to create advanced parametric shapes and surfaces

    By the end of this lecture, learners will understand how to manipulate and transform data trees and lists in Grasshopper to enhance their parametric design capabilities, enabling more organized, flexible, and powerful computational design workflows.

  • Basic Anatomy of Meshes11:15

    In this lecture, you will explore the fundamental anatomy of meshes within Grasshopper, a core aspect of computational design that enables the creation of highly complex geometric forms without prior parameterization. Meshes are versatile structures that allow for representing any shape, making them invaluable when working with intricate modeling tasks where traditional parameterization approaches may not suffice.

    We begin by understanding the primary components that constitute a mesh in Grasshopper. Meshes are built from individual elements, which can be either quadrilateral (four-sided) or triangular (three-sided). This flexibility in element shape allows for diverse mesh constructions tailored to different design scenarios. You will learn how to construct a custom mesh composed of both a quadrilateral and a triangular element, highlighting the mesh's structural variety.

    The lecture emphasizes the importance of defining vertices—the nodes or points that form the building blocks of mesh elements—in a specific ordered sequence. This ordering is crucial because the connectivity between these points determines the shape and correctness of the mesh elements. You will see how to create a list of points and then use indices to reference these points in mesh construction, allowing the assembly of the elements by specifying which vertices compose each face.

    Next, the workflow introduces key components in Grasshopper such as 'Mesh Quad' for quadrilateral elements and 'Mesh Triangle' for triangular ones. You will understand how these components utilize indices to define corners rather than direct point coordinates, thus streamlining the mesh creation process within a vertex list framework. This approach is essential for managing complex meshes containing numerous vertices and faces efficiently.

    After creating individual mesh components, you will learn how to merge elements into a unified mesh using Grasshopper's 'Construct Mesh' component. This component takes a comprehensive list of vertices and corresponding faces, enabling the visualization of the final mesh. You will also discover display options like 'Preview mesh faces' that allow you to visually inspect mesh faces in the Grasshopper interface, reinforcing understanding of the mesh structure.

    Beyond basic mesh creation, the lecture covers essential mesh analysis techniques, including extracting edges and differentiating between external and internal edges. Understanding these edges is critical for identifying mesh boundaries and internal partitions, which can affect downstream modeling or simulation processes. You will explore components such as 'Mesh Edges' that expose this structural information, allowing for advanced mesh interrogation.

    The concept of face boundaries is introduced, providing insight into iterating over each face's perimeter within a mesh. This process extracts polylines representing the edges of internal faces, facilitating detailed geometric manipulations or custom operations on mesh faces.

    Normals – vectors perpendicular to mesh faces or vertices – form another critical topic. You learn how to extract face normals and vertex normals, which provide information on mesh orientation and smoothness. These are invaluable for operations such as shading, physical simulations, and mesh deformation. Using components like 'Face Normals' and 'Deconstruct Mesh,' you examine how normals differ between faces and vertices, achieving a better grasp of mesh geometry.

    Finally, the lecture explores incorporating color into meshes via the 'Color Swatch' component and merging multiple colors. This introduces a more visual aspect of mesh representation, enabling you to assign distinct colors to mesh elements or edges to enhance clarity and aesthetics in design models. The integration of RGB color components into meshes completes this practical tutorial, equipping you with the ability to customize mesh appearance.

    Key topics covered in this lecture:

    • Fundamental components and anatomy of meshes in Grasshopper

    • Defining vertices and ordering nodes for mesh construction

    • Creating quadrilateral and triangular mesh elements using indices

    • Merging mesh elements into a unified mesh with the Construct Mesh component

    • Visualizing mesh faces and edges, including differentiating internal and external edges

    • Understanding and extracting face boundaries as polylines

    • Computing and interpreting face normals and vertex normals

    • Using Color Swatch to assign and merge RGB colors for mesh visualization

    Practical value of this lecture in computational design workflows:

    • Empowers learners to create flexible and complex mesh geometries adaptable to varied design needs

    • Provides foundational skills for managing vertex and face data efficiently in parametric models

    • Enables accurate construction and merging of mesh elements, critical for 3D modeling tasks

    • Introduces techniques for analyzing mesh structure and boundaries, improving model integrity

    • Facilitates mesh visualization improvements through face previews and color assignments

    • Enhances understanding of mesh orientation via normals, supporting physical simulations and shading

    • Prepares learners to integrate mesh data into broader Grasshopper and Rhino workflows

    By completing this lesson, you will gain a thorough understanding of how to construct, manipulate, and analyze meshes in Grasshopper. This knowledge lays the groundwork for creating complex geometric models and integrating meshes effectively into parametric design projects, ultimately enhancing your ability to leverage visual programming for advanced computational design tasks.

  • Working with Meshes5:38

    In this detailed lecture on "Working with Meshes," you will embark on a comprehensive exploration of generating complex mesh geometry using parametric techniques within Grasshopper. This session builds upon previous lessons, combining foundational concepts and specific strategies to create sophisticated mesh structures shaped through parametric control.

    The workflow begins with the creation of a basic shape: an axis defined by a single point and a line that acts as its spine. This axis is subdivided into multiple points, serving as the parametric anchors for subsequent geometry placement. The subdivision allows granular control over how the mesh will form along the length of the axis, providing a flexible framework for shape manipulation.

    Using these subdivision points, circular cross-sections are generated at each parameter, with the radius of each circle driven by a graphmapper component. This grants dynamic control over the vase’s profile by scaling the radius parametrically according to a curve that models the desired contour, enabling the creation of smooth, organic shapes.

    The next critical step involves applying a twist or torsion to the geometry. This is achieved by adjusting the seam parameter, which rotates the circular sections progressively along the axis to produce an elegant, spiraling effect. This adds a distinctive design character and emphasizes the parametric flexibility Grasshopper offers to modify forms dynamically.

    To further enhance the complexity of the mesh, relief elements are introduced by iterating between inner and outer curves and modifying their depth. This careful manipulation generates protrusions and indentations, adding visual and structural texture to the final mesh surface. Parameters controlling relief depth provide a way to refine these features for both aesthetic and functional purposes.

    Once the defining curves and shapes are established, the mesh generation proceeds by connecting the subdivided points from the relief-modified curves. This involves computing appropriate quadrilateral and triangular faces that compose the mesh, ensuring a well-formed, manifold geometry. The lower part of the mesh notably incorporates triangular elements that taper to a single point at the base, while the sides use quadrilateral sections — a choice that balances computational simplicity and surface detail.

    The method also includes an offset operation to give the mesh thickness, creating a realistic closed form with top and bottom lids. The top lid connects offsets of the upper curves, while the bottom is sealed with finely triangulated elements, completing the mesh structure. Finally, the individual faces are unified into a single mesh entity that maintains parametric adjustability and structural integrity.

    Key topics covered in this lecture:

    • Parametric axis creation and subdivision for mesh control

    • Utilizing graphmapper for dynamic radius and shape definition

    • Application of torsion through seam adjustments to twist geometry

    • Creating relief details by alternating inner and outer curve manipulation

    • Construction of quadrilateral and triangular mesh faces

    • Offsetting curves to generate mesh thickness and closed surfaces

    • Combining multiple mesh elements into a single cohesive object

    • Techniques for maintaining parametric flexibility and mesh integrity

    Practical value in computational design and BIM workflows:

    • Develop complex, organic mesh forms with precise parametric control

    • Integrate parametric mesh generation into architectural and product design processes

    • Utilize mesh morphing with torsion and relief to enhance design aesthetics

    • Create structurally sound, manifold mesh geometry suitable for further BIM integration

    • Generate 3D printable mesh objects with controlled thickness and surface details

    • Increase efficiency by automating mesh creation through custom parametric scripts

    • Understand how to balance form complexity with computational simplicity

    By the end of this lesson, learners will understand how to construct complex mesh geometries from basic parametric principles, apply dynamic shape adjustments such as twisting and relief, and generate coherent mesh topology ready for advanced applications in design and BIM environments. This knowledge enables the creation of intricate, customizable forms essential for modern computational design tasks.

Requirements

  • Basic familiarity with architectural modeling or BIM concepts is helpful but not required.
  • Access to Rhino 7, Grasshopper, and Revit software with Rhino.Inside.Revit installed.
  • Interest in computational design, parametric modeling, and BIM integration workflows.

Description

This course offers a comprehensive introduction to computational design using one of the most powerful visual programming tools available: Grasshopper for Rhino. Designed for designers, architects, and BIM professionals, the course guides students through mastering the fundamentals of parametric modeling and visual scripting within the Rhino environment.

Students will learn to harness the power of Grasshopper for creating dynamic, data-driven models that enhance design exploration and efficiency. The course emphasizes practical workflows, starting from understanding Grasshopper's interface and components, to advanced data structures that underpin complex parametric definitions.

Building on this, learners will discover how to integrate Rhino and Grasshopper into Revit, a leading BIM platform, using the Rhino.Inside.Revit plugin. This powerful integration expands the capabilities of BIM models by allowing parametric and generative design processes directly in the Revit environment, transforming traditional workflows.

Further, the course delves into advanced computational design applications, including the use of physics simulation and optimization via the Kangaroo engine. These tools enable learners to simulate realistic behaviors and generate optimized architectural forms, boosting both creativity and structural performance.

Throughout the program, practical examples include preparing geometries for 3D printing, performing structural optimizations, and conducting environmental impact analyses, thereby equipping students with versatile skills applicable to modern design challenges.

The course structure is designed to build knowledge progressively, mixing conceptual explanations with hands-on tutorials, ensuring learners develop both understanding and practical proficiency for professional growth.

Learning Objectives
By the end of this course, students will be able to:

  • Understand and navigate the Grasshopper visual programming interface

  • Create parametric definitions using components, data types, and lists

  • Manipulate complex data structures such as data trees in Grasshopper

  • Integrate Rhino and Grasshopper seamlessly within Revit for BIM workflows

  • Utilize element parameters, grids, levels, and walls with computational control in Revit

  • Apply Kangaroo physics simulation to optimize design geometry

  • Prepare models for 3D printing and physical simulation-based analysis

  • Explore generative and computational design applications for architecture and construction

  • Increase efficiency and quality by automating repetitive design tasks

Who Should Take This Course

  • Architects and architecture students interested in parametric and computational design

  • Designers aiming to enhance workflows with visual programming

  • BIM professionals and modelers looking to leverage advanced integration of Rhino and Revit

  • Engineers and professionals involved in structural and environmental analysis

  • Programmers focusing on design automation and computational techniques

  • Researchers and practitioners of AI trends applied in BIM modeling

  • Anyone interested in mastering state-of-the-art tools for architectural design innovation

Course Structure

Section 1: Introduction to Grasshopper
Learn core Grasshopper fundamentals, including the user interface, object types, data handling, and methods for creating parametric definitions. This section builds a solid foundation for visual programming in Rhino.

Section 2: Grasshopper in Revit
Explore the integration of Rhino and Grasshopper with the BIM platform Revit, focusing on leveraging Rhino.Inside.Revit to manipulate parameters, instances, grids, levels, and walls seamlessly within a parametric BIM workflow.

Section 3: Grasshopper Applications in Computational Design
Dive into advanced computational design techniques by employing the Kangaroo physics engine for simulation and optimization. This section highlights how to generate structurally optimized shapes and apply live physics simulations in Revit projects.

Why Take This Course

In today’s competitive architectural and construction industries, the ability to design efficiently while maintaining high quality is paramount. This course empowers professionals to adopt visual programming and computational design tools that optimize time, reduce errors, and expand creative possibilities.

The integration of parametric design workflows with BIM accelerates project delivery and enables smarter, data-informed decisions throughout the design process. By mastering these skills, learners gain a competitive edge in delivering innovative and optimized building projects aligned with modern industry demands.

Moreover, the course’s focus on practical applications, such as 3D printing preparation and physical simulations, equips students with relevant experience to address real-world challenges from structural optimization to environmental impact analysis.

Professional Context

Visual programming with Rhino, Grasshopper, and Revit represents a cutting-edge approach within the architecture, engineering, and construction fields. Integrating these tools fosters new opportunities to design parametrically and computationally, shaping the future of BIM-based workflows. Professionals who master these technologies are positioned to lead innovation, improve project outcomes, and adapt to the evolving landscape of computational design and intelligent BIM modeling.

Who this course is for:

  • Architects and architecture students eager to learn parametric and computational design.
  • Designers looking to improve workflows using visual programming tools like Grasshopper.
  • BIM professionals and modelers seeking advanced integration between Rhino and Revit.
  • Engineers and analysts involved in structural optimization and environmental simulations.
  • Programmers interested in design automation within architectural and construction fields.
  • Researchers exploring AI trends applied to BIM and generative design workflows.
  • 3D printing enthusiasts wanting to prepare models through parametric design techniques.
  • Anyone aiming to adopt state-of-the-art computational tools for innovative building design.