Skip to main content
  1. Teaching/
  2. Su2023 CS 324E/

Project 3: 3D Animation
#

Project Description
#

This project extends the ideas of the previous assignment to explore 3D animation. To do this, you will create a 3D animation within Processing that will loop indefinitely. This animation is expected to be complex enough to require multiple objects (and therefore multiple classes) and have several levels of scene or object transformations in order to create a range of interesting, cohesive movements.

Basic Requirements
#

You will write the following:

  1. A 3D scene that is drawn via Processing.
  2. Multiple objects that are continuously animated in this scene. These animations do not need to loop seamlessly. For example, an animated object might jump from the last position back to the first position, but this is acceptable as long as the animation continues.
  3. A project report to detail overall design and animation goals.

Your animation must have at least two classes for animating objects in the scene, and at least two levels of hierarchical grouping to form at least two levels of distinct animation using any of the following transformations: translate, rotate, scale.

You must also have at least two instances (objects) of class you create that differ in some way. For example, they may have different colors, or be transformed in different ways.

Finally, your animation must have some sort of narrative. This does not mean you need a story in the classical sense–for example, if you are animating a protein docking sequence, the docking is the narrative. However, your animation does need to attempt to convey something, rather than being a bunch of pretty shapes doing a pretty dance on the screen.

Extra Credit
#

All assignments have possible extensions that you might consider adding to your scene for extra credit. Note that if the submission is well beyond the scope of the assignment, we will consider giving extra credit even if the features implemented are not ones suggested below. All requirements of the assignment must be met before credit for this will be given.

OBJ Import (2pts)
#

Instead of constructing your scene using geometry primitives, import OBJ files. Note that you will still need to place these results within a class, and you will still need to perform transformations on them.

Camera Controls (up to 8 pts)
#

Implement one of two types of controls:

  • Orbital: In an orbital camera system, there is some point in the world which the camera is focused on, and camera controls simply move the camera around this point. Left-clicking and dragging left and right should cause the camera to move left and right, like you’re walking around a statue at a fixed distance. Left-clicking and dragging up and down should move the camera around up and down (again, always pointed at the same central point). Right-clicking and dragging up and down should cause the camera to zoom.

  • FPS: In an FPS camera, clicking and dragging left and right should cause the camera to move left and right, like you’re turning your head. Dragging up and down should make the camera look up and down like you’re nodding.

    Note that inaccuracy in floating point values may cause your camera to precess—to test if this happens in your system, click and rapidly move your mouse in circles. If your camera winds up slightly tilted compared to where it started, you are precessing. Ideally you should find a way to prevent this, though it is not required to receive some credit.

Whatever you implement, document it in your report.

Report
#

Your report should include the following information. You do not need to make the report long, as long as all the information below is included:

  • The narrative of your animation.
  • What the included classes do
  • How you met the two-transformation requirement
  • Your two classes and what members they have
  • How you met the two-instance requirement (e.g. how you have at least two objects that differ in some way)
  • Any unexpected challenges you faced along the way
  • Any extra credit you completed

Submission
#

Your submission should include the following:

  1. A Processing file named youreid_project3.pde that runs the animation.
  2. All the necessary classes and subclasses for the Processing file to run.
  3. A README text file that tells us the exact steps necessary to run your code and whether you’re using any slip days on the project.
  4. A project report as described above.
  5. If applicable, a language model log in plaintext format and a permalink to your LM log.

Place this all into a directory named youreid_project3, zip the directory, and submit it to Canvas.