Assignment 4: Selection and Manipulation
- Due Nov 5, 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/WLFxMWgw
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-4
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 |
---|---|---|
Implement a Fishing Reel variant of the pointing technique (see Lecture 14, slide 12). When an object is grabbed using the laser pointer, the user should be able to translate the object forwards and backwards along the ray using the thumbstick. Currently, both thumbsticks are being used by the continuous move provider. You should unbind the locomotion system from one of the controllers, so you can make it work with fishing reel.
threshold:
pts
|
pts
--
|
|
Implement the Go-Go grasping technique (see Lecture 12, slide 26) on both controllers. This will involve computing the distance between each controller and the headset. For distances less than some threshold d, the location of the controller should match the user's hand to allow them to easily grab nearby objects. For distances greater than d, the hand should be scaled forward to extend the user's reach. You should experiment with different values for d and the distance scale factor to settings that work comfortably.
threshold:
pts
|
pts
--
|
|
The user should be able to turn the Go-Go technique on and off using the A button on the right controller or the X button on the left controller. Pressing either button should toggle the Go-Go technique for both hands.
threshold:
pts
|
pts
--
|
|
Implement a Spindle between the two controllers (see Lecture 14, slide 48). You can use a small object such as a cube to mark the midpoint. The spindle should only be active when the Go-Go technique is toggled off.
threshold:
pts
|
pts
--
|
|
When the user grabs an object with either hand when the spindle is active, the object should be translated to the midpoint of the spindle.
threshold:
pts
|
pts
--
|
|
When the user moves their hands, the grabbed object should be translated to follow the midpoint of the spindle.
threshold:
pts
|
pts
--
|
|
When the user moves their hands, the grabbed object should be rotated to match the alignment of the spindle. Note that you only need to worry about yaw and roll (rotation about the Y and Z axes)
threshold:
pts
|
pts
--
|
|
When the user moves their hands closer together or further apart, the grabbed object should be scaled up or down based on the distance between them.
threshold:
pts
|
pts
--
|
|
Bonus
threshold:
pts
|
pts
--
|