-
Notifications
You must be signed in to change notification settings - Fork 6
Spindle
Overview
This technique simulates a virtual spindle controlled using two of the VR controllers. The center point of the spindle midpoint of the line between the controllers is the interaction point. Once you select and object both controllers can be moved to manipulate it. As stated by the paper this allows 3-DOF translations.
Manipulations allowed
- Moving the object while holding
- Rotating the yaw and roll of the object by rotating the hands relative to eachother
- By changing the distance between the controllers while holding the object you can scale and change the size of the object.

Source paper(s) of the technique:
Mapes, D., and J. Moshell (1995). “A Two-Handed Interface for Object Manipulation in Virtual Environments.” Presence: Teleoperators and Virtual Environments 4(4): 403–416.
Schultheis, U., J. Jerald, F. Toledo, A. Yoganandan, and P. Mlyniec (2012). “Comparison of a Twohanded Interface to a Wand Interface and a Mouse Interface for Fundamental 3D Tasks.” IEEE Symposium on 3D User Interfaces (3DUI 2012), 117–124.
Use by manually attaching
To manually attach the Spindle to the Camerarig VR components if the auto-attach fails:
- Drag onto Spindle script:
- Left and Right VR Cotnrollers ont TrackedObj 1 and TrackedObj 2
- Drag onto the Spindle Interactor Script:
- Left and Right VR Cotnrollers ont TrackedObj 1 and TrackedObj 2
Inspector parameters
For Spindle Script:
| Parameter | Default | Description |
|---|---|---|
| Spindle and Wheel | False | When enabled the Spindle and Wheel technique will activate allowing rotation on the pitch axis. More information here. |
| InteractionObject | InteractionPoint | The point of interaction for spindle |
For Spindle Interactor Script:
| Parameter | Default | Description |
|---|---|---|
| Interaction Layers | PickableObject | The layers that the technique can interact with |
| Colliding Object | None | The currently Hovered over object |
| Object In Hand | None | Current object selected |
| Selected Object() | Empty | Invoked when object is selected |
| Dropped Object() | Empty | Invoked when object is Dropped |
| Hovered() | Empty | Event Invoked when an object is hovered over |
| UnHovered() | Empty | Event Invoked when an object ceases being hovered over |
Test/Example scenes
Major example scene under:
- Assets/Technique Example Scenes/Scenes/SpindleExample
Wiki
Hand Grasping
Enhanced Grasping
Volume-based Pointing
Enhanced Pointing
Symmetric Bi-manual
Asymmetric Bi-manual
Progressive refinement