Computer Animation, Spring 2002

Z Sweedyk


Assignment 1: Interactive Modeling

This assignment is adopted with minor modifications from the computer graphics course COS426 at Princeton as taught by Tom Funkhouser.

Due:

Sunday, Feb. 17, 2002 at 11:59 PM

Overview

The goal of this assigment is to introduce you to mesh representation, curve/surface smoothing, and modeling.  You will create a basic interactive modeling program for generating smooth surfaces.

Your program will read a set of triangles from a .ray file, build a "control" mesh from these triangles (shown in green above), and displays it in a window using OpenGL. As the program executes, a user can repeatedly subdivide to produce a smooth subdivision surface for display (shown in gray above).  The user may also drag vertices of the control mesh with the mouse; the subdivision surface should be updated continuously in the display.  To create the smooth surface, you will implement the Loop subdivision scheme.

Your program will juggle a hierarchy of meshes.

Level n+1 is created in response to a user's command to subdivide. You'll construct the topology of each mesh only once. If the user moves vertices of the control mesh you'll update the geometry of the other meshes using the subdivison rules.

What You Have to Do

The assignment is worth 20 points. The following is a list of features that you may or must implement. The number in parentheses corresponds to how many points it is worth.  Required features are shown in bold. By implementing all the required features, you get 16 points. To get more points: It is possible to get more than 20 points. However, after 20 points, each point is divided by 2, and after 22 points, each point is divided by 4.

Getting Started

You should use the code available at /cs/cs181a/proj1/src on the graphics cluster. The code we give you is able to load a .ray file and display it. It also sets up basic menus (click the right mouse button) and several keyboard shortcuts. This is just a starting point for the project, so feel free to change anything you want. You will need to augment the data structure so that the geometry can easily be updated when the user moves a vertex of the control mesh. THINK THIS OUT BEFORE YOU BEGIN! Consider how you'll update normals and texture coordinates. You will mainly need to modify the following files: There are several support classes which you shouldn't need to touch: You'll find a variety of sample ray files at /cs/cs181/proj1/ray. The syntax should be self-explanatory. (Some but not all of the files include texture coordinates.)

What to Submit

You should submit via the cs181a submit program
  • One archive (zipped/tar file) containing the complete source code for your project, a makefile for compiling the project, the base meshes you used to create models, texure files used for your models, and jpeg images of the models.
  • a writeup in html called project1.html. It should be brief, describing what you have implemented and how you created your models. You should also include the images of your models. Any interface features you implemented including shortcut keys should also be documented.
  • Last modified February 2, 2002.