Project2W17
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 seen in the image below. Feel free to use this furniture, or other furniture that resembles the actual setup in B210, as well as additional assets as described below.
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.
2. Allow the spawning of the following items: desks, chairs, locker cabinets, storage cabinets, TVs on stands, and white boards for the walls. Each newly spawned item should show up in the space by the entrance to the room. You are free to offer more object types than above.
3. Implement an interaction technique to select any one of the items in the room and move it to a new location. Allow rotations of the furniture objects. The pictures on the walls should be movable along the walls but they should not fall to the ground.
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.
5. Create a method to select any number of objects to group them together, highlight the selected items, then allow moving the group as a whole.
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.
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.
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).
2. Measurement tool: create a tape measure tool which can measure the distance between any two points in the space the user clicks on.
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.