Difference between revisions of "Project1S17"

From Immersive Visualization Lab Wiki
Jump to: navigation, search
(Project Description)
Line 13: Line 13:
 
To better understand how the Oculus API works, we recommend [https://developer3.oculus.com/documentation/pcsdk/latest/concepts/dg-sensor/ this example from Oculus]. It is up to date for the current version of the Oculus SDK and can be very useful.
 
To better understand how the Oculus API works, we recommend [https://developer3.oculus.com/documentation/pcsdk/latest/concepts/dg-sensor/ this example from Oculus]. It is up to date for the current version of the Oculus SDK and can be very useful.
  
==Project Description==
+
==Project Description (100 Points)==
 +
 
 +
Download the starter code and get it to work with the Oculus Rift. (10 points)
  
 
Write a VR application for the Oculus Rift and the Touch controllers with the '''Oculus SDK in C++ and OpenGL''' (no Unity etc) with the following features:
 
Write a VR application for the Oculus Rift and the Touch controllers with the '''Oculus SDK in C++ and OpenGL''' (no Unity etc) with the following features:

Revision as of 13:37, 14 April 2017

Contents

Carbon Dioxide Removal Trainer

It appears that everybody can agree that our planet's climate is changing and we're observing global warming. What we can't all agree on is why it is happening, and what role CO2 plays in it. And whether or not humans are contributing to it. Regardless, we need to be prepared to do something about it once the truth comes out. Or else our beloved Pacific Beach turns into Atlantis. And the glider port turns into kite surf port.

If it does turn out that CO2 is the bad guy, we need to learn how to eliminate it. That's what the Carbon Dioxide Removal Trainer is for. And you are going to have to build it.

Everyone knows that a CO2 molecule can be turned into oxygen (O2) by eliminating the C. The way to eliminate the C is to aim two lasers at it, each of which alone can't harm the C or the Os, but in combination they turn it into dust (which has not been found guilty for global warming yet).

Starter Code

We recommend using the Oculus Minimal Example code from GitHub to start with. It's very compact but yet uses most of the API functions you will need. The code is slightly outdated though and will require some updating.

To better understand how the Oculus API works, we recommend this example from Oculus. It is up to date for the current version of the Oculus SDK and can be very useful.

Project Description (100 Points)

Download the starter code and get it to work with the Oculus Rift. (10 points)

Write a VR application for the Oculus Rift and the Touch controllers with the Oculus SDK in C++ and OpenGL (no Unity etc) with the following features:

  • The background is dark blue.
  • In front of the user sits a miniature factory (~1 foot wide), which emits a CO2 molecule every 2 seconds.
  • The CO2 molecules each need to have independent initial (upwards) velocity and spin. Build a particle system for them and spawn molecules with random parameters for velocity and spin.
  • Create an invisible box around the user and the factory which keeps the CO2 molecules contained and makes them bounce off the walls. The bouncing can be done very simply by negating the coordinate axis which would make the molecule escape the bounding box.
  • Each molecule needs a bounding sphere which is used for the above collision check as well as laser intersections.
  • Show stylized touch controllers in their correct locations in VR.
  • Pick one of the buttons/triggers on each controller. When the user pushes it, a virtual laser beam is emitted from that controller.
  • Display the laser beam as an OpenGL line or a thin cylinder.
  • When the user points both laser beams at the C atom so that they both intersect its bounding sphere, the C atom should disappear and an O2 molecule remains.
  • Create a score board from a simple rectangle and write code to populate it with 0-10 miniature CO2 molecules. The score board should be located in a coordinate system that is at least partly (with some of its degrees of freedom) attached to one of the sensors used (HMD and controllers), i.e., it can't be anchored in world space.
  • Update the number of CO2 molecules on the board with the number of CO2 molecules in the environment.
  • Once more than 10 molecules are in the environment, the trainee loses. To visually indicate the loss you should draw a large number of CO2 molecules in the environment, in random locations.
  • Once all molecules have been eliminated, the trainee wins and the factory stops producing CO2. Change the background to a light blue in this case to indicate the victory.
  • After the game ends, show win or lose state until the user presses any button or trigger, then restart the game.
  • Dedicate one button on the left controller and the corresponding one on the right to changing the rate of CO2 production. Tweak the rate of CO2 production to make the game fun to play (not too easy, not too hard).

3D Assets

We provide the following 3D models for you to use in your application, in this zip file:

  • CO2 molecule
  • O2 molecule
  • 4 factory models to choose from. The pictures below are in order, factory1..factory4.

Factory1 360.pngFactory2 360.pngFactory3 360.pngFactory4 360.png

To import these OBJ files, we suggest using the Assimp library.

Extra Credit (10 Points)

Options for extra credit are:

  • Audio: use the Oculus Audio SDK to play sounds for eliminating C molecules, generating new ones in the factory, and a sound for when the game is won.
  • Haptic feedback: the Oculus Touch controllers have built in vibration generators. Add support for vibration feedback for when a C molecule is eliminated, and potentially other events.

Point amounts have yet to be assigned. More to come!