A-Frame provides an implementation for supporting multiple types of 6DoF controllers (Vive, Oculus Touch) via the hand-controls component. The hand-controls component is primarily for 6DoF controllers since it’s geared towards room scale interactions such as grabbing objects. The hand-controls component works on top of both Vive and Oculus Touch controllers by:
Setting both the vive-controls and oculus-touch-controls component
Overriding the controller models with a simple hand model
Mapping Vive-specific and Oculus Touch-specific events to hand events and gestures (e.g., gripdown and triggerdown to thumbup)
To add the hand-controls component:
<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>
Unfortunately, there is not yet a 3DoF controller component that abstracts well all the types of 3DoF controllers (i.e., Daydream, GearVR). We could create a custom controller that works with both controllers. It would be fairly easy to cover since 3DoF controllers do not offer much potential for interaction (i.e., only rotational tracking with a touchpad).
The hand-controls gives tracked hands (using a prescribed model) with animated gestures. hand-controls wraps the vive-controls and oculus-touch-controls components, which in turn wrap the tracked-controls component. The component gives extra events and handles hand animations and poses.
<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>