This course will introduce participants to computational methods for the generation of discrete multi-dimensional media, using functional definitions.
Digital modeling techniques are at the core of most modern creative workflows in visual media, such as static 2D images, video animations, 3D models and digital fabrication. For instance, most prevailing paradigms in CAD modeling are based on the explicit definition of geometrical entities in model space (location and size of 2D shapes, vertices of a mesh, control points of NURBS objects) and their manipulation through constructive modeling operators (extrude, revolve, sweep or boolean operations, to name a few). However useful, such paradigms are often very limited for advanced creation/manipulation of digital models, such as those with high degrees of formal complexity (failed boolean intersections, complex infill patterns in 3D prints) or simply incapable of representing certain kinds of realities (models with non-binary gradients between inside and outside).
In parallel, the field of computer graphics has developed a plethora of techniques designed to generate, visualize and process images displayed on a 2D screen. Many of these methods involve the implicit definition of the rules governing visualization pipelines, expressed as functional representations of the characteristic values in a field of discrete entities. Traditionally, this has translated into the problem of computing the RGB values of each pixel in a digital screen. However, modern applications of these techniques have been extended in multiple dimensions to, for example, generate procedural animated graphics, analyze and process video, perform computational fluid dynamics, voxel-based world generation for video games, or multi-material 3D printing.
In this course, you will learn techniques for the procedural generation of discrete multidimensional spaces, such as 2D images, video, voxelized fields or any extension thereof. We will cover topics such as color theory, image processing, functional modeling, shaders and raytracing techniques. The content of the class will be predominantly technical, and taught through a combination of high-level lectures and hands-on technical workshops. Students are expected to complement the class learning with online materials guided by the instructor. Demonstrated experience in computer programming, such as SCI-6338, CS50 or similar, is a pre-requisite for this class. Student work will consist of guided tutorials and course assignments, culminating with a personal final project of the student's choice.
This course is the second installment of a three-part course series on Computational Design preceded by SCI-6338: Introduction to Computational Design (Fall), and continued by SCI-6365: Enactive Design, Creative Applications Through Concurrent Human-Machine Interaction (Fall) taught by the same instructor.