UCSD Graphics group

CSE 167 Final Project Summaries

This web page lists all final projects with short descriptions. These projects will be presented in CSE conference room 1202 on Thursday Dec. 10th between 3 and 6pm.

upham_trezzo.jpg Jennifer Trezzo, Steven Upham

In our project, we created a room in which the user controls a car. The car detects collision with the room's walls, and will bounce off of a wall (in the direction of the reflected vector of the car's movement) if the two collide. The car can also be ordered to follow a track around the room instead, which was generated using Bezier curves. The room is textured, and a per-pixel lighting shader was written to support two lights: one point light that serves as a table lamp, and one spotlight that serves as the car's headlight.

Aqurium_-_Eugenia_Leong_--_Bonnie_Han.jpg Eugenia Leong, Bonnie Han
In this project, we have constructed a fish aquarium environment utilizing techniques acquired from our previous projects in CSE167. Fish, rocks, and other decorations in the tank are created using bezier curves. Scene graph is utilized to implement animation and to organize the scene. A fractal terrain is used for the bottom of the aquarium to model a bumpy sand terrain. Per pixel lighting is used to illuminate the aquarium. Keyboard command 'g' toggles between per pixel lighting and fixed function lighting. Fish's movements follows a Bezier path that is calculated dynamically. A virtual trackball can be used to view the aquarium from different angles.
my_pham_nam.jpg My Pham, Nam Pham
For our final project we implemented an aquarium with a swimming fish and some decorative objects. We used Bezier surfaces to create the aquarium floor and the fish body (actually the whole fish is made up of multiple Bezier surfaces). We used an L-system to create the ornamental ferns, and bump mapping/blending for the fish skin. We originally planned for the fish to swim freely and be more interactive with the user, but time ran out so we only got it to swim around in circles. A key stroke input is supported to change the skin texture of the fish for demonstrating bump mapping/blending. The fish was created with a scene graph so all components would swim together (naturally!) but with independently moving parts like fins and tail. Two simple (LINE) ferns were created with slightly different L-System production rules and rendered in different colors. Other techniques from the class such as a Bezier curve rotated around the Y-axis was used to create the sunken vase on the aquarium floor and the table top the aquarium sits on. Two bluish white lights were added above the center back and the left corner of the aquarium.

CSE167DavinRotkinScreenshot.JPG
Seth Rotkin, James Davin The two of us looked over the list of advanced rendering techniques and decided to focus on Bump Mapping, moving along a Bezier-defined track, and Toon Shading for our final project.

We set out to design a suitable demo for displaying all three of techniques seemlessly together in one scene. Inspired by the video game Mario Galaxy, we developed the concept for a 3D world where a character flies between the planets of a solar system. The program will combine the words of cartoon and reality by having a toon shaded character exploring a realistic bump mapped environment.

Bump Mapping will be applied to the planet Venus in the star system. The other planets will be textured normally.

Toon Shading will be applied to the character that is exploring the environment. This will give the feel of a cartoon character existing in the real world.

Bezier curves will define the path that the character follows on his flight through the environment. The curves will be designed to give the impression that the character is being guided by the gravitational pull of the various objects in the environment.

There will be four camera modes, each of which will highlights one of the rendering techniques used.

Camera mode #1 will be a pulled-back view of the whole environment, and it will be easy to see how the character moves along Bezier-curve tracks.
Camera mode #2 will be 1st person mode. The character will no longer be visible but the camera will be flying through the environment. Using trackball functionality, the user will be able to look around as they are flying, allowing for an up-close inspection of the bump mapped objects.
Camera mode #3 will be 3rd person mode. The camera will move along with the character but pulled back by a variable radius and always pointing at the character. This is a cinematic mode.
Camera mode #4 will be a fixed position on the bump mapped planet. This will allow the view to focus on the bump map shader.

There will also be two character modes.

Mode #1: A classic teapot. This shows off the toon shading well because it is a smooth, curved surface.
Mode #2: Darth Vader's Tie Fighter. This shows off how the toon shading deals with multiple surfaces at right angles to each other.

Keyboard commands:
1: Camera Mode 1
2: Camera Mode 2
3: Camera Mode 3
4: Camera Mode 4
t: Load Teapot Model
v: Load Vader Tie Fighter Model
g: Toggle advanced rendering (bump mapping and toon shading) on/off
l: Toggle Bezier Curve line display on/off

Moloko_phi_nichol.jpg
Moloko2_phi_nichol.jpg
Phi Nguyen, Nichol Bernardo

The scene is entitled Moloko, which is a ficticious word for “milk” taken from Anthony Burgess’s novel “A Clockwork Orange”.

The main star of the scene is a bear sitting alone in the snow. It is sad because of global warming and people have invaded into its space, which is the disco place.

It had a scarf on, but since it became too hot, it ditched the scarf.

We decided to make our scene a little along the season, so we implemented a particle system to simulate falling snow and pretty fireworks.

The particle system has physics simulation such as wind and gravity. Disco lights can be seen as the walls change as the disco lights shines on it.

The bear and the words are toon shaded to make it artistic. We implemented displacement mapping for the floor to make the bear appear as if he is sitting on a pile of snow.

If we pressed the ‘d’ key, then the displacement map will be toggled on and off.

If we pressed ‘t’, then the bear/words will be toggled between toon shaded and icy looking.

Additionally, we created a burberry scarf out of surface patches along with per pixel shading on the walls to make it fit the theme.

If we pressed ‘g’, then the wall will switch between per pixel lighting and regular.

