You can show your final project in Olsson 011 at 7 PM on Monday May 4.
As an alternative for Assignment 3, you can implement a final project that does an interactive task of your choice with OpenGL. It is suggested but not required that you start from the same codebase as Assignment 3.
The requirements are:
Your project idea is approved by email by the instructor by the end of March.
You implement at least as much working code as would be required for Assignment 3.
Submit your code with a brief writeup explaining what you have done, and several screen-captures, by the due date (in finals week, see above).
A 3D physics demo, such as with the open source bullet library. Alternatively, a 2D physics demo could be created with a library such as Box2D, as long as 3D shapes are rendered in OpenGL.
A simple game, such as 3D Pong, a snake game, a board game, or a block-world game like Minecraft. (Making the dynamics of the game intentionally simple will allow for much easier physics, collision handling, etc).
The final project will be graded on a points basis, for the same total number of points as Assignment 3, and with full points as long as the above requirements are met.
Groups of up to 2 can be formed for the final project, however, a group of 2 is expected to have twice as much code and working features.
Potentially Useful Resources
WebGL tutorials and Three.js. It is acceptable to use WebGL or libraries such as Three.js as long as your project makes a significant amount of direct calls to OpenGL functions so you learn OpenGL.
Open source photogrammetry guide (for 3D reconstruction). This is a bit tricky, but can be used to acquire 3D models from photographs. See some 3D models I acquired using this pipeline.
SketchFab, which has many 3D models available for download.
MeshLab, the open-source mesh processing tool. For a command-line tool, see also Trimesh2, which can convert to our .ray format.