CS 488: Lecture 13 – Texture Mapping
Dear students: The temptation in computer graphics is to add more realism. We want the light to behave like real light, water to move like real water, and bodies to bend like real bodies. To make 3D shapes look more real, we might consider adding more triangles to give more geometric detail. More triangles mean […]
CS 488: Lecture 12 – Untransforming the Mouse
Dear students: Interactive graphics is funny because we work so hard to give the illusion of a full 3D world, but then we run this 2D cursor over it. As a human, you’ve probably experienced how hard it can be to figure out what someone is pointing at. Figuring out what the mouse is pointing […]
CS 488: Lecture 11 – Blinn-Phong Illumination
Dear students: When we first implemented basic diffuse lighting, we considered just three pieces of information: the surface normal, a vector pointing toward the light source, and the surface’s base color or albedo. Today we’re going to complicate our lighting to bring in a lot more information. Lighting in Eye Space Last time we added […]
CS 430: Lecture 6 – Expressions and Control Structures
Dear students, The programs we write do many things: they facilitate communication, they walk a user through an interaction, they automate drudgery, they control physical artifacts, they store and retrieve data, and so on. Whatever a program’s final goal, many of its intermediate steps are concerned with producing and consuming information. This information is combined […]
CS 488: Lecture 10 – Camera
Dear students: All the renderers we’ve written so far have put a single object at the origin. The only thing we’ve done is spin that object around. It’s time to build up a larger world that the user can move around in. What new features of our graphics API do we need to construct an […]
CS 430: Lecture 5 – Haskell
Dear students, This class has hit upon several themes so far this semester. In week 1, we discussed the spectrum programming language features. In week 2, we discussed the ideas behind a language’s syntax and how source code is lexed and parsed. In week 3, we talked of how we name data with variables. In […]
CS 488: Lecture 9 – Trackball
Dear students: Computer graphics is not just about rendering. The user must be able to interact with the scene in ways that feel natural. Today we investigate a way of letting the user spin around an object of focus using the mouse. Rotation Around Axis We’ve worked out how to rotate an object around the […]
CS 488: Lecture 8 – Normal Generation
Dear students: Shading is dependent on normals. So far, we’ve limited ourselves to shapes whose normals can be computed with a little trigonometry. What do we do when our models start getting less algorithmic? We need a different strategy for computing normals of arbitrary triangle meshes. That strategy is our focus today. Cross Product The […]
CS 430: Lecture 4 – Types
Dear students, You know how in English nouns and verbs are independent? You can pick any noun and mix it with any nearly any verb to for a grammatical sentence. Butter dances. Fish sneeze. We have a similar situation in programming languages. The grammars of our languages allow us to mix data and operations in […]
CS 488: Lecture 7 – Geometric Modeling
Dear students: Our goal today is to generate a few models using code. The algorithmic description of shapes is sometimes called geometric modeling. Not all models can be easily generated via algorithms, and we are likely to build most of our models in a 3D modeling program rather than in code. However, programmatically generating shapes […]