If we press ‘p’, then the snow particle will look more mystic like as in the second picture, but this is mainly for flashy effects we were tweaking and can’t decide on which one to pick.

walle_amy_michael.JPG Amy Cheng, Michael Chin

Our final project portrays an upgraded Wall-e enjoying a day in the park. With his new antigravity booster, he is able to zip through the sky, while taking note of the grassy terrain and beautiful Christmas trees. Walle's trajectory was accomplished with a Bezier path through space. We used a grid of Bezier patches to implement the landscape and populated it with fractally generated trees of various shapes and sizes. The fractal trees can be modified in various ways with keyboard commands. For example, the denseness of the trees, height, and the angle that the branches deviate from parent branches can all be changed in real-time.

These are the following keyboard commands that alter the fractal trees:
'l' - length of branches
'e' - lengthfactor - amount that length is altered during each recursion
'a' - angle - child branch's angle of departure from parent branch
'n' - anglefactor - amount that angle is altered during each recursion
'd' - depth of recursion for tree
'c' - number of children
'r' - rotate - amount branches are rotated about their parent branch
'o' - rotate factor - amount that rotate is altered during each recursion
'+'/'-' increment/decrement

heather.jpg Heather Ruderian, Willy Koswara

The final design for our project consists of a hovering mechanical scout exploring a landscape populated with trees created using fractal generation. The environment surrounding the scout and the trees is implemented as a skybox that depicts a mountain landscape.

As in our project proposal the scout is able to move through the landscape and can be rotated by the user. However, we did not implement the light proposed in our preliminary design as it did not seem to add much to the scene without requiring the overall light conditions too be too dark.

One of the issues we ran into with the environment map and the fractal trees was that reflecting complex trees caused a noticeable slowdown in the performance of the program. Implementing object culling would probably help significantly but due to time constraints we were unable to implement this solution. In order to keep the overall performance at an acceptable level and also allow for more complex trees we decided to implement a key command that would toggle the reflection of the trees in the environment map.

The forest of trees that we planned for has been limited to 5 trees for the same performance reasons described above. The trees are fractally generated and can be made more or less complex using the key commands. To prevent the user from making the trees so complex the program slows down to an unmanageable level we are only allowing the user to choose between two levels of complexity. The trees incorporate some randomness into their generation to prevent the overly symmetrical look that otherwise occurs with fractal generation. The trees are also textured with bark and leaf textures as appropriate.

Key commands implemented:

w : move scout forward
s : move scout backward
a : strafe scout left
d : strafe scout right

i : pitch scout upward
j : pitch scout downward
k : yaw scout to the left
l : yaw scout to the right
u: roll scout left
o : roll scout right

t : toggle reflection of trees
v : toggle environment map

G : generate complex trees (regenerates existing trees at high complexity level)
g : generate less complex trees (regenerates existing trees at low complexity level)

avery_bulner.jpg Christopher Avery, Derek Bulner
CONTROLS:

1/2 keys: Phase between regular and "toon" shaded dimensions.
0 key: Toggle detection boxes.
Mouse: Moving the mouse moves the ship, clicking fires the ship's weapons.
Spacebar: Fires the ship's weapons.

In AD 2101, war was beginning. This war was unlike any other in Earth's history, as only by engaging this threat in the cold vacuum of outer space can the safety of earth be assured. The extraterrestrial threat is not so easy to repulse, as they exist in varying phases between two dimensions, and when out of phase of their attacker, cannot be harmed. Only one ship has been built which can similarly phase between the two dimensions, and it is the last hope for humanity. The ZIG is ready for take-off, for defeating the enemy menace, for great justice, and for you, the player, to pilot her in Earth's defense.

Our project is an upwards-scrolling spaceship shooter. Using custom shaders, we hope to create a sense of the player being able to go back and forth between a realistic universe, and a toon-shaded universe, with enemies in each which can be attacked. Enemies approach the bottom of the screen following bezier-curve-produced pathing, which must be destroyed in order to summon forth Cats, the nefarious mastermind of the invasion, who's ship is a L-systems fractal which is demolished as it is attacked. All enemies implement bounding boxes to determine collision detection.

We've created a simple visual experience with a game which is not so much challenging or demanding of the player as it is engaging. By using simple mechanics and a archetypical plot, we hope to throw the viewer into a familiar genre with a minimum of difficulty and to promote immediate appeal for what we have done without producing confusion or requiring sermonizing over the intricacies of our fantasy universe.

conway_clyne_liu.jpg Patrick Conway, Jeff Clyne, Jingbo Liu

This scene depicts two spaceships dogfighting above a choatic terraformed Mars terrain. The theme of this scene is chaos, or randomness, as everything in the scene has been randomly generated in some form. The terrain and trees dotting the landscape are both fractal and random in nature, and the paths that the spaceships trace through the sky is also determined using a psuedorandom algorithm.

The UFOs are defined by surfaces of revolution, and follow a twisting, turning path over the terrain as they dogfight. Their paths are random, however the choices they make in their flight are weighted according to their current position and the position of their foe. The UFOs are guaranteed to never collide, but will be pepretually chasing each other in a complicated dance. The UFOs have been textured with a scratched, rusted metallic texture.

The terrain of Mars is a fractal terrain that was generated using a midpoint displacement algorithm. The terrain features high mountainous regions and valleys for the UFOs to circle above. Randomly distributed around the terrain are randomly placed fractal trees.

The scene can be manipulated with the mouse by rotating around with the trackball. Additionally, the camera can zoom in or out to take a closer look at the UFOs or the rocky Mars landscape below.

