Announcements & syllabus
2: Our first 3D Game
You will implement a
program that displays a simple 3D world and allows the user to interact with
it by firing cannon balls.
The assignment is due on
Thursday March 20 at 11:59 PM. The standard late
policy for programs is in effect.
- The program should be written in C or C++
using openGL/GLUT. You may use any openGL/GLUT functions for this
- The program should create a single interface
- The window should display a perspective 3D
- A flat ground plane with a regular texture
- Two rows of "columns" that extend
away from the viewer. These should be relatively tall objects, of any
shape. The rows should be a good distance apart but both rows should be
clearly visible to the viewer.
- A cannon that appears to come out of the
camera. Initially the cannon should be parallel to the ground.
- The user can interact in any of the following
- Moving the mouse up and down causes the
cannon to rotate (pitch) up and down. The cannon can have any pitch
between 0 and +80 degrees.
- Clicking the left mouse button causes a ball
to be fired out of the cannon. The ball's flight should then be
animated using simple Newtonian physics. In other words, the ball
should maintain its initial horizontal velocity, and its vertical
velocity should change based on acceleration due to gravity. When the
ball intersects the ground plane, it should stop, and remain at that
position for the remainder of the program's execution.
- Using the plus (+) and minus (-) keys changes the initial velocity of the
ball. Display the current initial velocity at the bottom of the window.
- Pressing the b key activates "be the ball" mode.
In this mode, when a ball is fired, the camera should move through the
3D world along with the ball, and should rotate to point along the
ball's current movement vector. Keep the initial offset of the camera
to the ball constant (i.e., keep the ball in front of the camera). When
the ball reaches the ground, wait 1 second, and then return the camera
to its original location. Obviously, in this mode only one ball can be
in the air at any time.
- Pressing the n key returns the program to normal mode if
"be the ball" mode has been activated.
Optional Features (for
up to 10 bonus points)
- Create a visually interesting 3D world for the
balls to fly through.
- Provide a nicer interface for setting the
cannon pitch, the initial velocity, and the program mode.
- Provide a third mode allowing the user to fly
around the 3D scene.
- Provide targets for the user to try to hit
with the balls, and detect when the balls hit the targets.
- Provide a virtual dog to retrieve the balls
after you fire them. :-)
Turn in your program via email to the TA. You may either submit a
single source file or a ZIP archive of several source/header files. You may
also optionally include a plain text README file if you wish.