This minimal demo show how to get started with Leap Motion Virtual Reality on the web.
- Press f to go to fullscreen.
- Firefox or Chromium WebVR builds. See http://www.mozvr.com or Chromium Google Drive
- THREE.js
- LeapJS 0.6.4+, LeapJS Plugins 0.1.11pre+
The code is in a single file, broken down in to sections:
- create the scene
- add cubes
- add leap motion
- add virtual reality
- make it go
There are the following features:
- Position & Orientation Tracking
- LeapMotion HMD Tracking and Transformation
Notes on setup:
- It is recommended to lock your oculus display to 60Hz, as that is what Firefox currently supports. (Mac: do this in the Displays System Preferences)
- Units are all converted to meters. This is quite important for correct eye positioning.
- The position tracking in VRControls.js won't be in THREE.js until r72+
- Each browser requires a flag set. In Chrome, this is
chrome://flags
"WebVR", which you can confirm with this test page. In firefox, it isdom.vr.enabled
.
The Leap Motion part of this demo:
// // ADD LEAP MOTION // // // Connect to localhost and start getting frames Leap.loop(); // Docs: http://leapmotion.github.io/leapjs-plugins/main/transform/ Leap.loopController.use('transform', { // This matrix flips the x, y, and z axis, scales to meters, and offsets the hands by -8cm. vr: true, // This causes the camera's matrix transforms (position, rotation, scale) to be applied to the hands themselves // The parent of the bones remain the scene, allowing the data to remain in easy-to-work-with world space. // (As the hands will usually interact with multiple objects in the scene.) effectiveParent: camera }); // Docs: http://leapmotion.github.io/leapjs-plugins/main/bone-hand/ Leap.loopController.use('boneHand', { // If you already have a scene or want to create it yourself, you can pass it in here // Alternatively, you can pass it in whenever you want by doing // Leap.loopController.plugins.boneHand.scene = myScene. scene: scene, // Display the arm arm: true });