Difference between revisions of "Project1S18"
(→Project Description (100 Points)) |
(→Project Description (100 Points)) |
||
Line 13: | Line 13: | ||
==Project Description (100 Points)== | ==Project Description (100 Points)== | ||
− | Download the starter code and get it to work with the Oculus Rift. ( | + | Download the starter code and get it to work with the Oculus Rift. (10 points) |
− | + | ||
− | + | ||
Based on the starter code, write a VR application for the Oculus Rift and the Touch controllers with the '''Oculus SDK in C++ and OpenGL''' (no Unity, Unreal, DirectX, etc). Here are step by step instructions for it: | Based on the starter code, write a VR application for the Oculus Rift and the Touch controllers with the '''Oculus SDK in C++ and OpenGL''' (no Unity, Unreal, DirectX, etc). Here are step by step instructions for it: | ||
* Use a background color of your choice other than black for your application (5 points). | * Use a background color of your choice other than black for your application (5 points). | ||
− | * Load the OBJ file of | + | * Load the [http://ivl.calit2.net/wiki/images/a/a9/Sphere2.zip the OBJ file of a sphere] and display it at the user's dominant hand's controller position. This is the cursor sphere. To load the sphere you can use the [http://www.assimp.org/ Assimp library]. (10 points) |
* Create and render a 3D array of 5x5x5 = 125 spheres in a color of your choice. Each sphere should be the size of a tennis ball (0.07 meters diameter), and the balls' center points should be 0.14 meters apart from one another in all three dimensions. (10 points) | * Create and render a 3D array of 5x5x5 = 125 spheres in a color of your choice. Each sphere should be the size of a tennis ball (0.07 meters diameter), and the balls' center points should be 0.14 meters apart from one another in all three dimensions. (10 points) | ||
* Wait for the user to pull the trigger button (index finger) to start the game. (10 points) | * Wait for the user to pull the trigger button (index finger) to start the game. (10 points) |
Revision as of 12:23, 13 April 2018
Contents |
Where's Waldo 3D
In this first programming project of the course you need to extend our starter code to a game in which the player needs to find a highlighted sphere among a 3D array of similar spheres, and click on it. The player has one minute to click on as many highlighted spheres as possible.
Starter Code
We recommend using this Oculus Minimal Example code from GitHub to start with. It's very compact but yet uses all of the API functions you will need.
To the minimum example you will need to add controller support, which this piece of sample code illustrates how it can be done. You can add this code to the draw() function of the minimal example to get printouts of the controller parameters. To see the cerr messages you have to display the terminal window, which you can do by replacing the line with WinMain with this one: int main(int argc, char** argv);
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)
Based on the starter code, write a VR application for the Oculus Rift and the Touch controllers with the Oculus SDK in C++ and OpenGL (no Unity, Unreal, DirectX, etc). Here are step by step instructions for it:
- Use a background color of your choice other than black for your application (5 points).
- Load the the OBJ file of a sphere and display it at the user's dominant hand's controller position. This is the cursor sphere. To load the sphere you can use the Assimp library. (10 points)
- Create and render a 3D array of 5x5x5 = 125 spheres in a color of your choice. Each sphere should be the size of a tennis ball (0.07 meters diameter), and the balls' center points should be 0.14 meters apart from one another in all three dimensions. (10 points)
- Wait for the user to pull the trigger button (index finger) to start the game. (10 points)
- Create a way to change the color of a random sphere of the array to highlight it. (10 points)
- Create the ability to move the cursor sphere to the highlighted sphere and upon trigger button click on the controller (index finger) test to see if the cursor is touching the highlighted sphere (a simple center-distance test will do). (15 points)
- Once the highlighted sphere has been clicked on, move the highlight to a new randomly selected sphere. (10 points)
- Repeat the above until 1 minute has passed since the game was started. (10 points)
- Quit the application and display the number of correctly clicked spheres in the terminal window (not in VR). (10 points)
Extra Credit (Max. 10 Points)
Options for extra credit are:
- Avatar hands: use the Oculus Avatar SDK to show stylized hands and/or touch controllers in their correct locations (where the user's physical hands are). (10 points)
- New game play: come up with a game that also involves clicking on things but is more fun than the homework project. (up to 10 points)
We might add more options later.