Skip to content
Ian edited this page Nov 2, 2018 · 38 revisions

Overview

This VR interaction technique allows the user to extend their reach beyond their arm length. It does this by utilizing a non-linear mapping of the between the real location of the remote and the virtual remote. As the user extends out their arm the virtual remote will extend further following this mapping.

Source paper of the technique:

Poupyrev, Ivan & Billinghurst, Mark & Weghorst, Suzanne & Ichikawa, Tadao. (1998). The Go-Go Interaction Technique: Non-linear Mapping for Direct Manipulation in VR. Proc. of UIST'96.

Our implementation

Our implementation of this technique in unity follows the papers method exactly as there was plenty of information describing how this technique was built with no technical limitations. To do it we utilized a "Shadow controller" for each hand which matches the position/rotation of the real controller positions. These shadow controllers would then steal the model of the real controllers and take their place as the visible hands. They then utilizes the non-linear mapping function to make the go-go work.


Use by manually attaching

To manually attach the GoGo to the Camerarig VR components if the auto-attach fails for each hand:

  • Drag onto GoGoShadow script:
    • The CameraRig onto camerarig
    • The relevant controller onto "The Controller" and "Tracked Obj"
    • The controller model in the scene under the controller onto the Model
  • Drag onto the GrabObject script:
    • The relevant controller onto the "Tracked Obj"
  • Drag left and right hand in GoGo Controller to left and right VR Controllers

Inspector parameters

For left and right hand GoGo Shadow:

Parameter Default Description
Arm Length calculator Off When on the user can calibrate their arm length in-game by pressing down on the touch pad while
Arm Length 0.66 When the arm length calculator is off, the arm length is manually set in the inspector.
Distance from head to chest 0.3 GoGo extension is from the chest. This is the manual distance down from the camera head to calculate chest location.
The Model Model The controller model which is a child of the controller to be cloned when GoGo is in use
Extension variable 10 The higher the extension variable the further the GoGo will extend at a full arm extension.

For left and right hand GrabObject

Parameter Default Description
Interaction Layers PickableObject The layers that the technique can interact with
Interaction Type Manipulation When set to manipulation GoGo can move objects via fixed joints. When pure selection it will just send an event that it has selected and place the object into a public variable.
Selection None The publicly accessible variable showing which object is selected.
Selected Object() Empty Event Invoked when an object is selected
Hovered() Empty Event Invoked when an object is hovered over
UnHovered() Empty Event Invoked when an object ceases being hovered over

Test/Example scenes

Basic test scene with a couple of objects and technique under:

  • Assets/GoGo/Scenes

Major example scene under:

  • Assets/Technique Example Scenes/Scenes/GoGoexample

Clone this wiki locally