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
This release of UnityModules adds support for Unity 2020.1!
Changelog
Add support for Unity 2020.1
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
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
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
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.
Removed a warning when Hands.Provider returned null, since many valid scenes may simply not be set up for Leap devices.
Added the IgnoreCollidersForInteraction component, which causes a Collider to be ignored by the Interaction Engine. This is intended for trigger colliders that should be considered only for raycasting and not, e.g., for grasping or collision.
Removed the (unused and deprecated) RigidbodyWarper script.
VR controllers will now be detected at runtime in the IE example scenes that support them. (Previously, they had to be active and visible to Unity as soon as the application started running.) This functionality causes a minimal amount of garbage allocation every few seconds in those scenes, but did not have a noticeable impact on garbage collection times. You can disable this functionality by disabling "pollConnection" on the InteractionXRController script.
Grasping
Improved the ability to grasp small objects.
Improved the consistency of grasping an object that was held by the other hand.
Added OnGraspBegin, OnGraspStay, and OnGraspEnd callbacks to InteractionController.
UI
Modified the Basic UI example scene to demonstrate how a InteractionButton UI panel can be moved without causing the attached physical buttons to wobble.
Curved Space Support
Fixed a bug where Interaction Objects inherited LeapSpace components that were only used for an object's LeapGraphics. InteractionBehaviour now only considers any LeapSpaces -- such as LeapCylindricalSpace or LeapSphericalSpaces -- that are on or the parent of a Collider.
If you are upgrading a project using the Graphic Renderer from 2017.3 to 2017.4, you may experience a crash when opening certain scenes. This is due to sprite library data incompatibility and can be resolved by deleting your Temp and Library folders and re-opening Unity.
Fixed an issue where graphics in Dynamic or Text groups would cause MissingReferenceExceptions when deleted. Note that you cannot delete (or add) graphics in Baked groups, although you can disable them.
Fixed an issue where tints and vertex colors were not correctly converted to linear space when the application was targeting linear space rendering.
Fixed an issue where RiggedHand would occasionally raise a LookRotation error.
Added an option for Rigged Hands to scale their last fingerbones, which allows rigged hands to achieve correct fingertip positions when tracked hands do not precisely match the scale of the model the hand was rigged on.
This is a hotfix release addressing an issue with the warpingAdjustment variable, which was previously renamed to _warpingAdjustment without using the [FormerlySerializedAs] attribute. This resulted in the adjustment value reverting back to its default value, which was 60. The recommended value for PC experiences is 17, and so this introduced a 43-millisecond difference in the warping effects, causing significant swim when the user moved their head.
Renamed the variable, again without using the [FormerlySerializedAs] attribute. This is intentional so that any bad values that have been saved into developer's scenes get discarded and overwritten by the new good default, 17.
Made it so that unless _allowManualTimeAlignment is checked, the adjustment value will do NOTHING. Instead the value is driven by a constant. This is so that if we want to push out a new value for the default adjustment value in the future, we can just update the constant and all developer's scenes will be automatically updated.