CP2060 - Major Project

Interactive OpenGL meets Inspire 3D modelling and animation.

Due: Week 13 - Friday, 2nd November, 5pm.

Overview

Your major project is to create an OpenGL application that uses models created in Inspire 3D. It should include the following:

    1. 3D objects made in OpenGL code (not loaded from external files).
    2. 3D objects loaded from an MD2 file created with Inspire 3D and QME Lite.
    3. OpenGL text to give instructions to the user.
    4. Use of OpenGL features such as lighting, texturing, blending, etc.
    5. Keyboard and mouse controls so that the interaction is interesting.
    6. Rendered animation produced in Inspire 3D.

More Details

  1. Use OpenGL and/or GLUT functions to create objects for a 3D scene. You should use transformations and the matrix stack to construct more complex objects out of simple ones.
  2. You must create at least one animated MD2 model with at least 10 frames and at least three states (you can use up to 20 frames in the QME Lite version we have).
    The scenes and frames in the MD2 file should have logical names.
    The models do not have to be humanoid characters, but should be more than trivial constructions. They must have less than 4096 triangles (see lecture 18 for more notes on constructing models for use in MD2 files).
  3. Provide one or more instruction screens with text to inform the user of how to use your project (this is within the OpenGL application).
  4. Use the features of OpenGL we have learned (and which you have learned outside class) to make your interactive scene as interesting and realistic as possible.
  5. Both the keyboard and the mouse must be set up to perform some kind of interactive control of the MD2 model(s) and maybe also other objects in your scene.
    It is up to you what kind of interaction you want - a game is perhaps the easiest to visualise, and it could make use of the most interesting interactions. You do not have to create a game, however.
    You must have interaction which modifies the state of the model (for at least three states), as per the code given in lecture 18.
  6. Create an animation appropriate for your interactive scene entirely in Inspire 3D and render it as an AVI file (as in task 2). This should then be included in your project as a start/end sequence (as you wish), as outlined in lecture 21.
    It should be at least 5 seconds in length (e.g. 75 frames at 15fps).
    You may like to use the scene from your task 2, adding in the new model you have created, if that would be relevant.
    This animation does not have to be as well-constructed as task 2.

You must have a commented section at the top of your main C++ file that includes your name and assignment details.
Every function/procedure in your source code must be documented/commented. You should also include any other relevant comments as necessary.

These are the minimum requirements for this task. You can include additional features if you wish.

Not to have everyone going down this path, but as an idea of what might be considered a good choice for your project, you could model (pardon the pun) it on the second task and create a robot (MD2) which you can move around a scene to find a bomb (both created in OpenGL). You have a time limit (updated on-screen in OpenGL text), and if you don't get it in time, it plays a pre-rendered animation of the robot blowing up. When you do find the bomb in time, it does a little dance (one of the MD2 scenes).
An extension would be to have different levels with harder scenes and decreasing time limits, and bad guys who shoot at you and you have to collect power-ups to stay alive and get time extensions and ...
This possible project would demonstrate all of the required features quite well. It would also be just a little bit of work, eh? Get busy...

Special Note

You have been provided with a decent amount of example code in this course which is directly useful for the project. This should help greatly with various parts, especially the model loading and displaying the AVI file(s).
Although it has been provided for you, that doesn't mean you should just use it without understanding it, and it doesn't mean you shouldn't change it. Variable names, comments, how it works, etc. should all be modified if necessary to suit your project code. Some of the code may even have errors (not compile-time errors), or be written inefficiently, which you should address. You will get marked according to the overall quality of the code you submit, including the bits that were provided for you.

Documentation

Along with your electronic project, you need to draw up written documentation (about one page), saved electronically (Word document preferred) on your CD as follows:

  • Executive Summary - what is your project and why did you create it?
  • Instructions - exactly how can your program be operated?
  • Describe any features that you have used that were not learned in class.
  • Acknowledgements - what code, textures, etc. did you get from other sources.

Submission

Hand in your assignment on a well-labelled CD (on the case and CD itself), containing all necessary files before the due date to your tutor's pigeon hole in TG128, or to Lindsay in the last CP2060 lecture on Friday, 1pm.

You must include all necessary files, including a working, pre-compiled Windows executable file. The code should compile and work in Visual C++ on the lab computers at JCU.
Place these files in a main directory called SurnameFirstNameCP2060. You may have subdirectories within this main directory, but do not include any unecessary files within here. Previous versions of code, Inspire models you didn't use, etc. should all be removed from the main directory.

Necessary files include:

  • all of your source code and workspace/project files
  • all of your Inspire models (.lwo)
  • your Inspire scene for the rendered animation (.lws)
    (your scene should load from the CD without asking for replacement objects for ones it can't find)
  • the rendered video file
  • MD2 model file(s) and texture(s)
  • documentation, preferably in Word (another easily-accessible format is acceptable)
    You should save your file as Documentation.doc in the main directory.
  • anything else that is necessary to run the project, or that needs to be looked at for marking

Onwership of source code

The source code for this assignment remains the intellectual property of the student. I would like to keep examples of quality projects for subsequent years. Please indicate on your assignment if keeping a copy of your project is not acceptable.

(This has changed since first posted, as I would like to keep copies of source code as well.)

Backups

You must keep a backup of all of the components of your assignment for at least 30 days after submission (forever is better). On rare occasions disks fail as they are being marked.

Marking

You will be marked on all of the 6 main points above as well as documentation.

Most Important:

  • OpenGL/C++ interaction (completeness & complexity)
  • OpenGL/C++ code quality (comments, variables, etc.)
  • Inspire 3D model construction for MD2

Less Important:

  • Inspire animation for rendered AVI
  • QME MD2 file creation
  • Documentation

The actual marking scheme is given here.

 

 

 

 Announcements

This is your major project, worth 45% of your total assessment in CP2060.

Due to the late release of the assignment details, the due date is the last day of semester. This has been changed from the original time set (week 12). Don't be confused about when it's due.

 

 Subject Coordinator: Lindsay {w} | {e}.

Last Update: November 1, 2001