Final Assignment: Animated Bots
Due: Monday, April 23, 2007
Write a program that uses OpenGL to generate a dynamic scene containing at
least four articulated robots. The robots can be of your own design, but must
be articulated and contain at least 3 mobile joints each.
It is acceptable (it's what I would do!) that the four robots be copies of each other. Use the robot arm example from the textbook's discussion of hierarchical modelling as a guide for how to implement your robots. In particular, you might represent each robot as an object consisting of (at least) three joint angles. In each frame of animation you will want to change these angles (though probably by differing amounts). For example, a robot with two "legs" might have 2 hip joints and 2 knee joints. These joints might be represented by variables hj1, hj2, kj1, kj2. hj1 and hj2 might always be inverses, e.g. hj1 = 33 degrees might imply that hj2 = -33 degrees. In each frame of animation hj1 might increase by .1 degrees until a maximum is reached, at which point hj1 will start to decrease by .1 degrees with each frame until reaching a minimum, etc. kj1 and kj2 should probably be functions of hj1 and hj2, respectively, though you would have to determine how.
Specifications:
- The robots must be animated. You can choose how they move--it need not be particular "realistic" or complicated.
- The environment in which you place the robots is up to you, but should employ texture mapping. Again, you may choose the textures.
- The entire 'world' should be encompassed with an environment cube or sphere. Basically, a very large box that enwraps your entire world so as to give the illusion of a horizon. In a simple "outdoor" situation, you could just make the top lid white-ish, the bottom lid green/brown, and the four side wall blue-ish, and you'll get a not too bad effect. The use of texture maps can do an even better job.
- It should be possible to move the camera within the world smoothly. Use 'w' to move forward, 'a' and 'd' to spin to the left and right, and 's' to move backward. Use 'u' to pitch upward, 'j' to pitch downward, and 'n' to change the pitch to 0 degrees.
- Place several objects in the world.
- You must design components of the robots as well as the "world objects" with Blender and store them as Wavefront objects (.obj files). These need not be complicated, but cannot be simple polyhedra. A tricky part of the assignment is determining the relative "origin" of each robot component.
Extra Credit:
I will provide up to 1 full grade of extra credit based on the criteria of: complexity of the environment, use of the mouse to to guide movement (which must be explained in your assignment), complexity of the robots. Full extra credit would be akin to raising your midterm exam grade by .67, e.g., a B to an A-.
Submission:
Submit your source code to the submission system, http://caddis.acad.emich.edu/~hwmatt/student/. Turn in your hardcopy at the final exam.