Assignment 5: Virtual Teleportation
- Due Nov 24, 2021 by 10pm
- Points 20
We are using GitHub classroom for submission of programming assignments. This system will create a new private repository with template code that is only accessible by you, the instructor, and the TA. (Other students will not be able to see it.) You should submit the assignment by committing and pushing your code to your private repository by the posted deadline.
You can create your private repository using the following link:
(Links to an external site.)https://classroom.github.com/a/5ps7pUFP
Links to an external site.
(Links to an external site.) (Links to an external site.)
You will need to create a GitHub.com account if you do not already have one. Note that this is different from the University's github.umn.edu account.
The public repository for this assignment can be found at:
https://github.com/CSCI-5619-Fall-2021/Assignment-5
Links to an external site.
(Links to an external site.)
Links to an external site. (Links to an external site.) (Links to an external site.) (Links to an external site.)
You can always read the most recent version of the assignment description in the public repository (for example, if the instructor needs to fix an error after the assignment is released). Note that you will not able to submit your code to the public repository.
Rubric
Criteria | Ratings | Pts | |
---|---|---|---|
Create a virtual scene that is a suitable testbed for virtual teleportation. It should be large enough that you can't walk through it without using virtual locomotion, and it should contain walkable surfaces at two or more elevations. For example, you might have a ground plane and a raised platform that the user will need to teleport to. Other than that, you are free to design the environment however you want, but make sure to sure low poly assets that can render smoothly on the Quest!
threshold:
pts
|
pts
--
|
||
Add a laser pointer to the controller. You can feel free to customize its appearance however you want. For the purposes of this assignment, you can chose either the left or right controller. You do not have to implement this functionality on both of them.
threshold:
pts
|
pts
--
|
||
The laser pointer should only appear when the thumbstick is pressed forward nearly all the way. When the thumbstick is in the rest position, it should be invisible.
threshold:
pts
|
pts
--
|
||
Create a new script called TeleportationTarget. You should add this script to any surfaces that you want the user to be able to teleport to. Note that you can also add this script to an invisible plane or cube object on top of more complex geometry by toggling off the MeshRenderer. Next, when the thumbstick is in the forward position and the laser pointer is visible, perform a raycast. If the object hit by the raycast is a TeleportationTarget, then change the laser pointer color. If the object is not a TeleportationTarget or no object was hit, then the laser pointer should be rendered using its default settings.
threshold:
pts
|
pts
--
|
||
Now, implement the basic teleportation. When the user is pointing at a TeleportationTarget and releases the thumbstick, then move the camera rig so that the user is standing on the target point. Make sure to adjust the height correctly!
threshold:
pts
|
pts
--
|
||
Next, we are going to add the ability to control the direction after teleportation. First, you should add an arrow or another visual indicator that will be displayed if the user is pointing at a valid teleportation point. See Figure 2 in Bozgeyikli et al. for an example. You can decide how to best control the direction of the indicator, such as the thumbstick or the rotation of the user's hand. Feel free to implement this however you want, but make sure that the user has a way to control the direction in all 360 degrees. Make sure to describe the instructions in the submission of your readme file so we know how to use it properly.
threshold:
pts
|
pts
--
|
||
Finally, you can complete this assignment by modifying the camera rig's rotation so that the user's viewpoint is pointing in the specified direction after the teleport.
threshold:
pts
|
pts
--
|
||
Bonus
threshold:
pts
|
pts
--
|
||
Total Points:
22
out of 22
|