Fall 2008, Section 01
The purpose of this homework is to give you an opportunity to explore
various aspects of rendering a graphics scene. These include:
- Instantiating objects within a world
- Applying materials properties and texture maps
- Defining light sources
- Allowing the user to interactively move within the graphics scene,
adjusting the camera position accordingly
You should know how to work with the OpenGL libraries, how to invoke
functions within the OpenGL API, how to respond to event callbacks, and how to
specify materials, textures, and light sources.
The goal of this program is to allow the user to interact and move within a
Your program must:
- Receive user input via the keyboard and map these key presses to control
the position of the camera in the scene
- Allow for rotation left and right, forward/backward, and up/down at the
- Allow the user to reset the camera position to the default (your
application must establish a reasonable default camera position)
- Render solar system objects within your scene, instantiating them and applying unique
materials properties to each. It would be advisable to store the materials/lighting information about the
objects in a data
file (or const array).
- We'll stick with the traditional nine planets (Pluto gets a bad rap
these days), the sun, and Earth's moon (other moons/asteroids/comets you
want to add are optional)
- gluSphere is recommended, but you can use any object
specification you'd like
- Apply appropriate textures to the objects
- Animate the scene
- Planets should rotate on their axis and rotate around the sun
- Moon(s) should also animate correctly
- It may be helpful to provide an "animate on/off" feature so the user can
move about a "paused" solar system
- Establish appropriate light sources within your scene
- At the minimum, you must have the sun in the center
- Other possibilities include emissive light from Jupiter and comets
For extra credit, you may:
- Implement collision detection such that the user does not pass through
objects (this can be primitive)
- Utilize more complex objects than spheres
- Generate your objects using Blender/Maya/3DStudio
(or some other graphics application)
- Import the 3DS files using lib3ds or some other library
- Alternatively, you can utilize free 3ds
models that are available (and elsewhere online).
You must submit the entire solution for your program. All supporting
files and source files must be submitted.
It is recommended that you complete (thought you do not need to submit) part
1 of this assignment earlier so that you make progress on this project. I
recommend part 1 to consist of all but the animation (so establish camera
control, lighting, and materials/textures).
This assignment will be graded according to this rubric.
This page was last updated on 10/28/2008.