-
Notifications
You must be signed in to change notification settings - Fork 6
Image Plane Pointing
Overview
Image-plane allows a user to simply grab an object ‘out of the air’ as if its right in front of you on a 2D plane even if it is in 3D. There are quite a few variations of this technique. We are implementing “sticky finger” and “Framing hands”. Sticky finger: Sticky finger allows selection by using an invisible ray cast through the users eye/camera and into the controller (the users finger). By allowing selection like this it gives the illusion that the user is grabbing the object out of the air in 2D.

Framing hands: Framing hands utilizes a similar method and illusion to sticky finger except that the user has two controllers. The user can place one controller above the object, and one below as if they are creating a picture frame of the object. Then when they select the object found in that frame is selected.

Source paper of the technique:
Pierce, J., A. Forsberg, M. Conway, S. Hong, R. Zeleznik, and M. Mine (1997). “Image Plane Interaction Techniques in 3D Immersive Environments.” Proceedings of the 1997 ACM Symposium on Interactive 3D Graphics (I3D ‘97), 39–44
Use by manually attaching
StickyHand:
To manually attach the Image Plane Pointing to the Camerarig VR components if the auto-attach fails:
- Drag onto ImagePlane_Stickyhand script:
- Camera eye onto Camera Head
- Camera Rig onto Camera Rig
- Right VR controller onto Right controller
- Left VR controller onto Left controller
Framing Hands:
To manually attach the Image Plane Pointing to the Camerarig VR components if the auto-attach fails for each hand:
- Drag onto ImagePlane_Framinghand script:
- Camera eye onto Camera Head
- Camera Rig onto Camera Rig
- Right VR controller onto Right controller
- Left VR controller onto Left controller
Inspector parameters
For Stickyhand ImagePlane_StickyHand Script:
| Parameter | Default | Description |
|---|---|---|
| Interaction Layers | PickableObject | The layers that the technique can interact with |
| Selected Object | None | The last selected object by stickyhand |
| Currently Pointing At | None | The object hovered by the stickyhand |
| Laser Prefab | InvisLaser | Laser showing where stickyhand is aiming |
| SelectedObject | None | Currently selected object |
| 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 |
For Stickyhand ImagePlane_FramingHands Script:
| Parameter | Default | Description |
|---|---|---|
| Interaction Layers | PickableObject | The layers that the technique can interact with |
| Currently Pointing At | None | The object hovered by the framing hands |
| Selected Object() | Empty | Invoked when object is selected |
| Hovered() | Empty | Event Invoked when an object is hovered over |
| UnHovered() | Empty | Event Invoked when an object ceases being hovered over |
| Point of Interaction | InteractionPoint | Shows a dot in between the hands that i the interaction point |
| Laser Prefab | InvisLaser | Laser showing where framinghand is aiming |
| Selected Object | None | The last selected object by framinghand |
Test/Example scenes
Major example scene under:
- Assets/Technique Example Scenes/Scenes/ImagePlaneStickyHandsExample
- Assets/Technique Example Scenes/Scenes/ImagePlaneFramingHandsExample
Wiki
Hand Grasping
Enhanced Grasping
Volume-based Pointing
Enhanced Pointing
Symmetric Bi-manual
Asymmetric Bi-manual
Progressive refinement