Difference between revisions of "Project1W19"

From Immersive Visualization Lab Wiki
Jump to: navigation, search
(Homework Assignment 1: Trapped By a Big Wall)
 
(17 intermediate revisions by one user not shown)
Line 1: Line 1:
 
=Homework Assignment 1: Trapped By a Big Wall=
 
=Homework Assignment 1: Trapped By a Big Wall=
 
'''The project is almost ready. Feel free to start working on it but check back in Friday night to see if any changes were made.'''
 
  
 
For this assignment you can obtain 100 points, plus up to 10 points of extra credit.
 
For this assignment you can obtain 100 points, plus up to 10 points of extra credit.
Line 15: 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 the budget wasn't big enough to include mortar, so the bricks just sit loosely on top of each other. Luckily, you have telekinesis superpowers that you can use just by using your gaze. When you focus on a brick (by staring at it), you will slowly push the brick away from you, and it will eventually fall out on the other side of the wall. 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 the budget wasn't big enough to include mortar, so the bricks just sit loosely on top of each other. Luckily, you have telekinesis superpowers that you can use just by using your gaze. When you focus on a brick (by staring at it), you will be able to push or pull the brick out of the wall, and it will fall down on the ground. The goal is to remove enough bricks from the wall so that you could get to the outside.
  
 
In this application you are only allowed to use the HMD as an input device. Mouse, keyboard, Touch controllers, or other input devices are not allowed. You are not allowed to move the user, except the user's head with their natural head motion. The brick wall should be about 3-6 feet from the user.
 
In this application you are only allowed to use the HMD as an input device. Mouse, keyboard, Touch controllers, or other input devices are not allowed. You are not allowed to move the user, except the user's head with their natural head motion. The brick wall should be about 3-6 feet from the user.
Line 21: Line 19:
 
You will get points for the following things:
 
You will get points for the following things:
  
* A ground plane for the wall to rest on. (5 points)
+
* A ground plane for the wall to rest on '''(5 points)''' and give it a texture, such as grass, dirt, concrete, etc. '''(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 brick weighs about 200 lbs. (30 points)
+
* A cylindrical wall of bricks, generated procedurally from code '''(20 points)'''. It should consist of simple rectangular boxes. The bricks need to be textured with a texture of your choice '''(5 points)'''. 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 '''(5 points)'''. Assume that 1 cubic foot of brick weighs about 200 lbs.
* 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)
+
* Telekinesis: when the user stares at a brick for a minimum threshold amount of time (e.g., 2 seconds) '''(10 points for selection and timing)''', telekinesis kicks in. The brick the user stares at is now linked to the user's head, and will move towards the outside or inside of the wall, '''(5 points for brick movements)''' when the user moves their head towards or away from the brick. '''(10 points for user movement)''' Note that the brick should only move along its radial axis (the axis parallel to the radius of the brick cylinder). The physics simulation should realistically make the bricks above the removed one tumble down. '''(5 points)'''
* There needs to be a visual indication of where the user looks (eg, cursor). (10 points)
+
* Add a visual indication of which brick is being selected except when the user is not looking at the wall (e.g., a cursor, highlight, sparks, etc). Change the color (or a different visual property) of the indicator when telekinesis activates. Note that it would be useful to have both a cursor that indicates the head direction, as well as a highlight of the selected brick. '''(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)
+
* Implement a criterion for the brick to stop moving. You can try to stop the movement when the viewing ray no longer intersects the brick. But this could be too finicky. A threshold angle might work better. Or you might come up with a different solution. '''(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)'''
* 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 34: Line 31:
 
[[Image:brick-wall.jpg | 300px]]
 
[[Image:brick-wall.jpg | 300px]]
  
Left: brick wall from the outside, right: brick wall from user's perspective.
+
Left: brick wall from the outside, brick size is about right. Right: brick wall from user's perspective (but your bricks should be bigger).
  
 
==Extra Credit (10 Points)==
 
==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.
+
There are three options for extra credit. To get the full 10 points you have to implement at least two of them. You can get a maximum of 10 points of extra credit.
  
 
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)
 
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)
Line 49: Line 46:
  
 
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)
 
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)
 +
 +
3. Exploding bricks: Add a type of "easter egg" functionality to explode bricks: when in telekinesis mode, if the user doesn't significantly move the brick in either direction for an additional amount of time (eg, 5 seconds) the brick explodes, which means that it pushes all surrounding bricks away from it. (5 points)
 +
 +
<!--
 +
Next time:
 +
- mandate that bricks be created with offset between rows (vs. in columns)
 +
- make very clear what interaction to move bricks should look like - list how much points deducted in certain wrong scenarios
 +
- remove extra credit #3 for explosions (not relevant for 3D interactions, too easy)
 +
-->

Latest revision as of 17:58, 25 January 2019

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, CryEngine, 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, textures and audio-related ones 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.

This is a team project for teams of two. You are allowed to work solo on it, but this does not change the scope of the project.

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 the budget wasn't big enough to include mortar, so the bricks just sit loosely on top of each other. Luckily, you have telekinesis superpowers that you can use just by using your gaze. When you focus on a brick (by staring at it), you will be able to push or pull the brick out of the wall, and it will fall down on the ground. The goal is to remove enough bricks from the wall so that you could get to the outside.

In this application you are only allowed to use the HMD as an input device. Mouse, keyboard, Touch controllers, or other input devices are not allowed. You are not allowed to move the user, except the user's head with their natural head motion. The brick wall should be about 3-6 feet from the user.

You will get points for the following things:

  • A ground plane for the wall to rest on (5 points) and give it a texture, such as grass, dirt, concrete, etc. (5 points)
  • A cylindrical wall of bricks, generated procedurally from code (20 points). It should consist of simple rectangular boxes. The bricks need to be textured with a texture of your choice (5 points). 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 (5 points). Assume that 1 cubic foot of brick weighs about 200 lbs.
  • Telekinesis: when the user stares at a brick for a minimum threshold amount of time (e.g., 2 seconds) (10 points for selection and timing), telekinesis kicks in. The brick the user stares at is now linked to the user's head, and will move towards the outside or inside of the wall, (5 points for brick movements) when the user moves their head towards or away from the brick. (10 points for user movement) Note that the brick should only move along its radial axis (the axis parallel to the radius of the brick cylinder). The physics simulation should realistically make the bricks above the removed one tumble down. (5 points)
  • Add a visual indication of which brick is being selected except when the user is not looking at the wall (e.g., a cursor, highlight, sparks, etc). Change the color (or a different visual property) of the indicator when telekinesis activates. Note that it would be useful to have both a cursor that indicates the head direction, as well as a highlight of the selected brick. (10 points)
  • Implement a criterion for the brick to stop moving. You can try to stop the movement when the viewing ray no longer intersects the brick. But this could be too finicky. A threshold angle might work better. Or you might come up with a different solution. (10 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, brick size is about right. Right: brick wall from user's perspective (but your bricks should be bigger).

Extra Credit (10 Points)

There are three options for extra credit. To get the full 10 points you have to implement at least two of them. You can get a maximum of 10 points of extra credit.

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)

3. Exploding bricks: Add a type of "easter egg" functionality to explode bricks: when in telekinesis mode, if the user doesn't significantly move the brick in either direction for an additional amount of time (eg, 5 seconds) the brick explodes, which means that it pushes all surrounding bricks away from it. (5 points)