li_gramm.jpg Johnny Li, Timothy Gramm

"WASD" strafes. "QE" turns left and right.

'1' toggles toon shading
'2' toggles wire frames during collisions
'3' toggles drawing Bezier paths
'r' lets you express your frustration.

Our project used: Toon Shading, Collision Detection Bounding Cubes, and Bezier Paths for Objects.

You are the dean of Mars University. Amateur fraternity members from Robot House have unleashed experimental substances known as Woy spheres that travel erratically throughout the school. These Woies interact only with organic matter (i.e. only you). They pass through inorganic matter seamlessly, a perfect situation for the robot frats. You can move around and try to stop them, but you'll constantly be bombarded by the Woies, and even if you do get to the robots you are a mere fleshbag and are too weak to stop their crazy antics. In the end, you can only curse their name.

wang_holman.jpg Haili Wang, Karla Holman

Our CSE 167 final project is a game that is set in middle of a beautiful moon setting over water. To add to the scene we have created a moving body of water. The water is built from Bezier Surfaces, and to create a wavy ocean we derive our control point’s y-values from a random number generator and regenerate the surface. There are two ways to view the scene: texture enabled and mesh enabled. This option can be toggled using the ‘m’ key. With mesh enabled, the original water texture is replaced by a mesh that reveals more detail about shape of the surface. Once the waves are turned off using the ‘o’ key, the water is frozen in its current position and a small ball enters the scene. This ball makes use of environment mapping to reflect the sky above it. Our game utilizes the ThinkPad's built in accelerometer to control the movement of the ball. Simply tilting the laptop one way or another will move the ball along points defined by the Bezier Surface, so that the ball appears to float over the water.

chyau_spangler.jpg Stephen Chyau, Jason Spangler

Originally we started off wanting to create a robot that performs various dances (i.e. press ‘R’ to do the “Robot”). However, we diverged. Our program uses piecewise-Bezier curves which the camera travels along. This provides a concert like effect encircling Superman letting you be able to see him from different angles. The snow is our particle effect and with the help of GL_FOG makes the scene look very snowy. Superman is sporting a piecewise-Bezier surface with a ppm to texture it along with the much needed Superman “S”. When the user presses any key (except for certain numbers) the camera will move along the predefined curve. Pressing ‘1’ or ‘0’ rotates the body around the origin. Pressing ‘2’ makes the arms explode (he is Superman so of course the arms come back)! Pressing ‘3’ makes Superman go into flying mode. Pressing ‘4’ makes him fly forwards and ‘5’ moves him backwards! ‘6’ and ‘7’ rotates the right and left arms respectfully to go into super speed! Overall, a huge change from a dancing robot but with snow and a cape came this great idea!

sebastian_obenberger.jpg Jonathan Sebastian, Jason Obenberger

STORY:
Professor Jurgen Schulze was working one day in the StarCAVE at UCSD when he was sucked into an alternate dimension! A rocket ship was conveniently nearby, so he took the controls, determined to escape!

CONTROLS:
hold 'i': speed up
hold 'k': slow down
hold 'j': strafe left
hold 'l': strafe right
press 'w': active wire frames
press 'f': deactive wire frames
press 'r': generated new fractal terrain
press 't': reload the last fractal terrain
press 's': toggle shaders
press 'p': toggle pause (Bezier curve movement)

EFFECTS:

  • object & camera movement along a 3d-Bezier curve
  • per-pixel shading with multiple lightsources & textures
  • fractal terrain

Noteworthy things:

  • Bezier highway loops on itself
  • camera stays parallel to tangent vector of current point on Bezier curve, with scene UP vector moving with respect to the curve (camera tilts left and right)
  • ship movement restricted to width of Bezier highway
  • looping background music
  • loop-d-loop (allows upside-down movement) on the Bezier curve, without spatial artifacts due to UP vector
  • hovering lights across the Bezier highway
  • lights (the hovering objects), the lights themselves, and the terrain are all limited with respect to the ship's position (a form of culling)
  • 3d models generated in 3DS Max
  • Rainbow Sky (atmosphere)
  • Rainbow Road =)
levine_baumgart.png Eric Levine, Paul Baumgart

Canyon Pilot

Storyline: High over enemy territory, your jet is attacked by an enemy fighter. You dive down into a canyon to avoid the fighter, and manage to shake him off your tail. But the enemy's laser cannons surround the canyon - if you fly too high, they'll mercilessly blow you apart. How long can you keep your cover without crashing into the canyon walls? How long can you survive?

The game begins with an intro sequence: an enemy fighter engaging your plane. You dodge their lasers and dive into the canyon. The two airplanes follow separate piecewise Bezier curves for this animation.

The player controls an airplane that flies through an infinite canyon, using the keyboard arrow keys. The objective of the game is to pilot the plane through the canyon as long as possible without crashing.

The airplane is a 3d model of an F-22, with a material that gives the appearance of radar-absorbing paint. The camera follows the plane.

Per-quad collision detection is implemented for three points: the wing tips and the nose of the plane. If any of these points collide with the ground, the plane explodes.

The canyon is constructed on-the-fly, in a separate thread, from a piecewise cubic Bezier curve. The curve determines the path of the canyon. In order to ensure a smooth path, the piecewise curve is C1 continuous. A height map is generated based on the path defined by the curve. The height map is perturbed using Gaussian-distributed random noise and fractal terrain generation techniques in order to create a realistic appearance for the canyon. The canyon is textured, and this texture is modulated with colors depending on the height level in order to create geological layers. As the plane flies through the canyon, the canyon gets increasingly narrow, making avoiding a crash harder.

