This course explores the role of computation in the conception and representation of form and shape. Learn Python programming language as a creative medium for design, architecture, art and beyond. Learners will develop, analyze and critique algorithmic approaches to digital drawing, modeling, and projection. Specifically, the powerful and robust Python Rhinoscript library will be introduced and explored in detail. This library allows Rhinoceros, the popular 3D graphics and computer-aided design (CAD) modeling software to be scripted with text-based code. Scripting in this manner can automate existing processes and can lead to novel kinds of relationships, and orders of shape and form.
Architects, sculptors, and any artist or designer interested in either fabrication or communication of form and shape will recognize the importance of projection–the the transformation of three-dimensional geometry onto a two-dimensional picture plane, cut sheet, paper, or screen. As a result, this course focuses not only on the generation of geometry, but the output of geometry.
In parallel to extending learners' technical proficiency, this course will touch on the conceptual and theoretical implications of algorithmic design. Each of the five lessons will build upon each other to develop an understanding of the Python language, algorithmic strategies, and digital geometric craft (the interrelated structures and topologies that make up digital models).
Session 1: Procedural Points
Why design algorithmically? Students will understand the basics of Python syntax and organization of the Rhinoscript library. Students will be comfortable creating, running, and editing a basic script. Students will demonstrate a capacity to create, work with, and distinguish between point coordinates and point objects. Demonstrations: procedural point spiral, gradient point cloud.
Session 2: Curves Vs. Curvature
What is the nature of a curve? Students will demonstrate multiple methods for creating and editing curves–which is the topological term for one-dimensional objects including straight line segments. The class will explore the concept of the “blip” and the capacity of a set of curves to collectively define space. Demonstrations: Interpolated curves of various degrees before and after sorting; best fit circles; curve parameters, evaluating curves, and extraction of curve points for the purse of editing curves with looping. Assignment: Double-blip connection of curves: blip within each curve and blip in the aggregation of curves.
Session 3: The Depth Of A Surface
What is the nature of a surface? Students will demonstrate methods for creating and editing surfaces beginning with the Rhinoscript functions that correspond with the most commonly used surface tools in Rhinoceros: loft, sweep1 and networksurface. Demonstrations: lofting and list-management, rebuilding surfaces in sequence. Assignment: conditional surface–divide a surface into patches and cull based on some geometric criteria.
Session 4: Deconstruction Of Surfaces, The Genesis Of Lines
How can a surface generate lines? How can lines represent a surface? This week's lecture begins with an important premise: a surface is a 2-D space organized in terms of 'U' and 'V' axes that can be treated similarly to 'X' and 'Y' axes in Cartesian space. This allows drawing “in” a surface, trimming a surface based on U/V domains and the evaluation of surfaces based on 2-D parameters. Demonstration: Growing lines based on surface normals; surface to surface lines. Assignment: Hatch a terrain-like surface so that its geometry is revealed completely when viewed orthographically.
Session 5: The Project Of Projection
How can projection serve as a creative act? Students will explore methods for geometrically constructing perspective computationally and use projective methods for the creation of new forms and shapes. Demonstration: constructing and arraying set of perspectives using surface-plane intersection. Assignment: Represent the process of oblique projection-as would be used to create an oblique axnometric drawing–using a set of curves.