Recent Changes - Search:

CS559-2006 Web

Staff Login

P3

Programming Assignment 3: OpenGL and 3D User Interface

Due: 10/24
TA in Charge: Yu-Chi

Why?

The purpose of this assignment is to make sure that you can write an OpenGL program - just to check the mechanics (can you get it to compile, link, ...). In addition, we also want to give you some experience with writing 3D graphics programs. Specifically, we want you to be able to do the things you will need for the second project. Effectively, this program is the warmup for the second project.

This program might seem like a lot of work for a programming assignment, but view it as getting started early on project 2.

If you're wondering... in project 2, you'll be making a roller coaster. The "objects" in this assignment will be the "control points" that the roller coaster's track has to pass through.

What?

Your task is first to write a program that uses OpenGL. We recommend that you use FlTk (see the OpenGL survival guide for an explanation), but you can use any windowing tools you see fit.

Secondly, your program must draw something in the window (using OpenGL) and be able to have it move. You should have a button or a key that starts/stops the motion. You can use the RunButton example code to make this easier. You should use double buffering so the animation looks OK.

Third, your program must allow the user to place a number of small objects in the world and move them around. We strongly recommend that you have a groundplane so that your objects are't just floating in space.

Requirements:

  • Open a GL Window
  • Have a number of simple, small objects in the world (little cubes are fine).
  • Have a way for the user to add more objects.
  • Allow the user to select an object (the selected object should be indicated somehow) and move it around.
  • Use double buffering

Not Required, but strongly recommended:

  • Allow the user to manipulate the viewpoint to look around.
  • Have a "World" with a groundplane

For the user interface, you don't have to do anything fancy. For example, you could give the user a bunch of sliders to control the camera, use a slider to select an object, and have sliders for its position. You could even have the user type in the coordinates of points.

Or, you could have a "direct" interface where the user selects objects by clicking on them, and drag the objects around using the mouse (which is a tricky thing since the mouse is 2D and your world is 3D).

While this might seem like a lot of work for a programming assignment, all of this will be used as part of Project 2. Taking the time to do this assignment well will mean that you are very close to having what you need for Project 2.

The related two tutorials are OpenGL Survival Guide and CubeIt. You'll probably want to borrow some code.

The CubeIt program almost satisfies the requirements for this assignment.

How will this be evaluated?

We do care that your program is turned in correctly (including proper documentation and readme). You will lose points for not following the rules.

As with other programming assignments, this will be graded on a 0-4 scale. Roughly...
* 1 point for creating a 3D OpenGL window with 3D drawing
* 1 point for drawing objects in the world
* 1 point for animating this object (when a button is pushed)
* 1 point for selecting objects in the world and move it around according to user's control

History - Print - Recent Changes - Search
Page last modified on October 11, 2006, at 04:45 PM