A sky box forms the backdrop for the scene.

The lasers are drawn on the screen using OpenGL?'s line drawing functions.

The player's score is calculated based on the amount of time before the plane crashes. A high score is maintained in a file.

Below is a summary of the technical features included in this project:

  • Per-quad collision detection
  • Piecewise Bezier curves as paths
  • C1 continuity
  • Sky box
  • Fractal terrain generation
  • Height maps

Controls:

  • Keyboard arrow keys/,aoe: up/left/down/right
  • Space bar: run game at double speed
  • p: pause the game
  • t: toggle drawing red paint upon collisions
nguyen_bai.jpg Vu Nguyen, Shin-Ping Bai

I. Theme and story Our theme is a UFO spying the Earth. The UFO travels around a region. The user will play a role as an alien. The user will be able to control the UFO with directional buttons from keyboard. With Up, Down, Left, Right buttons the user can move the UFO forward, backward, left (horizontally) and right (horizontally). The user will use mouse rotate the camera view.

II. Rendering effects

Here is the list of effects we will implement:

  • Piecewise Bezier surfaces (for the region surface)
  • Toon shading on some the UFO
  • Shadow mapping

III. Artistic effects

Most of the objects will have texture and the grass texture will be applied to the street. Buildings are applied textures. We will have a big skybox to wrap around the area.

IV. Keyboard & mouse commands

Keyboard commands:

U	Move camera position up (vertically)
J	Move camera position down (vertically)
1	Toggle show shadow map only/show shadow map with scene
2	Turn of shadow map
3	Enable/Disable Shadow mapping
4	Enable/Disable Toon shading
A	Move UFO to the left
D	Move UFO to the right
W	Move UFO forward
S	Move UFO backward
Up	Move camera forward
Down	Move camera backward
Left	Move camera left
Right	Move camera right

Mouse command: We can use mouse to rotate camera view.

Cheang_nguyen.jpg Guillermo Cheang, Lynn Nguyen

For our final project, we constructed a courtyard scene. It is in first person so we can move about the courtyard as though we are walking through it, and mouse movement controls the camera angle. The courtyard is encircled by models of buildings which we loaded into the project. Bump mapping is implemented to make the courtyard ground look more realistic. At the center of the scene, we have a fractal tree surrounded by benches. Collision detection is used in our scene so that the camera will not run through objects.

Keyboard controls:

w - move forward
s - move backward
a - move left 
d - move right
p - bump mapping 
c - view courtyard from birdseye view
t - toggle collisions

Clicking and dragging will change direction of camera view

tim_jeff_final.jpg Tim Martin, Jeffrey Lu

In our project, we created a grid of corridors using technical features including per-pixel illumination with multiple light sources with texture mapping, bump mapping, and piecewise Bezier surfaces patches.

For our Bezier surfaces we made corridors and intersections alternating in a 4x4 grid. The dome intersections use a dome texture while the corridors use a repeating cobblestone texture. In addition to the cobblestone texture on the walls of the corridor, we did bump mapping on cobblestone texture to give it a 3D effect on the 2D texture. Finally, in the dome intersections we use lights to illuminate the dome and the nearby surroundings. To allow users to fully see the features of the 3D scene, the cameras location and look at point are easily movable with the mouse and keyboard.

Mouse: Hold click and drag – drag the camera around, moves as if dragging scenes

Keyboard:

WASD – for controlling the movement of the camera
R – for moving camera straight up
F – for moving camera straight down

G – turn on main shader (turns on bump mapping, textures, and per pixel illumination)
B – toggles bump mapping (only works with main shader on)
M – toggles plain material shader
vijay_echols.jpg Sid Vijay, Nicholas Echols

Our project is a scrolling space shooter game very similar to older 2D games such as Raiden, Aegis Wing but made for 3D. You are placed in the role of a pioneering space captain navigating through regions of space neighboring his home planet while avoiding the numerous obstacles in his way. You are to navigate this area of space and attempt to avoid asteroids or never make it back to your home alive.

We have tried to realistically simulate the lighting effects of stars on all of the objects in the scene by using Phong shading with multiple lights, point and spot, and textures. Furthermore, the asteroids are made out of Bezier surfaces consisting of two patches, are correctly bump mapped and they will float around set trajectories in space. They are also randomly generated as you progress to keep survival from being predictable. The model for the ship were downloaded from a free site and used the textures from free photo libraries. Since the world of gameplay contains only objects visible in the scene, frustum culling is used. We have implemented key controls and collision detection to facilitate gameplay.

The important keys are:

W – move forward
S – move backwards
A – move left
D – move right
Space – fire

G – toggle Phong Shader
B – toggle Bump Mapping
V – toggle Collision Detection

Good luck, you're going to need it.

kemper_cary_zhao.jpg Stephan Kemper, Ryan Cary, Jason Zhao

A Bloody Mess

Controls: To move around, standard fps controls are used:

mouse - control looking angle
Left mouse button - fire
w - walk forward
s - walk back
a - walk left
d - walk right

To toggle the effects:

v - enable/disable environment mapping
l - enable/disable shadow mapping

The player is suffering from amnesia; he has somehow travelled through a wormhole and finds himself in an alien location. In the alien location, an alien (a metallic ellipsoid) hovers about ominously. The player has his trusty GLOCK 23 with him, though, so there's plenty of opportunity to see what colour blood this shiny alien can splatter on the walls.

We will have implemented the following features:

