CSS 451: Final Project Specification

 

Assigning Date: Jan 13, 2008

 

Due Times: Refer to our course web-site.

NOTICE: You can bring a thumb drive (or CD) with compiled exe source to class on the demo day.  Just make sure your exe is compiled based on the lab machines.

 

Objective

You will combine the 3D mathematics/interactive knowledge/techniques learned in this class to design and implement a real-time 3D interactive graphics application. Your 3D application must contain a state. The purpose of your application is to reflect this state graphically. Through a friendly user interface, you will allow your user control the state of your application. In return, your application will react to the state change by updating the graphical representation in real-time. For example, at this point we have acquired sufficient knowledge to implement a simple 3D maze simulation, where the user would navigate a 3D object through a 3D maze you provided. In this case, the 3D object and the environment will be the state of the application. Through a friendly user interface the user would be able to control the direction and speed of the 3D object. The application would update the position and velocity of the object continuously in real time. You are free to specify and design any application you like, given the technical constraints as specified.

 

Technical Constraints

 

  1. One Hero Object. You must support at least one Hero object and at least two supporting objects. All these objects must be textured mapped. At least of one of the objects must contain a constant animation component (e.g. rotating blade of a helicopter, etc.).

 

  1. 3D Environment and Object Interactions. Your hero object must interact with the supporting objects in the 3D environment. By interact, in this case it means your hero object must intersect/collide with, and/or in general be aware of, the supporting objects. Your application must provide support/feedback allowing user to control/understand what is going on.

 

  1. Object Positioning or orientation. Your must provide the user with the direct control of the positioning and orientation of at least one type of object at all time. Another way of saying this is that the position and orientation of one Hero or one Supporting object must be directly under user’s control at all time.

 

  1. Object Motion. You must support non-zero velocity on at least one type of object. This is saying, at least one Hero or one Supporting object must have non-zero velocity (must be moving).

 

  1. Following or Seeking Motion. Your application must contain a mode and/or otherwise such that an object will either follow and/or seek out another object in the world. E.g. heat seeking missile, a car chasing yours, etc.)

 

  1. Displays for user. Your system must be able to display the world from three different cameras. Depending on the functionality you implement, it is not necessary to show all three camera views at the same time, all the time.
    1. Hero/Object Camera: Show what can be seen from the object that is under user control.
    2. 3rd Person Camera: A user control camera. User should have the choice of:
      1. full control: of this camera where the user controls the position and rotation of both the camera position and look-at position; or,
      2. hero view: this camera will be constraint to be behind/above the Hero/Object that is under user control. As user manipulate the hero/object moving around, this camera’s relative position to the hero/object should maintain.
    3. Another camera: decide what you want to do with this one.

 

  1. Object Visibility. The object that is under user’s control must be visible (via one or all of the views) at all time.

 

  1. Suspend/Resume/Reset. Your application must allow your user to suspend and resume the real-time interaction. In addition, at anytime, if the user wishes to do so, they must have the option of re-initializing (reset) the state of the application.

 

  1. User friendliness. You must design a friendly graphics user interface (GUI) to interact with your user. When appropriate, keyboard input is acceptable. However, you must provide graphical feedback of the application state for the user. Please spend sometime to make sure that information presented in your GUI are organized in a meaningful fashion and only necessary information is presented. It is ok to map direct interaction functionality to the mouse buttons, and map time critical movement commands to the keyboard.  Your GUI must reflect the state of the application at all time. You will loose significant credit for this category if your UI looks even remotely like our mps, or if your UI contains useless controls.

 

  1. Pixel/Fragment Shading. You must support at least one special effect and/or “interesting/unique” appearance via pixel/fragment shading. More details about this requirement will become available later in the quarter.

 

  1. Optional/Substitute Advance Effects. If you find it difficult to support all of the above technical specifications in your application, you can substitute some of the above with shadow and/or reflection (with proper stencil buffer support) effects. Please come talk to me about what you want to substitute and we can discuss what are appropriate.

 

GROUP WORK: You should form groups of 2 or 3 members. 3-person groups must implement a multi-user (at least 2) application or include substantial extra credit materials. You are highly discouraged from working alone, but you can if you insist. You will not receive any extra credit for working alone. In the contrary, single-person projects are expected to have similar quality. This quarter we are going to try something new, your final projects into three tiers according to:

§  technical complexity

§  completeness, and

§  general aesthetic

All projects will receive grade according to the tiers that they are classified in.

 

Project Proposal (1%):

Describe your application, you must include the followings:

1.      Describe how it satisfies the above technical requirements. Talk to me if your group would like to implement something completely unrelated to the above.

