CS559
Fall 2005

News
Calendar
Assignments

Lectures/Notes
Tutorials
Sample Code

Project 1
Project 2
Project 3

Basic Info
Policies

C++ hints


Examples

This list of examples was made by Yu-Chi (The 559 TA for Fall 2005) by looking at the projects archive from the Fall of 2003 (the last time the GraphicsTown project was used). Most of the text was taken straight from the students writeups. We thank all of the students from that class for doing such cool projects!

You might start with the gallery of pictures at the end.
Remember - these students had compters that were nowhere near as good as the ones you have today!

What Did Other Students Do In The Past

  1. Texture Mapping: add texture mapped polygonal objects to the environment.
  2. Examples

    1. Buildings like a clock tower, a church, etc.
    2. The hearse - Took pictures from the internet of hearses, stretched them and measured them in order to make the model. In the program, they move around obeying traffic laws. At night their lights come on.
    3. The drive-in movie theater. It plays a movie I created called "King Gleicher vs. Godzilla" by photoshopping Mike's head onto King Kong. It simply puts up a new texture map every so often. There are 10 frames.
    4. Capture the textures: The texture is of the clock tower of the Music Hall which is across from Humanities, from the bridge over Park Street. http://music.library.wisc.edu/geninfo/mushall.htm
  3. Hierarchical Animated Model: add a hierarchical, animated model. The model must combine multiple components in a transformation hierarchy. Different models need different hierarchies
  4. Examples

    1. Bridges are examples of hierarchical models which are composed from main structures and decorations.
    2. Play ground toys.
    3. A windmill. It has an articulated propeller that looks as though it is really turning from the wind and generating power. During each draw cycle, the current clock time is compared to the windmill's previous rotation update time. If the difference is more than CLOCK_PER_SEC/300, then the prop rotation angle and the rotation update time are updated for next time.
    4. A clock tower that keeps either simulation or real time and displays it on it's face.
    5. Another clock tower: The hands are articulated. I made an hour and a minute hand and the time that it tells corresponds to the world's time. I defined "straight" and "right" vectors for each of the hands. Then, based on the world time (0.0 to 1.0) I derived equations for the hands' vector components using trig functions. Then I draw the hands based on the center of the clock and the hand vectors.
    6. The blimp that circles the city. A student constructed it out of quads, polygons and a gluSphere and gluCylinder. I put all these together using glTransformations. The propeller spins!
  5. Paramatric Instancing: Add an object described by parameters. You must create multiple instances with different parameters, and each class of model counts for separate points, not each instance.
  6. Examples

    1. Trees with different sizes and different textures for leaves and trunks
    2. Cars with different colors and textures.
  7. Sweep Objects: Add an object created as a sweep, either an extrusion or a surface of revolution. The important thing is that it be created by moving some basic shape along a path. The overall object must use at least three different uses of the swept polygon. In other words, something like a cylinder isn't enough, but something like two cylinders joined to form an elbow is.
  8. Examples

    1. Cars. I came up with a 7 point algorithm. It allows you to specify half a car chassis using 7 points and a body width. This is mirrored to the left side and a complete car is drawn
  9. Subdivision: An object defined using the modified butterfly scheme. You must include a key press that refines the model, so that we can see the improved quality.
  10. Examples

    1. Fractal for the mountains
    2. Sphere
  11. Terrain: A gray image is used to present the height at sample points and tessellating the height sample into smooth terrain.
  12. Examples

    1. Mountains are constructed from terrain with a height map
  13. Particles: A set of particles to represent the fuzzy components inside a system
  14. Examples

    1. Firework:The fireworks consist of a set of points and triangles(sparkelys) which move from a center point outward given a random velocity. that velocity is slowly decreased until the firework reaches it's maximum size(which also has a random element) at this point the firework grows dark and the particles begin to fall. As they continue to fall fewer particles are drawn until at the end of the fall cycle nothing is drawn and the firework is assigned a random delay before it will fire off again with a new random position, and size.
    2. Fountain:
    3. Slaughter house. This is the most textured and articulate object. It also has particle systems for blood from the cows and smoke from the chimneys. The cows also seem to congregate here, but the reason is not apparent....
  15. Billboard: A rectiangle attached with a texture presented a tree or other objects is set to faced the viewer all the time.
  16. Examples

    1. Complex trees
    2. An igloo. The igloo is interesting because it is basically constructing and texture mapping a semi-spherical igloo. The igloo also has a chimney coming out the top. The texture map of snow has lines so that the igloo looks authentic.
  17. Sky Box: A box encloses the created world has texture to present the sky.
  18. Examples

    1. Enclose the world by a spheres and then use two textures to present the day with the blue sky and the night with stars
  19. Other: here are some other examples used in previous projects
  20. Examples

    1. Trains to move around the city with stop and a fixed route and other car needs to stop when it passes
    2. Snowball fight. There are 5 snowmen that are involved in a snowman fight. They throw snowballs at different speeds, thus the snowballs have different trajectories. The snowmen have stick arms (they are snowmen, after all), which rotate different degrees to throw different snowballs. This is an articulated hinge. The snowmen get the snowballs automatically with their snowball powers, instantly having the snowballs appear from their bodies, so they can always be fighting.
    3. Walker bots. The simplest way to articulate something like a walker would be to simply give it an animation-state (a number between 0 and 1) and draw the legs relative to the body, according to that state: i.e. at state 0 both feet are on the ground with the left foot in front, at state 0.5 the right foot is in front, and at states < 0.5 the left foot is moving backward (relative to the frame) and the right foot is arcing up and moving forward, in a stepping motion. If you calibrate these movements to the speed that the frame moves, this works perfectly well, but only if you're moving in a straight line: as soon as you try to make a turn, the feet start sliding along the ground when they're supposed to be planted, because the outer foot is covering more distance than the inner foot. So instead, my walkers don't actually store any positional information on the frame - instead, the only thing that is stored is the position of each foot, and the frame and legs are positioned according to the feet at any given time. The feet are moved individually with step operations: for each step, the new position and angle of the foot are calculated, and during that step the foot is drawn at a position between its old location and its new location. When it finishes the step it stays put in 3d space and the other foot makes a step. As a result, the feet never slide along the ground - when they're planted, they're planted, as they should be. The hinged legs are drawn by calculating a joint position midway between the frame and the foot, and offset such that the length of the upper and lower legs of the bot are constant.
    4. Use some simple AI to control the cars to stop and to drive
    5. Flag implementation. After playing around with different curves i tried different sin and cos functions and noticed the up and down motion and tried to come up with something that this would look cool with. I was originally going to make a pond but the flag looked cooler. I simpled took a sin function and moved the points along the function each time it is drawn. Then repeat it again. The end is connected to the pole thats why it looks like the end stretches a little bit when it waves back and forth.
  21. Other non-trivial examples: the following techniques are interesting but themselves are not trivial.
  22. Examples

    1. Use some BSpline to contruct the path for birds and humans but to make them look great is hard
    2. The walk behavior for the dogs and people I modified the drive behavior so that the people and dogs walk on the side of the word at a resonable yet still partly random speed. The people and dogs stop at stop signs with a 2 second delay before crossing the road. the people and dogs also stop animating (moving their arms, legs, and tails.) while stopped at a stop sign
    3. A model system is used to load models or motions created in Maya or other similar systems into the world. This will make the world look great but it is not easy unless you already have some experiences and some example codes.
      1. Milkshape loading and scripting are the coolest feature in our system. They go hand in hand because they offer virutal limitless flexibility when creating a scene. Virtually all objects in the scene are Milkshape models, so if you want a new object, simply create a new Milkshape file. The scripting allows us to easily load, save and interact with the world, as well as create easy manipulation of world entites, such as applying entities to paths or duplicating them.
      2. The "coolest" behavior in my system is the walking robots (I didn't have the energy to try to create polygonal people). They were animated in Maya 5.0 using inverse kinematics and converted to the RTG (real time graphics) file format. They are loaded in my program by the CRTGConverter class.
      3. IROC-Z Camaro model. I made it with Blender by using pictures of the car my brother gave me and exported the model using a python script that I wrote after reading the blender python documentation. I actually did the model before the project was assigned, but I had to put it in there somehow.
    4. Hardware shading: To use CG or OpenGL shading language will make scene look great but it is not an easy task

Gallery

The texture on the buildings and the lighting make the scene look great

The car's texture looks more realistic

Using a height map to contruct the mountain makes world look great.

Loading models created by other systems makes objects look interesting and realistic.

\

The clock tower is contructed by using texture for its main structure and to animate the two clock hands by using hierarchical concepts

The ilgoo is contructed by using the billboard

10 frames movie is loaded in the system as a sequence of textures

The playground toys are examples of the hierarchical model

Robots is also an example of the hierarchical models

Flag

A Windmill is another example of the hierarchical models

Trees are implemented as a billboard

Texturing and lighting

Trees are examples of the billboard

The clock tower is textured by his own textures created by shooting pictures in our city and its hands are animated by the concept of the hierarchical models

Fountain is a great example of the particle system

Snow is another of the particle system

Here, the hill is an example of using sphere subdivision

Firework is another example of the particle system