Collision detection/blood splatter decals(Ryan Cary):
If the alien is shot, blood will splatter on the floor and walls behind it. If the player shoots the wall, a hole appears.

Shadow Mapping(Stephan Kemper):
The light on board the alien ship provides an excellent setting to demo shadow mapping

Environment Mapping(Jason Zhao):
The alien will be entirely reflective, showing the world around it as it moves.

shen.jpg Jimmy Shen, Matt Shen, EJ Moore

The scene is a museum room with four walls, stone columns that separate a sky-painted roof from firey marble floors. On the walls are paintings from impressionists, Renaissance, and modern artists. With the modern artists works, a cartoonish teapot dangles in mid-air to describe the age of post-modern art. Vases and and sculptures also adorn the floors in the display as three- dimensional expressions of humanity.

In order to reflect the encompassing nature of art in the history of humankind, a reflective sphere held up on a pedestal near the ceiling brings all the works of art together in close proximity.

The visitor may walk around the museum using the wasd keys as in video games and r and f for moving up and down, respectively. The capital letters B, T, and E turn on bump mapping, toon shading, and environment mapping, respectively while the corresponding lower-case letters turn them off. The visitor may also turn left, around, or right with the 0, -, and = characters.

mambrini_perez.png Andrea Mambrini, Sebastian Valenzuela Perez

In this project we have constructed an atrium with some trees inside it. Trees are real-time rendered recursively and randomly. The result is that trees are different every time we run the scene again. The color of the branches and leaves shade from brown (for the trunk) to green (for leaves). To improve render speed the resolution of the cylinders decrease from the trunk to the leaves. For building and sky we use textures. It is possible to explore the scene moving the position of the observer using 'w' and 's' to move forward and backward and the direction of observation using keys 'a', 'd' to move left and right and 'o' and 'l' to move up and down. Shadows are rendered using shadow maps and can be turned on and off using the key 'h'.

doo_xiao.jpg Daniel Doo, Alvin Xiao

The Robot That Could

Theme:
We created a robot that dances based on a set of predetermined dance moves. The robot is placed in a room setting, created through the use of texture mapping three walls, a floor and a ceiling. The room is occupied by the robot, along with various other objects such a table with things on top of it and some objects just for fun to show the different shaders. We have a point light source and a spot light attached to the robot. Keyboard input will cycle through predetermined dances or motions that the robot will be able to perform.

Story:
The robot is preparing for a dance competition. He try a variety of moves to see what suits him best.

Artistic Efforts:
We will increase the aesthetic appeal of the robot in the room by adding toon shading to the entire scene and by making all of the objects a similar cartoonish color. The scene will consist of both 3D and toon-shading. For instance, the background and different objects will be normal, while the robot and objects such as balls will be in toon-shading.

Specific Rendering Effects:

  • Scene Graph To place objects & robot around the room, but mainly used to coordinate the robot's dances and movements
  • Bezier Curves To create complex figures such as bowls, vases, and other furniture.
  • Texture Maps To add textures to objects to make them more realistic.
  • Multiple Light Sources To add light and to show shading. Point and spot lights will be used.
  • Toon Shading Adds visual and artistic effects to the scene.
  • Phong Shading to make objects look nicer
george_gross.jpg Will George, Robert Gross

Island of Mars

Technical Description:
Our project is an outdoor landscape environment scene. The scene incorporates a couple of floating islands with shiny spheres that reflect our environment map. The environment map uses cube mapping and per-pixel shading. The skybox that encapsulates the scene matches the environment map for aesthetic appeal. The islands are generated by fractals using “Diamond Square” algorithm, also known as the midpoint displacement algorithm, combined with bit masks to make the shapes we desired for each of the floating islands. The amazing textures were chosen by professionals for maximum awesome. The trees that appear on the islands are humble OBJ models with lava textures to create sweet fire trees.

Practical Description:
The entire scene can be thought of as a Martian garden decoration owned by only the highest of high class Martians. Most of the cost comes from the decorations ability to float above the planet’s surface and the cost to create shinny balls on Mars. Some cheap knockoffs have been created that never manage to reflect the environment as well as the more expensive models.

Things the user can control:
1. Pressing the “E” key will toggle the environment map on and off
2. Pressing the “M” key will display the height maps used for the islands

Once in height map mode, the “1”, ”2”, ”3”, and”4” keys toggle between the different maps for the big and little island top and bottom:
1) “1” – Big island bottom
2) “2” – Big island top
3) “3” – Little island bottom
4) “4” – Little island top
Pressing “P” returns to the island scene.

3. Moving around the scene with “W”, “A”, “S”, and “D” is possible:
1) “W” – move foreword
2) “A” – move left
3) “S” – move backward
4) “D” – move right

4. The mouse has “Trackball” functionality.

jose_leong.jpg Emmanuel Jose, Alan Leong

Our theme as of right now is that we have a robot/guy playing a game that involves throwing a ball into a set of cups either with himself or with a friend. It's during a little get together / party with friends.

We have created the toon shader as well as the per pixel shader for the multiple light sources. We have one of the light soures as a lamp already set up and we have a table set up. We also have textured walls and floors as well.

The screen shot shows 2 objects, the table and lamp, plus our person/robot. The lamp was made from bezier curves as we did in project 6. We plan on changing wall and floor textures later to better represent the theme that we are going for which is more of a house living room.

LanJeanne.JPG Lan Quan, Jeanne Lee

