Skip to content

Flexible Pointer

Ian edited this page Nov 2, 2018 · 17 revisions

Overview

Flexible pointer is an extension of the ray cast. It allows the user to manipulate and bend the projected ray to select obscured objects. It utilises two controllers to control it and the curvature is based on a quadratic bezier curve.

The quadratic bezier curve utilizes two positions and a control point as shown below:

  • Position 1 is controlled via one VR controller which the laser will project from.
  • Position 2 is controller via the other VR controller which you point ahead of yourself.
  • The position of the control point is manipulated by the location of the users finger on the touch pads of each controller.
  • A scaling factor can be set to configure how far you want the pointer to be able to reach.

This may be changed later

Source paper of the technique:

Olwal, Alex & Feiner, Steven. (2012). The Flexible Pointer: An Interaction Technique for Augmented and Virtual Reality.


Use by manually attaching

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

  • Drag onto Flexible Pointer script:
    • Drag Left and Right VR Controllers onto Tracked Obj L and R

Inspector parameters

For Flexible Pointer Script:

Parameter Default Description
Interaction Layers PickableObject The layers that the technique can interact with
Interaction Type Selection When selected an object will go into a public variable for the player to use. Currently nothing happens on manipulation.
Control Point Visible True If true a red sphere will indicate the location of the control point that is used to bend the bezier
Laser Container Laser Container for all the lasers generated for the Bezier Curve
Scale Factor 2 The scale of which the Flexible pointer extends past the pointing controller
Currently Pointing at None The currently hovered over object
Selection None The currently selected object
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

Major example scene under:

  • Assets/Technique Example Scenes/Scenes/FlexiblePointerExample

Clone this wiki locally