\( \newcommand{\vecIII}[3]{\left[\begin{array}{c} #1\\#2\\#3 \end{array}\right]} \newcommand{\vecIV}[4]{\left[\begin{array}{c} #1\\#2\\#3\\#4 \end{array}\right]} \newcommand{\Choose}[2]{ { { #1 }\choose{ #2 } } } \newcommand{\vecII}[2]{\left[\begin{array}{c} #1\\#2 \end{array}\right]} \newcommand{\vecIII}[3]{\left[\begin{array}{c} #1\\#2\\#3 \end{array}\right]} \newcommand{\vecIV}[4]{\left[\begin{array}{c} #1\\#2\\#3\\#4 \end{array}\right]} \newcommand{\matIIxII}[4]{\left[ \begin{array}{cc} #1 & #2 \\ #3 & #4 \end{array}\right]} \newcommand{\matIIIxIII}[9]{\left[ \begin{array}{ccc} #1 & #2 & #3 \\ #4 & #5 & #6 \\ #7 & #8 & #9 \end{array}\right]} \)

Computer Graphics Final Project

You (and optionally, a partner) will create an interesting graphics scene that is either interactive (like a game) or animated (like a movie). You will demonstrate it in class during the last week of the semester. Your project should show as many as possible, but at least four of the major graphics concepts that you learned in the course, namely:

  1. modeling, particularly hierarchical
  2. material, lighting and shading
  3. changing camera position or shape
  4. curved lines or surfaces
  5. textures and texture-mapping
  6. transparency
  7. user interaction
  8. animation

While it would be hard to do everything on this list, you'd like to show a variety of skills. If you do an animation, the animation should have at least two independently moving objects (this could be two different arms of a robot, though).

Your project should go beyond the relatively simple examples we did for homework and in class, either in complexity or scope.

I'm happy to talk with you to help you explore ideas for your project or to entertain different project ideas!

Description

In addition to the software you create and demonstrate, I would like you to create a simple webpage describing your project. (I'll link to these from the CS307 website.) Your webpage must have still pictures of the project (take some screenshots and make image files), converting them to PNG for display on a webpage of your creation, describing your project.

Many of you already know how to code in HTML. For those who don't, check out these lecture notes on HTML from the CS/MAS 115 course. That will be enough for the basic structure of your page, with pictures and paragraphs explaining what the pictures are. Images can be inserted onto a webpage with the <img> tag:

<img src="file.png" alt="short description of image">

You'll probably want to use PNG format, since you'll have a wide range of colors. Screenshots on the Mac automatically are saved as PNG, so that's easy. If you need any help, don't hesitate to ask!

A complete-(ish) template that you can use is webpage-template.html in this folder. You can copy it like this:

cd ~/public_html/
mkdir cs307-project/
cd cs307-project/
cp ~cs307/public_html/assignments/webpage-template.html project.html
opendir .

Those commands above create a subfolder in your public_html folder for your project call. Put all the files related to your project in there.

Finally, you must name your folder and HTML files for the project description and demo as follows:

cs307-project/main.html

cs307-project/project.html

The project description should link to the main.html for the project.

Remember, this is in your public_html, not in your cs307-assignments folder.

The supporting files can be named however you like. Make sure all the files are world-readable and that you test the URL above to make sure it works. You don't want to have trouble while demonstrating your awesome project.

Let me know if you have any difficulty, or ask a fellow student who knows HTML. This is not supposed to be an elaborate webpage. Please don't spend a lot of time on this; I just want a page that says "here's what I did", covering the features (see the list at the top of this page) that you demonstrated and maybe a few screenshots of really cool things. You can also use Bootstrap or other web page templates if you'd like.

Presentation

Your presentation need not be long, 5-6 minutes is fine. You should provide a demo of the project, showing all the interesting and cool elements, describe any interesting aspects of the coding or modeling, and anything new you learned about along the way. I do not expect you to use slides for this presentation. It is ok to provide some text on your webpage, but you should mostly be showing your visual graphics application in the presentation.

Grading

As always, you should write code that works, is modular, has good style, and is well-documented. In addition, I'll grade your project partly on how creative and interesting it is. I'd like you to challenge yourselves and create something that you will be proud of. This judgment is not based on the size of the scene, number of objects, number of lines of code or anything simply quantitative. I'm looking for undertaking a challenge. Your project description should also make this clear. Feel free to consult with me on this.

Your presentation is not graded, but I expect you to do a good job.

Deadlines

See the course schedule for the due dates of the alpha and final versions of this project.

The final version of the project in this class is due on the last day of final exams. This gives you the maximum time possible to make this project as good as you want it to be. These projects are always amazing; I'm looking forward to seeing them!