200c

  • Instructor: Pablo Colapinto
  • Teaching Assistant: Keehong Youn

Note

Please email Kee ahead of any meetings to give him time to research your problem. There will be no class the day before Thanksgiving, November 23rd. This class will instead be made up on December 7th.

Course Description

This class introduces the algorithmic design of movement by developing programs with the programmable graphics pipeline of OpenGL in all its flavors (WebGL, OpenGL ES, and OpenGL). We will use linear and geometric algebras as core synthesis tools, combining artistic intuition with spatial mathematics to generate real-time graphics on a computer. Our algorithmic techniques will explore trigonometric and step functions, matrices and quaternions, forward and inverse kinematics, 3D mesh processing, fluid fields, color, and higher dimensions, among other topics. Both independent and collaborative practice will lead to constructive thinking, as we learn how to build systems for synthesizing space “de novo”.

We will remain programming-language agnostic – we will use both C++ and javascript in our examples, but we will focus on the graphics programming logic and mathematical details that can applied in any language.

Goal: Constructive Thinking

  1. Build your natural abilities to see in your mind, and to program what you see.

  2. Construct deep geometric understanding of worldbuilding techniques.

  3. Develop your natural abilities to teach what you see.

Each week of 200c consists of a lecture with accompanying online tutorial. This will be followed by a task that we will start together in class.

1-WebGL and Shaders
2-Matrices and Quaternions
3-Kinematics
4-Curves and Surfaces
5-Fluids and Particle Systems
6-Color
7-Higher Dimensions

Some possible Topics For Your Final Projects:

  • abstract artwork
  • voronoi and delaunay triangulation
  • binary space partitions and octrees
  • inverse kinematics and rigging
  • line integral convolution
  • other algebras (dual quaternions, motors, plucker coordinates)
  • geometry processing (mesh manipulation techniques)
  • fluid simulations
  • volumetric rendering
  • tessellation shaders
  • geometry shaders
  • lighting techniques
  • flocking
  • L-system

So what is this class really about?

geometry -> motion -> space -> graphics -> seeing -> you.

By the way, Jekyll is the static blogging tool used to make this website – see the README at https://github.com/wolftype/200c for a quick primer on how to build one of your own!

Here is the jekyll source code And some info about the jekyll-new theme