CS 5620: Computer Graphics

OpenGL Animator

In this assignment you will extend your OpenGL Renderer to animate objects with different interpolators.

If you would like to see an example of this assignment, try this:

assignment5-osx.zip
assignment5-linux32.tar.gz

You will need to start from the assignment 4 solution that will be posted here. A lot of new content has been added to support loading .wrl files and handling animation.

git clone https://github.com/cornell-cs5620/assignment4.git

Requirements

All of the requirements for this assignment are listed in the comments of the skeleton and labelled "TODO Assignment 5". Make sure you cover them all. The following is a summary of those TODO's.

  • Implement linear and catmull-rom (this is a specific type of hermite) interpolation for vectors and linear, spherical linear, and spherical quadratic interpolation for quaternions
  • Figure out the current time of the animation in object.cpp and split that into a step and fractional part.
  • Fill in the get_orientation and get_position functions in rigidhdl to use the different interpolators

Submission

The submission deadline is December 9th 2015 at 10:00am. Submission involves a face-to-face session with Ned. We will schedule timeslots for the sessions, which will last up to 20 minutes, during which you will present your work and answer questions. Your grade, which is 20% of your final course grade, will reflect your effort in solving the problems posed by the assignment in terms of software engineering, performance, and completeness.

Grading

You will be graded on your implementation of three basic algorithms and features. The grade for each is split into three: Correctness, Performance, and Readability. A good score in Correctness means that you implemented the correct algorithm, all of the corner cases for the algorithm are covered and the algorithm has no errors. A good score in Performance means that you took the time to optimize your code, it runs decently fast on an i7, and there is no glaring issue (like a recursion depth of hundreds of thousands). A good score in Readability means that your code is well architected, is easy for me to read and is well documented. The grading rubric will be posted upon assignment.

CorrectnessReadabilityTotal
Position Interpolation24%6%30%
Orientation Interpolation30%10%40%
Keyframe Selection24%6%30%
Total78%22%100%

Final Notes

  • DO NOT use any external code or borrow code from friends, family or colleagues without permission. If in doubt, please contact Ned. If you do use external code - please cite the source clearly. Plagiarism of any kind will not be tolerated!
  • You are welcome and encouraged to experiment with your program and add features. Previous experience shows this assignment can be addicting! Impressive extra features can earn you a bonus in your grade.
  • You have ample time to complete this exercise, but do not wait until the last moment. You are strongly encouraged to start working on it immediately.
  • We are aware that this assignment can be intimidating, and possibly one of the largest assignments you will encounter during your studies. You are welcome to come ask us if anything is not clear. We will periodically publish hints and advice on the Web site and by email.