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
- Texture Mapping: add texture mapped polygonal objects to the environment.
Examples
- Buildings like a clock tower, a church, etc.
- 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.
- 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.
- 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
- Hierarchical Animated Model: add a hierarchical, animated model. The
model must combine multiple components in a transformation hierarchy.
Different models need different hierarchies
Examples
- Bridges are examples of hierarchical models which are composed from
main structures and decorations.
- Play ground toys.
- 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.
- A clock tower that keeps either simulation or real time and displays
it on it's face.
- 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.
- 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!
- 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.
Examples
- Trees with different sizes and different textures for leaves and
trunks
- Cars with different colors and textures.
- 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.
Examples
- 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
- 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.
Examples
- Fractal for the mountains
- Sphere
- Terrain: A gray image is used to present the height at sample points
and tessellating the height sample into smooth terrain.
Examples
- Mountains are constructed from terrain with a height map
- Particles: A set of particles to represent the fuzzy components inside
a system
Examples
- 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.
- Fountain:
- 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....
- Billboard: A rectiangle attached with a texture presented a tree or
other objects is set to faced the viewer all the time.
Examples
- Complex trees
- 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.
- Sky Box: A box encloses the created world has texture to present the
sky.
Examples
- Enclose the world by a spheres and then use two textures to present
the day with the blue sky and the night with stars
- Other: here are some other examples used in previous projects
Examples
- Trains to move around the city with stop and a fixed route and other
car needs to stop when it passes
- 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.
- 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.
- Use some simple AI to control the cars to stop and to drive
- 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.
- Other non-trivial examples: the following techniques are interesting
but themselves are not trivial.
Examples
- Use some BSpline to contruct the path for birds and humans but to
make them look great is hard
- 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
- 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.
- 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.
- 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.
- 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.
- 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
|