Difference between revisions of "Project1W18"

From Immersive Visualization Lab Wiki
Jump to: navigation, search
(Created page with "=Homework Assignment 1: Trapped By a Big Wall= For this assignment you can obtain 100 points, plus up to 10 points of extra credit. In the description below we assume you wi...")
 
(The Project (100 Points))
 
(2 intermediate revisions by one user not shown)
Line 13: Line 13:
 
==The Project (100 Points)==
 
==The Project (100 Points)==
  
Create an interactive, immersive application for the Oculus Rift head mounted display (HMD). In the application, you are trapped inside of a seemingly impenetrable, tall, beautiful cylindrical brick wall - except that there wasn't enough money to put mortar between the bricks so they just sit loosely on top of one another. Luckily, you have superpowers that you can use just by using your gaze. With your gaze you trigger one of two actions: a laser beam, or a cannon ball. You can pick which by using your gaze and the stare-and-wait method. When the laser beam is triggered on a brick (by staring at it), the brick gets destroyed, which makes the wall unstable. When the cannon ball is triggered, you shoot a cannon ball roughly the size of a brick in the direction you're looking. The goal is to destroy enough of the wall so that you could climb over it.
+
Create an interactive, immersive application for the Oculus Rift head mounted display (HMD). In the application, you are trapped inside of a seemingly impenetrable, tall, beautiful cylindrical brick wall - except that there wasn't enough money to put mortar between the bricks so they just sit loosely on top of one another. Luckily, you have telekinesis superpowers that you can use just by using your gaze. When you focus on a brick (by staring at it), the brick starts moving away from you slowly, and will eventually fall out of the other side of the wall. The goal is to destroy enough of the wall so that you could climb over it.
  
In this application you are only allowed to use the HMD as an input device (i.e., no mouse, keyboard, Touch controllers, or other input devices are allowed). You are not allowed to move the user except by natural head motion. The brick wall should be far enough away from the user so that the user can't stick their head through it.
+
In this application you are only allowed to use the HMD as an input device (i.e., no mouse, keyboard, Touch controllers, or other input devices are allowed). You are not allowed to move the user, except the user's head with their natural head motion. The brick wall should be far enough away from the user so that the user can't stick their head through it (at least 4-6 feet).
 
+
The stare-and-wait method is a technique where a cursor in the center of your field of view follows your head motion. When the cursor hovers over an actionable object for a certain amount of time, usually about 2 seconds, the action gets triggered. Many Google Cardboard and Gear VR applications use this method because it is cumbersome to push the buttons on them.
+
  
 
You will get points for the following things:
 
You will get points for the following things:
  
