Leap motion driver windows
Leap Motion Driver for SteamVR
Installation of this driver.
- Get the Leap Motion Orion Beta runtimes https://developer.leapmotion.com/get-started
- Install the Visual C++ 2015 Update 2 redistributables (32 and 64 bits) https://www.microsoft.com/en-us/download/details.aspx?id=51682
- Download the most recent zip file from the Releases section of this project and run the contained exe setup program https://github.com/cbuchner1/driver_leap/releases
Start SteamVR to see if two additional controllers show up (they should be blinking if your hands are not in the field of view of the Leap Motion, solid otherwise).
If you experience frequent crashes of SteamVR on exit and this bothers you, uninstall my driver. I will try to fix this ASAP, but at the moment I have no clue why SteamVR is crashing.
Note about WORK IN PROGRESS
You’re seeing an early version of this software. I’ve got positional tracking established now as well as hand pose tracking. Some experimental mappings of hand gestures to triggers and buttons were added:
- bending of the index finger maps to the trigger button, like you would fire a gun.
- clenching the middle, ring, pinky finger to a fist maps to the grabbing buttons
- the thumbpress gesture (just point the thumb in the direction of your palm) touches and clicks the trackpad, depending on the intensity of your gesture.
- pointing the index finger towards the are of the other hand’s palm will emulate the touchpad. To press the touchpad in the desired position use the tumbpress gesture simultaneously while pointing.
- Flat hand held in front of you, palm towards face is used for application menu button
- the Timeout pose (as used in sports), registers as the system menu button
when SteamVR confuses the left and right controller hands (which will be indicated by little hand icons shown near the bottom of the displayed Wand controllers), simply cross your hands the first time you bring them into view after starting SteamVR. This reverses the hand assignment and can improve the gaming experience for example in Audioshield.
I am working on allowing to freely map gestures to buttons in the steamvr.vrsettings config file in your Steam\config folder. However note that the «leap_gestures» section is currently not parsed yet. It’s merely a sign of things to come.
There are other gestures detected currently, but not mapped to buttons. If you want to try these out, click on the application «gesture_checker.exe» in the directory C:\Program Files (x86)\SteamVR Leap Motion driver\leap\bin\Win32
Then I also recommend that you simultaneously bring up your Leap Motion’s settings and from there start the diagnostic visualizer (the windowed version, not the VR one). Press «v» once to switch it to headmount optimized mode.
Now pull both windows side by side and bring a hand into view. The command prompt running the gesture_checker program should output a series of numbers next to the names of the gestures. A «1.0» means confidential detection, a «0.0» means no detection.
You can practise some gestures this way and also cross-check your pose in the Leap Motion diagnostic visualizer against the detection confidence.
Games/Experiences that work mostly
- the Blu (all three stages)
- Irrational Exuberance: Prologue
- the Rose and I
- The Lab (some experiences work, others are tricky)
- Final Approach
- Audioshield: somehow the controllers are swapped? Control is tricky and not very precise. Semi-playable though.
Games/Experiences that are starting but not quite playable yet.
- Tilt Brush: starts and you can start doing things, but there is lack of complete trackpad support in my driver.
- Brookhaven Experiment: tracking only works while SteamVR window is in focus. Why? Gun in right hand needs a 60 degree uptilt angle (define this in steamvr.vrsettings config file in Steam config folder). Trigger gesture detection is way to imprecise, you won’t even survive the first wave of Zombies.
Demos that won’t work at all
I am seeing SteamVR Server crash on shutdown a lot. This could be related to my driver, but I have not yet found the root cause for the crash.
The Brookhaven experiment seems to steal focus from StreamVR, so that Steam does not get any position tracking. Clicking on the SteamVR window restores tracking, but mutes the audio on Brookhaven. Meh.
Some games work better when no grip angle is added to the controller pose, other games actually require a steep angle to be playable (Brookhaven, Audioshield). We may have to add a feature to chose the preferred default pose at runtime.
Tracking is not quite reliable to always detect my trigger gestures. I think we will have to integrate small handheld controllers like the Wiimote or the Playstation Move Navigation controller in the future.
I do not think I will be able to get animated hands into the 3D view, as the render model you can assign to each controller is mostly a static object. There are some JSON files to map joystick axes and triggers to animated parts of the displayed controller. But the fingers do not directly map to joystick axes directly and hence cannot be shown. Also not all games make use of SteamVR’s internal controller visualization.
Building from Sourcecode (Developers only)
- Install SteamVR. It is under «Tools» in everyone’s Steam Library. steam://install/250820
- Install «Leap Motion Orion SDK V3.1.2». https://developer.leapmotion.com/get-started
- Fetch the OpenVR SDK 1.0.0 from https://github.com/ValveSoftware/openvr .
The solution and project files are for Visual Studio 2015.
Under «Property Manager» in Visual Studio, expand any of the configurations and find «Paths». Right click and select «Properties» and then «User Macros». Modify the paths to match your setup. InstallDir will be created, and will be configured as an external driver path for SteamVR.
You will probably want to build Release x86. You can also build x64. The post-build step will install the binaries and copy the resources to the configured InstallDir and register that path with SteamVR.
Preapring The Leap Motion Driver for use (Developers only)
After building, the InstallDir should be a complete binary distribution. To use it:
- Register it with the SteamVR runtime via «vrpathreg adddriver $(InstallDir)». This is done automatically by a Post-Build step, but if you copy the files elsewhere you will have to do it by hand.
- Edit your config/steamvr.vrsettings to enable «activateMultipleDrivers». This is what allows the hydra driver to co-exist with any HMD. Be sure to mind your commas. Check vrserver.txt log to see if there were parse errors. Many of the settings are described at https://developer.valvesoftware.com/wiki/SteamVR/steamvr.vrsettings .
You can also use «vrcmd —pollposes» (followed by an index number to limit the output) to see if things are working.
The code in this distribution is distributed under the terms of the LICENSE file in the root directory.
RELEASES
Changelog
This release is compatible with 2019.1 and above.
Since UnityModules 4.6.0, this release:
- Updates the LeapC.dll’s
- Adds Support for new «ScreenTop» Tracking Mode; Compatible with 4.9+ Services
- Consolidates editor scripts and add an .asmdef to remove the errors/warnings related to SpatialTracking.
- Adds backwards compatibility back to 2017.4
- Adds a convenience function for the Projected Hand Ray Direction
- Optimizes the rendering performance of Capsule Hands with Instancing
- Adds Advanced Mode Menus to the LeapServiceProviders to tidy up their Inspector
- Adds Server Namespaces (INTERNAL ONLY)
Thanks to our contributors,
@Niram7777
@MaxPalmer-UH / @DrMaxP
@nickjbenson
@zalo
Changelog
This is the 2018.4 Compatibility Release.
- Updates the LeapC.dll’s
- Adds Support for new «ScreenTop» Tracking Mode; Compatible with 4.9+ Services
- Consolidates editor scripts and adds an .asmdef to remove the errors/warnings related to SpatialTracking
- Adds backwards compatibility back to 2017.4
- Adds a convenience function for the Projected Hand Ray Direction
- Optimizes the rendering performance of Capsule Hands with Instancing
- Adds Advanced Mode Menus to the LeapServiceProviders to tidy up their Inspector
- Adds Server Namespaces (INTERNAL ONLY)
- Reserializes Scenes for Unity 2018.4 LTS
Thanks to our contributors,
@Niram7777
@MaxPalmer-UH / @DrMaxP
@nickjbenson
@zalo
TouchFree is a software application that runs on an interactive kiosk or advertising totem. It detects a user’s hand in mid-air and converts it to an on-screen cursor.
Minimum system requirements
- Ultraleap Leap Motion Controller or Stereo IR 170 camera module
- Ultraleap Compatible SDK
- Windows® 10, 64-bit
- Minimum Intel HD Graphics 530
- Intel® Core i5/i7 processor
- 4 GB RAM
- USB 2.0 port
Changelog
- Updates the LeapC.dll’s for the impending Orion 4.1.0 Release
- Adds a new Visualization Gizmo for the StereoIR 170 Module
- Improves the reporting of Device Statuses through the API
- Promotes InteractionEngineUtility to C# Scripts for IL2CPP Compilation (see #1118 )
- Builds the Doxygen Documentation via a Github Action
- Moves the Graphic Renderer Module to the Legacy folder to reflect its status
- Adds the XRPinchLocomotion Example Script
- Modifies Projection Hand Example for best practices
Thanks to our contributors,
@lazloringUH
@MaxPalmer-UH
@nickjbenson
@zalo
What’s New
Allow access to Leap Motion tracking data from UWP and AppContainer applications
Control panel setting ‘Allow Web Apps’ persists
Control panel setting ‘Manual Orientation’ Setting persists
Fixed an intermittent crash of LeapSvc.exe during power cycle
Fixed an issue where the SHA256 was not computed correctly on Intel Ice Lake CPUs
Fixed an intermitted failure to detect Rigel/SIR170
Fixed an issue during shutdown of LeapSvc, where shutdown requested within seconds after startup
Unity 2020 Support
This release of UnityModules adds support for Unity 2020.1!
Changelog
Note for 2020.1 users:
If you get errors related to «SpatialTracking» upon importing the Core module, you need to install the Oculus XR package, which adds the necessary XR dependency.
Only the Core and Graphic Renderer packages have been modified from 4.5.0. For completeness’ sake, all of the main modules are included in this release.
Community contributions
Added the LeapCSharp assembly definition file! — @StephenHodgson
Thank you for your contribution!
With love from the UnityModules team,
@nickjbenson and @jselstad
We’re changing to a unified release model
This release reflects a slight deviation from how we’ve done UnityModules releases in the past. To make it easier to get releases out the door, we’re unifying the versioning system around the «Core Asset» release, and combining modules together into a single release version. Individual module packages are still available, but this path is essentially a roundabout way to copy files into your project, which you can do straight from the repo, now considered the central source of truth on master .
Changelog
- Moves the LeapMotion folder from Assets to Assets/Plugins. This shortens project build times.
- Upgrades the default Unity version to 2019.2.
- Aims to support Unity 2017.1 through 2019.3. Please submit a ticket if you experience issues using UnityModules with any Unity versions beyond 2017.1.
- Fixes an issue that prevented hands from rendering when using Scriptable Render Pipeline projects.
- Adds a desktop-mode IE example scene.
Hotfixes (2020-05-01):
- Fixes compilation errors in 2018.4.
- Note that the SRP is Experimental in 2018.4 and lacks the correct callbacks to support hand timewarping. As a consequence, hand rendering is not compatible with the SRP in 2018.4.
- Fixes compilation warnings in 2019.3.
Community contributions
- Adds a configuration option to IE two-handed grasps. — @DerSticher
Adds an event on initial IE contact bone creation. — @SyDroX
Thank you for your contributions!
With love from the UnityModules team, @nickjbenson and @jselstad
What’s New
Greater finger dexterity and fingertip precision
Better hand pose stability and reliability
Faster and more consistent initialization
Smoother hand and finger movements
Improved tracking fidelity on backgrounds and bright lighting
More accurate shape and scale for hands
Significantly improved performance on embedded “Rigel” devices
LeapC is now the officially supported API included in the SDK. LeapAPI has been deprecated
Changed the fingertip location in LeapC applications such that the point defines the center of a sphere whose edge is at the fingertip. Previous output was defined such that the point was at the edge of the fingertip
Removed LeapCSharp and associated functionality from the SDK. It can now be found as part of UnityModules
Removed Leap.dll, all associated language bindings (LeapPython, LeapJava, Objective-C) and samples
Added a feature that pauses the device when no clients are connected (note: the Leap Control Panel is a client)
LeapC makefile now generates all the samples correctly
Fixed a hang at service shutdown
Fixed an issue where hands could initialize on top of other hands
What’s New:
VR Rig Simplification
The number of scripts required to construct a Leap Motion-enabled VR rig has been greatly reduced, and the required rig hierarchy has been heavily simplified. Hand data that is adjusted correctly for XR headset and device latency can now be gotten by adding a single component to the Main Camera, and the hand model pipeline has been simplified to a single manager component driving managed model components. If you are upgrading from an older project that incorporated Leap rigs from Core 4.3.4 or earlier, you can auto-upgrade these rigs by opening the scene that contains them and checking the new Leap Motion SDK window: Window->Leap Motion.
Leap SDK
Added the Leap Motion SDK Window, accessible via Window->Leap Motion. Use this window to scan and upgrade old (Core 4.3.4 and earlier) Leap rigs, check settings for the Interaction Engine, and adjust module preferences for the Graphic Renderer.
The LeapCSharp source is now provided directly in UnityModules and no longer hidden behind a managed DLL. It has received some upgrades in the process, and although it’s still a little rough around the edges, it is a useful reference if you would like to construct LeapC bindings for a new language.
Added VectorHand, one of many potential lightweight encodings of a Leap Hand. This lossy encoding is suitable for lightweight recording and playback or network transmission.
Fixed a bug where hand.TimeVisible was not being set with the correct units.
Added the PostProcessingProvider base class, a pattern for applying your own post-processes to Leap frame data.
Added an example scene demonstrating a stateless and a stateful PostProcessProvider: ProjectionPostProcessProvider and InertiaPostProcessProvider.
Utilities
Query system: Overhauled to remove reliance on type-generic structs to support IL2CPP.
BitConverter no longer requires unsafe code EXCEPT when targeting IL2CPP. If you wish to compile using IL2CPP, you must allow unsafe code.
Added an ArrayPool data structure, used by the overhauled Query system.
Fixed an issue when ImplementsInterface attribute was used for ScriptableObjects.
Added some Runtime Gizmo drawing functions, such as DrawEllipsoid.
Added SigmoidUpDown as a DefaultCurve for quick AnimationCurve initialization.