CSE167FinalProjectF12

From Immersive Visualization Lab Wiki
Revision as of 14:11, 13 December 2012 by Jschulze (Talk | contribs)

Jump to: navigation, search

Contents

The Bipolar Graphics Student (Eric Chung, Yixin Zhu)

2012-p7.png

Story

The scene is a desolated landscape desert. The main character is a bipolar UCSD student who woke up in the middle of the desert after a night of drinking in order to forget about how terribly he thought he did on the CSE 167 midterm. He is extremely bipolar and goes in and out of rage mode. When in rage mode, he utilizes the things he learned in CSE 167 and starts creating particle effects - or as we see it, blowing up things. He walks around looking for a way back to campus but all the way going in and out of rage mode in a random fashion - almost as if there was some user controlling his mood swings. When in rage mode, if he walks into a teapot, it will begin exploding, but if not in rage mode then nothing happens. Sometimes, due to his hangover, he imagines watching himself walk around in 3rd person. Surrounded by beautiful terrain, stuck in the middle of nowhere, and unable to control his rage, the UCSD student searches helplessly for a way back home where he can pick up his midterm and end his psychological torment.

Interactions

  • In normal mode, the user is able to move around the skybox with the w/a/s/d keys and jump with space. It can collide into various sized teapots but doing so will have no visual effects.
  • In debug mode, the user is able to move around the skybox with the w/a/s/d keys and jump with space. However, unlike in normal mode, when the user collides into a teapot, the collision will cause the teapot to explode.
  • In rage mode, the user is not in control of the character. When the character approaches the boundaries of the skybox, we, the architects, will automatically teleport the character back to the origin of the world and thus, saving its life.

Supported keyboard and mouse commands

  • w/s - move forward/backward
  • a/d - rotate left/right
  • space - jump
  • f - fullscreen
  • r - toggles rage mode
  • p - resets character position in world
  • h - enables toon shading
  • u - enables debug mode
  • v - change view
  • 1/2/3 - change terrain models

Technical effects

  • Procedurally generated terrain
  • Partical effects
  • Collision detection w/ bounding box
  • Toon shading

Creative focus

The creative focus of the project is to blow shit up. Specifically, we focused on user interactivity with the scene and ability to blow up randomly positioned teapots. The result of collisions will be beautifully crafted explosions. In addition, we added a skybox and terrain to setup a desert-like environment for the user. As for when the character is in rage mode, we emphasized on the lack of controls given to by the player. As a result, the whole scene becomes bloodshot red to represent the anger and frustration within the character.

Experience

We had a great time programming this project because we allowed our creative juices to flow by adding an arsenal of features. Initially, we planned our movement based on mouse control but later settled with w/a/s/d movements due to simplicity and time constraints. Most of our features described by the initial write up are implemented in the final version of our project.

Animal Maze (Amell Alghamdi, Kristina Pinkerton)

2012-p4.png

Theme and Story

Welcome to the Animal Maze! The baby animals want to play hide and seek with you today. They will all be randomly hidden inside the brick maze, hiding behind various trees. Use the mouse and keys to look and walk all around, they could be hidden anywhere. You better find them all before the time runs out or you will lose and the animals will be very sad and give you no confetti!

List of Technical Features in our Game

  1. Shadow Mapping: We implemented Shadow Mapping with two passes. The first pass renders the scene from the light’s point of view and copies it into a texture image. Then in the second pass we render from the camera’s point of view and send the texture matrix, texture coordinates, and texture image of the shadow plus other uniforms necessary for lighting, textures, etc. to render the actual scene.
  2. Particle System: We implemented a particle system that gave each particle a random bright colors and a slow velocity to resemble confetti falling when the player wins or findings an animal.
  3. L-System (plant): The trees in our scene are recursively generated using the L-System technique and randomly positioned throughout the maze.
  4. Procedural Terrain (maze): Our maze specifications are generated using a depth-first search to randomly break down the walls. We then use this data to build up the blocks of the maze in the scene.
  5. Collision Detection (walls-only): We used a simple collision detection algorithm to only compare against the walls of the maze, that consisted of checking the players desired location, converting it to the square in the maze and checking it against the blocked walls of that square.

An overview of our Creative Efforts

  • Creating original 3D animals and a girl avatar object with Blender. We have a little bunny rabbit, a crocodile, an elephant, a mouse, and pink pony. We built that girl in separate pieces so that she could be animated while she walks. Her feet and arms will move back and forth!
  • The game is set during a starry night within a brick maze. When you move around the scene the stars in the sky appear to be moving and sparkling setting a beautiful scene.
  • Adding important game mechanics such as a timer and a win condition. If you don’t find all five animals within the time limit you will lose and not get to see the grand finale!
  • We implemented randomness for the animal locations, and collision detection with the walls to make the game more difficult and realistic. With these to features our game is different every play and keeps the player from cheating!

Keyboard Controls

W Move forward
D Move right
A Move left
S Move backward
Q Turn left
E Turn right
O Toggle shadow mapping
T Toggle view point
ESC exit game

Robot Defense (Kuen-Han Lin, Matteo Mannino, Ashish Tawari)

2012-p15.png

Background Story

This augmented reality driven experience places you in an awkward situation. Martian robots have worked up the nerve to inhabit your desktop. It all has fallen onto you to do what you born to do, and blow those sons of guns back to the dark side of Jupiter. Right-click fires your proton bomb while aiming with the mouse, and the number 2 key whips out a flashlight to go dark and turn off the lights in your virtual room. (1 switches back to ambient) Just when you think you've seen it all, you may look to your right and find out that, my god, it wasn't a Martian on your desktop - it was your best friend at the keyboard! That's right, this is a two-player experience, fun for whole family!

Project Description

This project features a 3D point cloud mesh reconstruction through Delauney triangulation to model a common desktop. The point cloud from this desktop was obtained from a camera sensor, and the associated camera images have been used to texture the mesh. Rectangle-to-sphere and sphere-to-point cloud collision detection is done to detect bullet collisions with the desktop and the animated player 2 controlled robot. The point cloud also has a bounding box around it for efficiency. The explosions are rendered as particle effects, where the particles are billboarded texture sprites with fire, smoke, and a shockwave. A spotlight is added for an eerie effect, and the whole scene is covered by a galaxy sky box that is literally out of this world.

Our creative efforts were mostly focused on making the desktop mesh look fairly good, and automatically generated from point cloud data. The desktop we used had books, papers, and obstacles on it for the purpose of interesting geometry and height variation. Much time was also spent on tuning our particle explosion effects. The game loop and controls took some time to get the right feel, and various algorithms – such as triangle detection, binary space partition trees, and plane detection - were tried for collision detection with the mesh before settling on point cloud collisions with a bounding box. This provided the most efficient solution, presumably because comparing points is easy, and since it is done in a linear array we minimize cache misses. In contrast, comparisons and calculations for triangle collisions simply took longer due to all the calculations, and the BSP trees with either collision detection was overkill for 400 points that have easy calculations.

Features

  • Point cloud, box, and sphere collisions
    • Point cloud collisions with spherical bullet projectile
    • Box collisions (Bounding box on top of mesh) with spherical bullet projectile
    • Sphere-to-sphere collisions with robot to projectile
  • Mesh construction
    • Delauney triangulation
    • Matching two meshes
  • Particle effects
    • Explosions and smoke effects

Controls

  • Mouse: Aim Gun
  • 1 to toggle ambient light mode
  • 2 to toggle dark flashlight mode
  • Right click to fire
  • 'J' to rotate robot left
  • 'L' to rotate robot right
  • 'I' to move robot forward