Skip to main content
Course web for the Spring 2019 Computer Graphics Class

Month: April 2019

Another Example

I added an example of Mesh Morphing (as described in class today) to the examples.

It’s a simple example (a sphere morphing into a flat surface), that is a little wierd because the sphere wraps around while the plane does not. But it should give you an idea of how THREE’s morphing works (which isn’t well documented).

Expectations for Graphics Town (Assignments 11 and 12)

The graphics town assignment was designed to take 2 weeks. However, you don’t have 2 weeks. You have a week and a half (maybe a little less since we shouldn’t count the extension time spilling into finals week). And we know it’s a week and a half at the end of the semester when everything else is busy as well.

We know to adjust our expectations accordingly. However, this may not allow you to plan. So here are some adjustments/clarifications to the assignment:

  1. For each assignment, if you score at least 4 points, we will give you 1 extra. (Your grade is the number of points, up to 7, divided in half). For example, this means that you can do one technical challenge for Assignment 12 and still get a full score. The free points can count towards one of the “requirements” for Assignment 11. These free points cannot be bonus points.
  2. All of the required program features are implemented in the example. You may want to adjust the riding point of some of your new objects, but other than that, things should work. That section is really only there for students who want to write their own framework (not recommended!).
  3. The 5 moving objects requirement is modest – the example framework has 4 (and it is 2 behaviors). You can count some of these (if you replace the objects – a cube going around a circle does not count).
  4. Technically, the example has 2 behaviors (track and helicopter) and actually implements requirement 11.4 (calling the race car a train). You can count these for #11.2 if you provide attribution and change them (e.g., not have the same car as me). You cannot count a cube moving in a circle.
  5. Having 8 different kinds of objects should be easy as you can re-use objects from the examples and your previous assignments. But we will be lenient here. We do ask that you make 3 new objects for the assignment (one in each category). Not all of your objects need to be complicated.
  6. Loading a model that you find on the web can count as an object. Be sure to give proper attribution.
  7. Some of the technical challenges come straight from previous assignments (two pass rendering, arc-length parameterization, …). It is OK to use prior things (with attribution). You can’t count my example dynamic environment map as a technical challenge, but you can refer to it to see how it is done so you can make your own.
  8. We had intended to give you a few more example objects (the assignment refers to stop signs). We still may – but don’t wait for them.

The assignment is set up such that getting a full grade (AB) should not be an unreasonable amount of work. We hope that students go beyond the minimums and make cool stuff, but we also understand that this time of year many people are busy.

For some students, you are likely to want to drop (at least) one of these grades (if you have done well on all the prior assignments). So:

  1. You still earn bonus points on assignments that are dropped. (we only drop the grade)
  2. If it helps you, we will move 1/2 letter grade from one assignment to the other. So, if you get two Bs, we can make it an AB and a BC so you can drop the BC (if that leads to a higher grade for you).


More Graphics Town Examples

I have created another public repository for graphics town to give you more examples of objects.

Right now, there is only one new object: a shiny sphere that has a dynamic reflection map.

You can see the repository at:

and even try out the updated graphics town at:

(you are allowed to use the examples in your Assignments – if you give proper attribution)

The Week in 559 (April 29 – the last week)

We’ve made it to the last week of classes. Although it may feel long (especially with the late April snow), this semester was actually shorter than in previous years (14 rather than 15 weeks, and only 27 lectures because of the polar vortex class cancellation).

Please do your course evaluations.

