Assignment 4: Animation

Animation is the last of three components of Scotty3D. The primary repository is located at The wiki on that page will be the primary source of information about this assignment, this document only contains administrative details about grading and submission.

Due date: December 5th, 10:00pm


The assignment consists of a total of 100 pts. The point breakdown is as follows:

  • Task 1: Spline Interpolation: 15
  • Task 2: Forward and Inverse Kinematics: 25
  • Task 3: Linear Blend Skinning: 25
  • Task 4: Physical Simulation: 15
  • Task 5: Make a movie: 10
  • Writeup: 5
  • Documentation: 5

Make a movie

In addition to implementing the Animation functionality in Scotty3D, you will use your software to render a short animated movie of your own creation. We expect that you make a meaningful use of Scotty3D's functionality while creating this movie; it does not need to be long, but try to make something fun! As a starting rule, a movie which uses only a few keyframes and doesn't try to convey meaningful motion is unlikely to earn many points. See the wiki for some technical notes on creating this movie. Include this movie at the top level of your submission directory as a .mp4 file.


Clear, well-written documentation is a critical part of software development. Since you (the students) are the ones who will most benefit from good documentation---or will suffer through bad documentation---we are "crowd sourcing" improvements to the course material. What did you find confusing---and then finally figure out?

As 5% of your assignment grade, you will need to submit suggested edits to the assignment documentation. These could be:

  • Suggested changes or additions to the assignment writeup
  • Suggested changes or additions to assignment Wiki (for A2, A3, and A4)
  • Suggested changes or additions to comments in the skeleton code

Do not wait until the due date to submit these suggested edits. They will be most helpful to your classmates (and to us!) if they are submitted ahead of time, so that we can immediately incorporate any good suggestions into the actual course material. To submit your edits, you must therefore:

  • Go on Piazza
  • Find the thread with the appropriate label: a1wiki, a2wiki, a3wiki or a4wiki
  • Make an anonymous (not private) post with your suggested edit

The TAs will monitor this label, and immediately update the docs with any/all useful suggestions. This Piazza post will also be recorded as part of your assignment grade. Note that we do not have to accept your edit in order for you to receive full credit on the assignment. However, we will grade your edits based on whether they appear to be a "good faith effort" to make a useful comment. In other words, did you really think about what is clear/unclear and provide a useful edit? Or did you just write something totally random at the very last minute? :-) Especially useful edits (e.g., those that provide nice insights, or point out serious bugs/errors) may receive extra credit.


Additionally, you will submit a short document explaining which tasks you successfully implemented, and any particular details of your submission. If your submission includes any implementations which are not entirely functional, please detail what works and what doesn't, along with where you got stuck. This document does not need to be long; correctly implemented tasks may simply be listed, and incomplete tasks should be described in a few sentences at most.

If you wish, you may also include movies and images to explain any bugs or show off extra credit work. If so, please add these files to your submission archive, and mention them in the writeup.

The writeup must be a pdf, markdown, or plaintext file. Include it in the root directory of your submission as writeup.pdf,, or writeup.txt.

Failure to submit this writeup will incur a 10 pt penalty on the assignment.

Code Environment

This codebase should compile on Linux, macOS, and Windows on a typical environment. The build instructions given on the project page will walk you through installing dependencies and building the code. If you have difficulties running the code on your local machine, the GHC 5xxx cluster machines have all the packages required to build the project.

Handin Instructions

As with the previous assignments, we will be submitting on Autolab. You should create a tar archive of your entire src subdirectory along with the writeup (e.g. writeup.txt).

$ pwd
> (...)/Scotty3D
$ tar cvzf handin.tgz src/ writeup.txt
> a src
> a src/application.cpp
> a my_movie.mp4
> a writeup.txt

Upload this file to autolab, and be sure not to forget your writeup and movie!