For our final project we decided to portray an ant hill scene. Under the ant hill there is a tunnel that leads to the Queen ant’s lair. The grass and the ant hill was constructed using Bezier surfaces and the tunnel underneath is created using a Bezier curve. Displacement mapping on the tunnel can be enabled and disabled by pressing the ‘m’ key. We have ants and a helicopter that are moving along a Bezier curve. The ants and the helicopter were implemented using Bezier curves as well. Toon shading on the helicopter can be toggled on and off with the ‘n’ key. Pushing a, s, w, d, z, or x changes the view by moving left, down, right, up, zoom in, and zoom out respectively. Finally track ball is implemented into the scene.

huynh_vanoni.png Andrew Huynh, David Vanoni

Picture a lone survivor of a dangerous war that has ripped his world apart. Our hero, a penguin, the last of a mighty and powerful race hurtles through space seeking shelter, refuge, and some cheesy snacks.

Our final project scene consists of a procedurally generated planet that sits against a starry night sky. The planet is separated into 4 levels, ocean, coast, lush terrain, and mountains. The planet's lush terrain zone is spotted with fractal trees randomly dispersed across the planet. All of this is done in toon shading, modified slightly so that the world looks as if it was sketched. Zooming down from space following a bezier path, you'll fly past the planet's bump-mapped moon and once landed on the planet you'll be able to navigate the planet as a penguin using the keyboard W,A,S,D keys and the mouse. A scene graph is used to handle rendering and animation of the planet, trees and penguin. To handle drawing the huge amount of trees on the surface of the planet we use a combination of view frustum culling and a basic form of occlusion culling. The key 'T' can be used to toggle textures, 'O' toggles outlines, 'P' toggles the planet rendering, 'G' toggles toon shader, 'N' toggles planet normals, '<' zooms out of the planet, '>' zooms towards the planet, '/' stops the zoom action, 'B' toggles bump mapping of the moon, 'C' toggles the ability to see the bezier curve path, 'R' randomly generates another planet.

lirov-steffen.png Aleksey Lirov et al.

The balloonride program allows the user to control a camera flying over fractal landscape with fractal trees. The landscape is dynamically generated using the diamond-square algorithm. The randomly generated trees only appear between the water altitude and the treeline. The camera is controlled by click-dragging with the mouse and accelerating forward with the '+' button and slowing down with the '-' button ('0' will bring the camera to a stop).

The terrain is split into three altitude sections: water, treeline, and mountains. There are two light sources in order to more effectively simulate sunlight. There are three types of trees: evergreens, deciduous (fall-colored leaves), and leafless. The ballon is a glutSolidTeapot with gondola attached underneath.

lilia_michael0.jpg
lilia_michael1.jpg
lilia_michael2.jpg
Lilia Hu, Michael Choy

Plato's Allegory of the Cave Scene dominated by a single wall, mildly oblique. Figures (unseen by viewer) move past a light source, casting shadows on the wall.

We implemented bump mapping and shadow mapping, largely based on tutorials from www.paulsprojects.net. We combined the effects using multitexturing (ARB extension). We then added objects to the scene that cast shadows on the wall, but do not display the objects themselves. See our first screenshot for effect. We will attempt to implement a flickering light source, but have not done so yet.

To aid visualization of effects, we have implemented toggles for some modes:
'1' First pass only (from light's point of view, generating depth map). See screenshot2
'2' First and Second pass - Renders scene in low-light conditions (the "shadowed" state)
'3' Renders all three passes - shadows are seen here. See screenshot0.
't' Toggles the texture unit.
'b' Toggles the bump map.
'p' Pauses animation.

chandler_duran.jpg Jennifer Chandler, Jesse Duran

We built a roller coaster simulation in the night with tree scenery and colored spot lights. The rendering effects that we implemented were moving the camera along a path defined as a piecewise Bezier curve, fractal trees, and per-pixel illumination with multiple light sources and different light sources in combination with texture mapping. We have two Bezier curves representing the roller coaster track.

The camera follows along as though you are riding the roller coaster. The way we achieved this was to first move the camera onto the track. The center of projection was the midpoint of the two curves at that specific point. The direction vector is the current point to the next point on the curve. The up vector is the cross product from the next point on the outside track to the next point on the inside track and the direction vector to get it perpendicular to the track. For the roller coaster track itself, we drew a cylinder for each vector between every two points. For the scenery, we used a recursive fractal algorithm to build trees. The algorithm builds segments of random heights on top of each other, two are branches and one is a continuation of the trunk. It continues branching like that until a segment is less than the specified minimum and then leaves are drawn. We used a bark-like texture for the trees. And on those trees, we have different spot light colors (blue, green, red) from the ground illuminating up. We also add a ground with a ground-like texture. Keyboard commands is a pause button to pause the camere at a paricular frame with the 'p' key and use the 's' key to toggle the shader on and off.

prabhu_sirajuddin.JPG Pravin Prabhu, Syed Sirajuddin

My partner Syed and I are going to demo on a lab PC under windows. We implemented a scene which contains a pool table. The pool table has environment mapping which allows us to display reflective surfaces, has a collision detection scheme and physics simulation. We also put four holes on the table to allow the user to play by hitting the balls into the pockets. The attached image shows a working model of our project.

orbekk_tjerno.jpg Jørgen P. Tjernø, Kjetil Ørbekk

Space scene

Far far away, in a galaxy called the Beer Way, exists a planet called Meëer. Meëer is the home of the peacful humanoid people called the Loones. This is the story of a group of young Loones being abducted by the aggressive Gluck Gluck's in their shiny space ship.

Currently the space ship looks a little bit like a stone, and the Loones are nowhere to be seen, but we know that this is an extremely dangerous situation! We shall see the outcome of this after the last session of late night coding...

Keyboard commands:

     pause camera
  r         reverse camera path
  m         camera mode, alternates between reverse, stop and wrap
  +         increase camera velocity
  -         decrease camera velocity
  l         camera look mode (look at point | look in direction)
  b         enable/disable lightning
  v         enable/disable bump mapping
  c         enable/disable backface culling
  w         rendering mode (GL_FILL | GL_LINE)
  n         draw normals
  d         enable/disable display lists

Our animated scene features:

  • Terrain on the planet Meëer
  • The Gluck Gluck space ship
  • A starfield in the Beer Way galaxy

Our sci-fi effects uses these top modern* graphics technologies:

  • Bump mapping on the space ship (7 points)
  • Camera following a bezier path (7 points)
  • L-systems for plant generation on our planet (10 points)

*) All of them invented during the last 100 years.

