Important Dates
Proposal due: 3/25
Proposal returned: 3/27
Final Exam: 4/22
Project Due + Presentation: 5/1
Should you have a drastic change that will make your project very different from what you propose, please let me know as soon as possible. I would informally check your progress.
Proposal
It should be as concrete as possible and should contain
- Project title
- Project members (names and emails)
- Project description:
What exactly are you planning to implement?
What is the basic functionality of your program?
What extensions will you consider?
Project Submission
1. Readme file: including how to install and run your program, key
control, and mouse control.
2. Report: including description of the project, graphics features
implemented, algorithms and data structures, obstacles encountered and
how they are tackled (or never tackled), comments, and duties of each member.
3. Source files and executable files (and DLL files if any)
Project Presentation
1. A live demo of your project in our Lab.
2. Presentation of your report.
Grading
FUNCTIONALITY! Any working project will have a better grade than
an ambitious project that is not working. Extra credits for extensions
and advanced graphics techniques is possible. Other criteria include:
scope of the problem solved by your program; sufficient code comments;
data structure and algorithm design; efficiency and elegance of the implementation.
Academic Honesty
There are tons of OpenGL codes available out there. You can look
at the codes to see how people solve problems, but it is absolutely
prohibited to copy the codes. You could use the classes provided
in our textbook and copy and modify the programs in the Red Book.
Talk to me if you are not sure about what source codes not developed by
yourself can be used in your project.
Possible Project Topics
1. 3D Modeling Tool or 3D CAD: Modeling and designing system for 3D objects,
robotics, architecture, VLSI design or
circuit layout.
2. 3D Data Visualizations: Contour plotting, mesh plotting, and profile plotting to visualize 3D data.
3. 3D Video Game: Originally a programming assignment for the Stanford Computer Graphics class. The link and its related links is http://graphics.stanford.EDU/courses/cs248-99/proj3.html. The results can be found at http://graphics.stanford.EDU/courses/cs248-videogame-competition/cs248-99/. Basic requirements include 3D viewing and objects, user interaction, lighting and shading, and texture mapping. Feel free to look at what (and how) were done at Stanford, but do not copy code from there.
4. 2D Video Game. The modeling and viewing should be 3D, however.
5. 2D Ray Tracing: Refer to Case Study 4.4 in HIll's book.
6. The Prism: Refer to Case Study 6.3 in HIll's book.
7. Building Discrete-Stepped Surfaces of Revolution: Refer to Case Study 6.6 in HIll's book.
8. Taper, Twist, Bend, and Squash It: Refer to Case Study 6.14 in HIll's book.
9. 2D Maze Game, with 3D modeling and viewing.
10. True 3-D Maze Game.
11. 3D Color Converter: Write a program that provides an interactive interface to select colors in one of the RGB, HSV, and LUV spaces and convert it a color specified in other spaces. Visualize each 3D color space using a color cube or cone. The user should be able to interactively specify a cut plane through these color spaces and – in another viewport – select a specific color from that cut plane. The user should also be able to specify a region of the 3D color space or 2D cut plane.
12. Checkers Game, with 3-D model and viewing. The chess game is even better.
13. Fireworks Editor: Design a particle system that will generate fireworks. Variables include different shaped explosions, different ejection angles, different trajectories, and the color of the particles changing as a function of time.
14. Graphics pipeline, either 2D or 3D: Write a graphics package similar to OpenGL with the primitive to draw a pixel. It should include geometric transformations, window to viewport transformation, clipping, scan conversion, etc. For 3D pipelining, projection should also be considered. (Refer to "Case Study 8.2: Do-It-Yourself Graphics Pipeline" in Hill's book.)
15. Graphics Package Supporting Hierarchical Modeling: Item 14 + hierarchical modeling.
The topics are not limited to the above listed. You may propose projects in other topics.
Helpful Links
Stanford's
Video Game Project. This is a very useful link as there are a
lot of greater pointers.
Harvard
University's Computer Graphics Projects. Check it out!
But don't copy.
As GLUT supports limited user interface functionality, you might want
to use GLUI, MUI
, or GUI widgets supported by Visual C++ or Borland C++.
Free 3D objects and textures and shareware 3D modeling programs can
be found here.