The big things this week:

  • Assignments 11 and 12 are both due on Sunday, May 5th. You turn them in together.
  • The final exam (actually next week, but you might want to start thinking about it). See the topics description and topics list.
  • The last lectures (Tuesday, on Animation and Curves & Surfaces, Thursday on High-Quality Rendering) – these topics will be covered on the final exam.
  • I will have my normal office hours on Tuesday, but not Wednesday. We will probably add extra office hours later in the week. Watch the course web page for details.
  • Course Evaluations (please do them online at

Final Exam (with Topic List)

The final exam is 10:05am-12:05pm on Tuesday, May 7th in rooms 5206 and 5208 Social Sciences. Students eligable for McBurney accomodations have been contacted by email.

The exam will be multiple choice and given on auto-scanned forms (just like the midterm). Please bring a pencil and an eraser. The exam is closed book and closed notes. You may not bring a “cheat sheet” or use an internet connected device during the exam. (that means you can’t use your phone). The exam is designed so that you do not need a calculator.

Exam Content

The exam is cummulative: all topics in class may be tested. There will be a focus on the topics that were covered after March 7th, but since these topics build on the topics covered earlier, there is not really a separation.

The exam may include content from:

  1. Lectures
  2. Content on the course web and workbooks
  3. Required readings (including book chapters and the tutorials from older editions of the class (e.g., Color, images vs. objects, pxiels, points and vectors, SVG tutorial)).

In general, the important things from readings and the web were also covered in lecture.

We do not expect you to memorize details. Of course, this is subjective – but our goal is to test that you know the concepts, not memorize the things you can look up. But some examples of things we will not ask you to remember:

  • equations for cubic forms – for example, you should know what a Hermite or Cardinal Spline is, and the geometric intuitions, but you if you need them, we’ll give you the equations for the parametric functions or basis functions
  • the parameter list of JavaScript, Canvas, GLSL or THREE functions. For example, we don’t expect you to remember the order of the parameters, so if we show you the code new THREE.PerspectiveCamera(50, 1, 0.1, 1000 ); and remind you that the first parameter is the field of view, you should know what field of view does. For GLSL you will need to know what the different kinds of variables are (const, uniform, attribute, varying) and be able to read shader programs.
  • details we didn’t actually give to you. For example, we expect that you should know that there are ways to interpolate unit quaternions, but not necessarily the details of how they work.

Topics List

The Lectures List page (with links to slides and videos) is a good resource.

There is a topics list from the first 7 weeks on the midterm exam description page.

The material discussed in lecture during the last week (animation, curved surfaces, light-based rendering) is fair game. Those lectures occur after this list is being written, so they are not included here.

The Key Topics after week 7 (note: this list may not be everything):

  • Transformations in 3D, Hierarchical Modeling
  • Rotations in 3D (Euler Angles, Axis Angle, Quaternions, rotation matrices)
  • Camera / Viewing Transformations (we talked about the perspective transformation briefly), Lookfrom/Lookat
  • Meshes (in the general graphics sense, which is more than the THREE data structure sense), including things like T-Junctions, vertex sharing, and vertex splitting
  • Mesh Representations for Graphics (strips, fans, index sets) – but not Winged-Edge representations.
  • Kinematic chains (e.g. composition of transformations), inverse kinematics (the concept, not the methods)
  • Surface properties and normals
  • How we use triangles (fake normals, baricentric interpolation, …)
  • Texture mapping concepts (motivation, need for texture coordinates, uv mapping, …)
  • Uses of texture maps (normal maps, bump maps, light maps, environment maps, shadow maps, displacement maps, …)
  • Texture filtering (basic concepts and need, summed-area, mip-maps, interpolation)
  • Lighting (local models, light types, basic graphics lighting model, diffuse & specular lighting, …)
  • Kinds of maps for environment mapping
  • Multi-pass rendering for dynamic environment maps and shadow maps
  • The graphics pipeline (organization of graphics hardware). You should know what all the steps do (e.g., what rasterization is)
  • The shader programming model (e.g., how the pipeline restricts what shaders do). You will need to know how information is passed between shaders (including what GLSL calls the variable types)
  • Z-Buffering (basic operation, vs. the painters algorithm, artifacts, …)
  • Aliasing (the aspects we discussed in class about how it occurs in the 3D graphics pipeline)
  • Shader programming (be sure to know the variable types), attribute buffers
  • Approaches to more efficient rendering (early Z, deferred shading, Culling)
  • Animation Concepts (keyframing, skinning, warping & morphing)
  • Curves and Surfaces in 3D (from 4/30 lecture)
  • Light-Based Rendering concepts (from 5/2 lecture)

Office Hours Cancelled 5/1 and beyond

My last regularly scheduled office hour will be on Tuesday, April 30. 2:45-3:45 (usual time).

I have to cancel Wednesday (5/1), Tuesday the 7th is the exam, and Wednesday the 8th.

I will try to arrange for some other times for office hours next week.

Final Exam Details

The final exam is 10:05am-12:05pm on Tuesday, May 7th.

The exam is in rooms 5206 and 5208 Social Sciences. These rooms are next to each other. When you come, we will try to divide people equally between the rooms.

Details about the content of the exam will be coming soon. Roughly, expect it to have a similar form as the midterm. While the exam is cummulative, the focus will be on the material discussed in the latter part of class. However, since the later topics build on the earlier topics, they really don’t separate.

I will contact McBurney students directly.