Implementation details:
The hard parts of this project was the bump mapping and L-stystems. Our L System implements a parser for stochastic L systems and does some tricks to generate a more natural looking tree.

queen_mounzer.jpg Cassity Queen, Marc Mounzer

Golden Roller Coaster Park

Our project explores the mysterious Golden Roller Coaster as it travels around Golden Roller Coaster Park! The ride is housed within a mysterious enclosure that you can explore as you ride around. Our implementation utilizes toon shading, 3-dimensional Bezier curves and Bezier surfaces to create a smooth, relaxed feel for the environment. The camera can be set to move around the park, or to look around you while riding. Toon shading can be toggled on and off with the keyboard, and all surfaces can magically become wireframe triangles with the touch of a button!

etler_chen1.jpg
etler_chen2.jpg
Tim Etler, Yi Chen

We created a room of infinite proportions. It's a model room to show off a new property at infinite acres, where square footage is sold for the low price of $1 per 0 sq feet. The property is brilliantly lit by an infinitely large light source that casts a realistic shadow volume on the infinite floor. If the angle bothers you, just press 'l' to get a new perspective on things. Everything is even shaded for you using a nice metal effect so you can tell what is metallic and what isn't. Diffuse environment mapping also available as an extra. For companionship there is a complementary fractal fern that can change shapes in a button press. It's as easy as '1', '2', '3' (press those buttons to create a new procedurally generated plant). A word of warning though, the fractal fern is actually a vampire plant and casts no shadow. Fortunately as it has no teeth, it is harmless.

robert_lee.jpg Robert Lee, Mark Liwanag

The theme of our final project is the battle between two iconic science fiction worlds, Star Wars and Star Trek. The battle between these two worlds is occuring above a hostile and dangerous planet, but one that is rich with resources and essential to the ongoing battle between these two worlds. This planet is generated using fractal terrain. In this scene we have a borg ship that is generated using greebles. From the borg ship flys starships that follow a path set by a bezier curve to the surface to mine these essential resources. These starships are created using bezier surfaces. Our scene utilizes multiple cameras. One camera is used for a wide shot showing the borg ship some distance away from the planet. Another camera is used to show a close up of a spaceship scouring the planet in third person. Another camera shows the borg ship above the planet being mined. Camera views can be toggled with the use of a keyboard key.

barbour_dedeken.jpg T.J. Barbour, Joachim DeDeken

Newton's Cradle

This project is an interactive simulation of the classic “Newton’s Cradle” desk toy. Don’t want to waste a trip to the store to pick up a silly desk toy? Install it on your windows desktop instead! Users can marvel at the simple beauty of the cradle, giving them a glimpse into a stunning and realistic virtual scene. The accurate movement of the marbles will give users the feeling of looking at a real cradle on their computer desktop, which they can start and stop at any time. The beauty and realism of the virtual cradle will relax and amaze users. This project will also demonstrate several advanced rendering techniques. The Newton’s Cradle features a metallic set of marbles and rods which naturally reflect the environment around them. To simulate this effect we employed Environment Mapping using a cube map. The mapping was implemented in OpenGL & GLSL to give the reflective parts of the structure a projection of the surrounding background. Additionally we display the surrounding environment so that the user can see how it is accurately reflected upon the objects. Standard OpenGL? lighting, materials and shading are also used to give the geometry a more realistic and 3D look. Environment mapping can be toggled by pressing the ‘m’ key while running the simulation.

In addition to the environment mapping, the pedestal that the cradle sits on is a reflective surface. This surface reflects the cradle to give it the appearance of being on a reflective tabletop, adding to the realism. The core of “Newton’s Cradle” is the physics demonstrated by the colliding marbles. To demonstrate this we implemented a realistic physics simulation performing collision detection and calculation of acceleration based on wind resistance and gravity (a configurable value). Furthermore, the user can interact with the cradle to perform a nearly endless variety of simulations. A user can suspend the movement of the marbles by pressing the ‘p’ key which toggles a mode where the marbles can be re-located by the user. The 5 marbles are selected using the 1-5 keys and can be moved by dragging the mouse along the x axis. The user can re-enable the movement by pressing the ‘p’ key again.

nanne_fraser1.jpg nanne_fraser2.jpg Christian Nanne, Benjamin Fraser

In order to accomodate time we had to change the storyline a little bit. Although originally we were intending of recreating the last battle in Star Wars, due to time limitations we had to change our approach. Instead we created an alternate reality where the worlds of Star Treck and Star Wars join. In this animation the Klingons have joined forces with the empire and we created a small video of a battle between an X wing and a Klingon Ship d-7. Of course the X wing wins.