2.      Include sketches of hero and supporting objects.

3.      Overall application design, including GUI support, and camera view window locations and purposes.

 

Project Concept Demo (4%):

Skeleton structure for your application, the followings must be included:

1.      A running application;

2.      1% - Hero and supporting object placeholders (ok if details are not ready use a placeholder meshes) in the world;

3.      1% - GUI control (ok if placeholders, but, your user interaction should be completely designed. All keyboard mappings should be done, your demo should include echoing of proper key pressed [e.g., if “w” sends your hero forward, you should at least echo “w” is pressed somewhere.]).

4.      1% - All camera view windows with proper cameras displaying the world (ok if technical details does not function correctly, e.g., a hero-cam that does not follow the hero yet is ok, but a camera with view must be shown).

5.      1% - You must include the usual clean source code zip file, and a separate folder containing all necessary files (but nothing extra) so that I can double click and test your demo.

NOTE: we will not dedicate lecture time for this demo. Concept demo do not need to include in-application logic (e.g., hero does not interact with supporting objects, a supporting object does not follow the hero, etc.)

 

Project Progress Demo (3%):

This is when you will show your work-in-progress to the class. You will run your demo and explain to the rest of the class what your project is about. Included should be:

1.      Completed Hero and supporting objects (including textures and all the controls);

2.      All cameras in all views should be completed and functioning;

3.      Most importantly: Demo and highlight how pixel/fragment shader(s) are featured in your application.

By this time, you should be working mainly on in-application logic. This is the evaluation form we will use.

 

Final Project Report (2%):

This is the final documentation of how to use you’re the system you have implemented. This document should detail of how to use your system, including mouse buttons and/or keyboard commands.

 

Final Project Demo (3%):

Each group will have about 5 minutes to describe your application and demonstrate all the functionality of your system. One percent of the credit will come from your peers and the rest will come from me. You will be graded based on:

1.      Organization of the presentation.

2.      Clarity of describing your application.

3.      Completeness of showing all functionality.

This is the evaluation form we will use.

 

Final Project Correctness (20%):

Finally, I will test run your application and grade it based on completeness and correctness of your system. Here is how credit will be distributed:

 

 

  1. Hero + Supporting Object.                                          2%

 

  1. 3D Environment and Object Interactions.                 1%

 

  1. Object Positioning.                                                      1%

 

  1. Object Motion.                                                             1%

 

  1. Following/Seeking Motion                                           2%

 

  1. Displays for user.                                                         2%
    1. Hero/Object Camera       1%
    2. 3rd Person Camera            1%
    3. Other Camera                   1%

 

  1. Object Visibility.                                                          2%

 

  1. Suspend/Resume/Reset.                                              1%

 

  1. User friendliness.                                                         1%

 

  1. Shaders: Pixel and Fragment                                      2%

 

  1. General evaluation of                                                  5%
    1. Completeness
    2. Technical difficulty
    3. Usability

 

  1. Similar to Kelvin’s MP/class examples                       -10%

This is not a joke. If your final project looks even remotely similar to our class examples or MP solutions a significant portion of the grade will be deducted!

 

WARNING: Since all the source code to the mp’s are given to you, if your final project is a simple combination of all the mp’s where most/all of the above technical specifications are met you will lose a significant amount of the credit for the final project.

 

 

Extra Credit                                                                               2%
You can get up to 2% of extra credit by being creative and resourceful.  Notice, this is 2% of the final score in this class!! Examples of what you can do include:

 

a.      Saving/Retrival.  Your application must allow the users to save and re-load their work to files.

b.      Selection. Your user can interactively activate/deactivate appropriate visible objects.

c.      Advanced Effects: shading, reflection, etc.

 

There are numerous possibilities for extra credits. Please talk to me if you have other ideas. I will tell how much your idea worth J.

 

In all cases, you are expected practice what you learned in the Technical Writing class and submit documents with complete and correct English sentences. I will not, and am not qualified, to correct your grammar or presentation style. If I cannot understand what your writing, your will not receive any credit.

 

Please e-submit all your work, including documentations (proposals and final reports). This is so that I can post your work for future students to look at. If possible, I prefer pdf for documentations. If you can’t build them, Word is ok.

 

Note: Having 3D objects moving around in a 2D world, e.g. driving a 3D car around a flat race track is not a true 3D application. The positioning/orientation of your objects must be truly in 3D space. If you find it difficult to come up with ideas, please talk to me. If you have a great 3D object in 2D world idea, and absolutely want to do it, then, we can figure out what else to include.

 

Your final project will count 33% towards your final grade for this class.