Technical Challenges

Making a cool looking town needs to be more than just an art project!

You must implement some "technical challenges" (since that's what the course is really about). A technical challenge is something that is not just hard to implement, but also requires you to learn and think about some graphics topic.

Some challenges (the numbers are "hardness levels" explained later):

 

If there's something that you want to do that you think is a "technical challenge", but not listed, please ask. We may extend this list at a later date as we think of more ideas.

Items with a * mean that we may not be able to help you with it, so doing it will require some bravery and determination.

The numbers are a hardness scale (1=easier, 3=hard).

You must attempt to do "enough" hardness points. You must attempt at least 2 points for a C, 4 points for a B, and 6 points for an A. (3,6, and 9 for groups of 2). Note: to call something an attempt, you must have at least signs of life from it. You can't say "I attempted to do subdivision, but I failed before I even wrote a line of code."

While attempting enough points is part of the minimum requirements, your grade will be based more on what works. Generally, you will get the number of hardness points that you've attempted, but we might give you more if you do a particularly good job.

It is important that if you do something, you are able to show it off in the demo/make a picture for your album. So if you model some nice object, make sure there's a fast way to get the camera to go there. Or, if you do subdivision, show different levels of the same object so we can tell you really did the subdivision.

 
 

Skybox (1)

Make a textured sky - have clouds and stars (at night).

 

Billboard Object (1)

Model a complex shape by using a flat object that moves to face the viewer. Nice trees can be done this way.

 

Sweep Object (1)

Model an object by sweeping a shape along a path. A simple example of this is a cylinder (circle moving along a line) - but to really do this you should be able to take a more arbitrary shape (a polygon or curve) and move it along a more arbitraty path.

 

Dynamic lights (1)

Consider putting a flashing (or even spinning) siren on a police car, or sun rises and sets...

   

Complex Procedural/Parametric Model (1+)

Generate complex shapes using a procedure. You might make buildings with lots of columns, tractors with many connected robot arms, human bodies with head, torso, arms, each is represented by a box or an ellipsoid.
 

Environment Map (1-2)

Use environment mapping to create a reflective surface.

Shadow Mapping (2)

Implement shadow mapping (drawing from the light source and seeing what is visible to determine what gets lit).

 

Subdivision surfaces (3)

Implement subdivision surfaces to create smooth objects in your system. Be sure to have a way to show the original model, as well as the smoothed one.

For extra challenge, implement a non-interpolating scheme (like Catmull-Clark) and use exact evaluation.

To get full credit for this you must actually make an interesting object with a smooth surface.

Note: if you are a group of 2, you can count subdivision as a technical challenge twice if you implement both an interpolating scheme (e.g. modified butterfly) and an approximating scheme (e.g. Catmull-Clark) and provide some comparison.

 

Parametric curved surfaces (3)

Implement Bezier or B-Spline patches and use them to model some smooth object. Note: to get full credit for this, you need to have a more interesting object than just a patch.

 
   

Particle Systems (1-2)

Model a complex, moving object as a set of little particles. You can make fireworks, rain, snow, fountains, fire, ...

 

Fractals (2)

Implement fractal geometry (a random kind of subdivision) to make some complex shapes like mountains or trees.

 

Fake Physics Effects (1-2)

Use some kind of math techniques to make "physical" animations (like flags waving or water ripples in a pool, or flames). Rather than trying to simulate the physics, experiment with using procedural "hacks" (a waving flag can be a sine wave ...).

 

Very Cool UI (1-3)

The UI of the example system isn't that great. Tweaking the flying controls will help, but isn't a technical challenge. Big improvements are possible. Imagine, flying controls that avoided going through buildings, a navigation system where you clicked on a map and were driven/flown to the appropriate place (without flying through objects), ...

You could even imagine more of a user interface that allowed you to make a game of it. Race the cars, deliver pizzas, ...

 

Very Complex Behaviors (1-3,*)

Some behaviors are so complicated that they constitute a technical challenge. For example, my example driving behaviors is a technical challenge.

Updating my traffic system so that cars stop at the stop signs qualifies. Or cars don't drive through one another, but slow down and wait behind other cars.

 

Complicated Animations (2-3,*)

If you had walking people on the streets (my town has no sidewalks) or ...

 


 

Again, this list is just a bunch of recommendations. If there's something you want to do, ask!