As technical aspects we included objects going through a Bezier curve, particle systems for explosions and in order to have random lasers fired we added collision detection for the lasers and the bounding sphere of the Klingon ship. Each time the animation might be slightly different depending on when a laser is fired towards the ship. If no laser makes contact with the ship the Klingon ship accidentaly crashes with the death star hahahahaha

  Attachment Action Size Date Who Comment
jpg Aqurium_-_Eugenia_Leong_--_Bonnie_Han.jpg props, move 41.9 K 09 Dec 2009 - 22:09 JuergenSchulze  
jpg my_pham_nam.jpg props, move 16.7 K 10 Dec 2009 - 07:17 JuergenSchulze  
jpg CSE167DavinRotkinScreenshot.JPG props, move 18.4 K 10 Dec 2009 - 07:21 JuergenSchulze  
jpg Moloko_phi_nichol.jpg props, move 20.9 K 10 Dec 2009 - 07:36 JuergenSchulze  
jpg Moloko2_phi_nichol.jpg props, move 13.1 K 10 Dec 2009 - 07:39 JuergenSchulze  
jpg walle_amy_michael.JPG props, move 5.2 K 10 Dec 2009 - 07:42 JuergenSchulze  
jpg heather.jpg props, move 36.6 K 10 Dec 2009 - 07:51 JuergenSchulze  
jpg avery_bulner.jpg props, move 10.5 K 10 Dec 2009 - 07:53 JuergenSchulze  
jpg conway_clyne_liu.jpg props, move 9.5 K 10 Dec 2009 - 07:57 JuergenSchulze  
jpg li_gramm.jpg props, move 21.2 K 10 Dec 2009 - 08:03 JuergenSchulze  
jpg wang_holman.jpg props, move 28.2 K 10 Dec 2009 - 08:07 JuergenSchulze  
jpg chyau_spangler.jpg props, move 32.1 K 10 Dec 2009 - 08:13 JuergenSchulze  
jpg sebastian_obenberger.jpg props, move 18.2 K 10 Dec 2009 - 08:18 JuergenSchulze  
png levine_baumgart.png props, move 111.2 K 10 Dec 2009 - 08:27 JuergenSchulze  
jpg nguyen_bai.jpg props, move 68.9 K 10 Dec 2009 - 08:34 JuergenSchulze  
jpg Cheang_nguyen.jpg props, move 39.3 K 10 Dec 2009 - 08:38 JuergenSchulze  
jpg tim_jeff_final.jpg props, move 53.9 K 10 Dec 2009 - 08:41 JuergenSchulze  
jpg vijay_echols.jpg props, move 10.7 K 10 Dec 2009 - 08:45 JuergenSchulze  
jpg kemper_cary_zhao.jpg props, move 26.7 K 10 Dec 2009 - 08:51 JuergenSchulze  
png mambrini_perez.png props, move 102.8 K 10 Dec 2009 - 08:59 JuergenSchulze  
jpg doo_xiao.jpg props, move 9.4 K 10 Dec 2009 - 09:01 JuergenSchulze  
jpg george_gross.jpg props, move 96.4 K 10 Dec 2009 - 09:08 JuergenSchulze  
jpg LanJeanne.JPG props, move 13.9 K 10 Dec 2009 - 09:20 JuergenSchulze  
png huynh_vanoni.png props, move 122.4 K 10 Dec 2009 - 17:10 JuergenSchulze  
png lirov-steffen.png props, move 70.3 K 10 Dec 2009 - 17:15 JuergenSchulze  
jpg jose_leong.jpg props, move 11.8 K 10 Dec 2009 - 17:22 JuergenSchulze  
jpg lilia_michael0.jpg props, move 9.8 K 10 Dec 2009 - 17:28 JuergenSchulze  
jpg lilia_michael1.jpg props, move 17.1 K 10 Dec 2009 - 17:28 JuergenSchulze  
jpg lilia_michael2.jpg props, move 1.2 K 10 Dec 2009 - 17:28 JuergenSchulze  
jpg chandler_duran.jpg props, move 30.8 K 10 Dec 2009 - 17:37 JuergenSchulze  
jpg prabhu_sirajuddin.JPG props, move 4.6 K 10 Dec 2009 - 17:42 JuergenSchulze  
jpg orbekk_tjerno.jpg props, move 7.0 K 10 Dec 2009 - 17:50 JuergenSchulze  
jpg queen_mounzer.jpg props, move 10.4 K 10 Dec 2009 - 17:54 JuergenSchulze  
jpg shen.jpg props, move 18.9 K 10 Dec 2009 - 20:17 JuergenSchulze  
jpg robert_lee.jpg props, move 10.4 K 10 Dec 2009 - 20:34 JuergenSchulze  
jpg barbour_dedeken.jpg props, move 18.6 K 10 Dec 2009 - 20:37 JuergenSchulze  
jpg etler_chen1.jpg props, move 27.4 K 12 Dec 2009 - 19:10 JuergenSchulze  
jpg etler_chen2.jpg props, move 22.4 K 12 Dec 2009 - 19:10 JuergenSchulze  
jpg upham_trezzo.jpg props, move 9.0 K 14 Dec 2009 - 03:47 JuergenSchulze  
jpg nanne_fraser1.jpg props, move 5.9 K 14 Dec 2009 - 04:57 JuergenSchulze  
jpg nanne_fraser2.jpg props, move 7.0 K 14 Dec 2009 - 04:57 JuergenSchulze  
r7 - 14 Dec 2009 - 05:00:32 - JuergenSchulze
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding UCSD Graphics TWiki? Send feedback
Syndicate this site RSSATOM