Project2W17

From Immersive Visualization Lab Wiki
Jump to: navigation, search

Contents

Homework Assignment 2: VR Classroom Design Tool

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

The goal of this assignment is to create a 3D application which can help with the design of a VR classroom.

This assignment is due on Friday, February 10th at 2:00pm.

The assignment is to be done in teams of two, and involves programming an Oculus Rift head mounted display with Oculus Touch controllers. Unless you have your own VR equipment, you should do the project in the VR lab, room B210.

This project will be discussed on Monday, January 30th at 7pm, and also on February 6th.

You can choose to do this project in Unity 3D, UE4, Lumberyard or C++ with OpenGL and optionally OpenSceneGraph.

Unity 3D

To enable Touch controller support in Unity, this video can be useful.

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

The Project (100 Points)

In this project, the only permitted interaction devices are the Oculus Rift HMD and the two Touch controllers. Keyboard, mouse and other input devices cannot be used once the application runs. Enable physics so that the furniture sits on the floor and does not go through other furniture or walls.

You have been tasked with re-designing the VR lab in room B210. Write a 3D application which loads the 3D model of the lab and displays it at 1:1 scale. This ZIP file contains the room, as well as the furniture needed for this project. Feel free to use these assets, or other furniture that resembles what we have in the VR lab.

Vr-lab.jpg

1. Put the user in the lab and provide functionality to teleport from one location to another. To teleport, the user points with one of the Touch controllers to a new location on the floor, to which the camera then switches. (10 points)

2. Allow the spawning of the following items: desks, chairs, locker cabinets, storage cabinets, TVs on stands, and white boards for the walls. You are free to offer more object types than above. (10 points)

3. Implement an interaction technique to select any one of the items in the room (5 points) and move it to a new location (2 points). Allow rotations of the furniture objects (5 points). The white boards should be movable along the walls only and not fall to the ground (5 points). All furniture must sit on the floor once placed (3 points). See Notes below for a list of the interaction techniques we covered in class.

4. Implement an alternative interaction technique to item #3 and allow switching between them to compare them to one another. Example: If you implemented a ray casting approach in part 3, implement a different method like the Go-Go technique here. (20 points, broken down like in #3)

5. Create a method to select any number of objects to group them together (5 points), highlight the selected items (5 points), then allow moving the group as a whole (5 points). This only makes sense between objects with the same degrees of movement freedom - i.e., white boards should only group with other items on the same wall.

6. Create 'save' and 'load' functions to store the furniture configuration on disk and retrieve it at a later point. Group information does not need to get saved. (15 points)

7. Create a room design with 26 desks, at least 30 lockers and two storage cabinets, which makes more sense to you than the current layout. You do not need to consider the location of power and ethernet wall outlets. (10 points)

Notes:

  • In class we covered the following interaction techniques: ray casting, two-handed pointing, flashlight, image plane methods, virtual hand, go-go hand, world-in-miniature, scaled-world grab, voodoo doll.

Extra Credit (10 Points)

There are three options for extra credit. To get the full 10 points you have to implement all of them.

1. Additional modes of travel: free flight, upright flight. In free flight, the user can fly in all 3 dimensions and rotate around any axis. This flying style resembles that of a jet fighter. Upright flight is almost the same, except that the vertical axis never changes (i.e., no pitch or roll motions, just yaw). (3 points for free flight, 2 for upright flight)

2. Measurement tool: create a tape measure tool which can measure the distance (in a physical unit) between any two points in the space the user clicks on, and will display the distance numerically. (3 points)

3. Video: Like in project 1, create a ~1 minute video of your application, make it available on Youtube, and show it to the graders on grading day. (2 points)