* A ground plane nothing can fall through. (10 points)
+
* A ground plane nothing can fall through. (5 points)
* A cylindrical wall of bricks, generated from code. This can be composited of simple cubes or boxes. Use as many bricks as your computer can comfortably render at 90 frames per second, the minimum required frame rate for the Oculus Rift. The bricks need to be textured with a texture of your choice. In Bullet, the cubes can be simulated as [http://bulletphysics.org/Bullet/BulletFull/classbtBoxShape.html btBoxShape]s. In Unity, you should create a brick prefab and instantiate the wall using instances of that prefab. The bricks must have physics properties applied to them. (20 points)
+
* A cylindrical wall of bricks, generated procedurally from code. It should consist of simple rectangular boxes. The bricks need to be textured or colored with a texture/color of your choice. In Unity, you should create a brick prefab and instantiate the wall using instances of that prefab. The bricks must have realistic physics properties applied to them. Assume that 1 cubic foot of rock weighs about 200 lbs. (30 points)
* A way of selecting one of the two actions by dwelling, and also to turn them both off. An example is to create cubes inside the wall that the user can look at. Colliders around the cubes sense the cursor. Each cube stands for one of the modes. You could even use just one cube and switch between the three modes. (20 points)
+
* Telekinesis: when the user stares at a brick for a minimum threshold amount of time (eg, 2 seconds), telekinesis kicks in. The brick the user stares at slowly starts moving towards the outside of the wall. It should take between 5-10 seconds for the brick to move all the way out until it falls down. The physics simulation should realistically make the bricks above the removed one tumble down. (30 points)
* Laser beam: when in laser mode and a shot is triggered by dwelling, eliminate the brick the cursor is on. This is the brick a line from between the user's eyes straight out intersects with. The physics simulation should realistically make the bricks above the eliminated ones fall down. (20 points)
+
* There needs to be a visual indication of where the user looks (eg, cursor). (10 points)
* Cannon ball: in this mode a ball roughly the size of a brick gets shot from the user's head position, straight forward. Gravity should make the ball fly along a slight arc downward. (20 points)
+
* There needs to be a visual indication of which brick is being pushed while the telekinesis is active (highlighting, displaying sparks on its front, etc). (10 points)
* You should be able to reset the application by looking straight up to the sky, within a reasonable threshold around the zenith. (10 points)
+
* If the user looks away from the brick they're doing the telekinesis on, the brick should stop moving. (5 points)
 +
* You should be able to reset the wall by looking straight up to the sky, within a small threshold around the zenith. (10 points)
  
 
Let these images inspire you:
 
Let these images inspire you:
Line 39: Line 38:
 
There are two options for extra credit. To get the full 10 points you have to implement both of them, in the given order.
 
There are two options for extra credit. To get the full 10 points you have to implement both of them, in the given order.
  
1. Gaze progress indicator: all gaze interactions would benefit from a visual indicator of how long the user has stared at a point and how much longer they need to do it to trigger the action. Any visual progress indicator will be accepted (such as progress bars, pie charts, shapes that fill up with water), but not textual ones (such as a count down). (5 points)
+
1. Telekinesis trigger indicator: all gaze interactions would benefit from a visual indicator of how long the user has stared at a point and how much longer they need to do it to trigger the action. Any visual progress indicator located by the object that is looked at will be accepted (such as progress bars, pie charts, shapes that fill up with water), but not textual ones (such as a count down). (5 points)
  
 
Examples:
 
Examples:

Latest revision as of 17:49, 12 January 2018

Homework Assignment 1: Trapped By a Big Wall

For this assignment you can obtain 100 points, plus up to 10 points of extra credit.

In the description below we assume you will be using Unity 3D for the implementation. But you don't need to, you can alternatively use UE4, Lumberyard, or C++ with OpenGL and optionally OpenSceneGraph and the Bullet Physics Library

Note that if you use Unity you aren't allowed to use any Unity assets other than 3D models and textures without explicit permission.

The goal of this assignment is to create a VR application that is only used with the Oculus HMD (no controllers), and in which the user has to break out of a cylindrical brick wall.

The assignment is to be done in teams of two.

The Project (100 Points)

Create an interactive, immersive application for the Oculus Rift head mounted display (HMD). In the application, you are trapped inside of a seemingly impenetrable, tall, beautiful cylindrical brick wall - except that there wasn't enough money to put mortar between the bricks so they just sit loosely on top of one another. Luckily, you have telekinesis superpowers that you can use just by using your gaze. When you focus on a brick (by staring at it), the brick starts moving away from you slowly, and will eventually fall out of the other side of the wall. The goal is to destroy enough of the wall so that you could climb over it.

In this application you are only allowed to use the HMD as an input device (i.e., no mouse, keyboard, Touch controllers, or other input devices are allowed). You are not allowed to move the user, except the user's head with their natural head motion. The brick wall should be far enough away from the user so that the user can't stick their head through it (at least 4-6 feet).

You will get points for the following things:

  • A ground plane nothing can fall through. (5 points)
  • A cylindrical wall of bricks, generated procedurally from code. It should consist of simple rectangular boxes. The bricks need to be textured or colored with a texture/color of your choice. In Unity, you should create a brick prefab and instantiate the wall using instances of that prefab. The bricks must have realistic physics properties applied to them. Assume that 1 cubic foot of rock weighs about 200 lbs. (30 points)
  • Telekinesis: when the user stares at a brick for a minimum threshold amount of time (eg, 2 seconds), telekinesis kicks in. The brick the user stares at slowly starts moving towards the outside of the wall. It should take between 5-10 seconds for the brick to move all the way out until it falls down. The physics simulation should realistically make the bricks above the removed one tumble down. (30 points)
  • There needs to be a visual indication of where the user looks (eg, cursor). (10 points)
  • There needs to be a visual indication of which brick is being pushed while the telekinesis is active (highlighting, displaying sparks on its front, etc). (10 points)
  • If the user looks away from the brick they're doing the telekinesis on, the brick should stop moving. (5 points)
  • You should be able to reset the wall by looking straight up to the sky, within a small threshold around the zenith. (10 points)

Let these images inspire you:

Brick-cylinder.jpg Brick-wall.jpg

Left: brick wall from the outside, right: brick wall from user's perspective.

Extra Credit (10 Points)

There are two options for extra credit. To get the full 10 points you have to implement both of them, in the given order.

1. Telekinesis trigger indicator: all gaze interactions would benefit from a visual indicator of how long the user has stared at a point and how much longer they need to do it to trigger the action. Any visual progress indicator located by the object that is looked at will be accepted (such as progress bars, pie charts, shapes that fill up with water), but not textual ones (such as a count down). (5 points)

Examples:

Radial widget: Radial.png Slider widget: Slider.png Hexagons: Hexagons

2. Teleport with gaze: This option requires that you already did option 1. Add a method to teleport around the scene by gazing at the ground plane. If there is an intersection of the gaze ray with the ground plane, without an obstruction in between, mark the intersection point, start the gaze progress indicator, and once the time is up move the user's feet to that location. (5 points)