Releases: ultraleap/UnityPlugin
Unity Release 7.3.0
This release was tested against Unity 2022 LTS and with Unity 6.3. Unity 6 and URP are now fully supported. While the materials remain as BiRP by default, when using URP on 2022 or 6, you will be prompted to convert the materials (unless this feature has been turned off by the user).
There are a few notable issues worth calling out from the issues list:
- Ultraleap tracking with Ultraleap hardware no longer works on a Meta Quest 3 headset running an OS version >76 due to changes in which permissions are allowed.
- On Mac OS only, the client libraries now default to using a different tracking server port (compared to the port used in releases of the service, up to and including 6.2, which use port 12345). For hand tracking to work, either change the Server Connection Input mode to PORT or set the port in the Server Name Space field to {"tracking_server_port": 12345}. These options can be found in the Advanced section of the relevant LeapServiceProvider GameObject.
Tracking contains stable content including Core, Hands and the Physical Hands components
Tracking Preview contains experimental/pre-release content.
Added
- Experimental Meta compatibility mode for the OpenXR provider
- Added support to upgrade the plugin's Built In Render Pipeline materials (and as a result the example scenes) to the Universal Render Pipeline. This can be set to automatically prompt when the materials don't match the current render pipeline. It does not support downgrading.
- Changed LeapC PInvoke signatures to support iOS.
- Added support for proximity rules in pose detection. Use the attachment hands to generate transforms for the other hand joints that can then be assigned to a proximity rule, if the target should be a joint in the other hand.
- Added support for pose detection to require that both hands are in the target pose for the pose to be recognized.
- Added stencil based variants of the generic hand materials to force a hand to render over another - e.g. when live hands need to match posed hands.
- Added optional argument to AssignBestLeapProvider in HandUtils to prefer potentially live data LeapProviders vs. HandPoseViewer. Fixes a potential pose detection bug.
Changed
- Removed warning suggesting use of both input systems for OpenXR + Ultraleap compatibility now the new input system is fully supported
- Updated all custom shaders to support the Universal Render Pipeline concurrently with the Built-in Render Pipeline
- Updated Copyright year to 2025
- Split tracking preview examples into different groups - common assets, main examples and examples that need the old input manager to work (e.g. UI input)
- (Service Provider) Expose service IP and port as user settable variables
- Functions for InterpolateFrame / InterpolateFrameFromTime / GetInterpolatedFrameSize will no longer call LeapC unless a valid device is passed/set
- LeapServiceProvider Update will no longer request an interpolated frame without a valid device being set
- LeapServiceProvider FixedUpdate will no longer request an interpolated frame without a valid device and connection, bringing it into line with Update
- Added client libraries for iOS. Updated other client libraries to 7.4
- Binding to Android clients will use an older client if running on XR or the service is installed. Essentially we now ship with two clients for this reason.
- Changed to recent clients requires support for reading / setting the device firmware version on the DeviceInfo. This will be set to a valid value if the service is recent enough.
Fixed
- Fixed some warnings around runtime variables that were only used in editor mode
- Fixed an issue with Physical Hands and Unity 6 due to the physics Contact Generation setting being removed
- (UI Input Preview) Added explicit missing dependency on the "Unity UI" package
- Support either input system for all interactions, fixing HandRecorder and CycleHandPairs
- Clicks on UI elements using indirect interaction now work with the UI Input example scene
- Text on the toggle button in the UI Input example scene now shows On or Off based on the toggled state
- Clients were not able to subscribe to the events on the PinchDetector and GrabDetector scripts as the properties were exposed as readonly.
- GrabDetector detection logic was inverted, so open hands were interpreted as grabs. Now fixed.
- Fixed issue with scale of outline in GenericHandShader if hand model normals are not a normalized length
- Fixed issue with attachment hands red/green/blue materials meta file IDs clashing with the IDs of the files in the original examples, since being moved
- Fixed compile error and editor runtime issue in Unity 6.3 when importing the plugin (thanks a3geek).
Known Issues
- Ultraleap tracking with Ultraleap hardware no longer works on a Meta Quest 3 headset running an OS version >76 due to changes in which permissions are allowed.
- On Mac OS only, the client libraries now default to using a different tracking server port. For hand tracking to work, either change the Server Connection Input mode to PORT or set the port in the Server Name Space field to {"tracking_server_port": 12345}
- Pose detection scene does not illuminate all poses in green if built for mobile headsets when using URP (2022.3), spotlights don't work as intended on Unity 6.
- Turntable and pullchord scene only works (i.e. the pullchord works) if the physical hands physics settings are used
- Turntable and pullchord - origin material is pink (error) and only renders in one eye - BiRP and URP - Unity 2022 only
- Turntable and pullchord - scene produces a couple of 'the referenced script (unknown) on this Behaviour is missing' warnings - unless the tracking preview package/examples are imported
- A number of .so plugin files are not 16-byte aligned and produce warnings when a build is made (libLeapC.so, libUnityOpenXR.so, libLeapCLegacy.so)
- Console error on shader Ultraleap/GenericHandShader - Material 'GhostCapsule Hand (Instance)' with Shader 'Ultraleap/GenericHandShader' doesn't have a color property '_MainColor'
- Certain scenes containing physical interactions produce 'Setting linear velocity of a kinematic body is not supported' warnings (UnityEngine.RigidBody:set_velocity)
- Text missing on example scene panels in Unity 6.3, need to manually import TextMeshPro Essential Resources - Window > TextMeshPro > Import TMP Essential Resources
- Warnings about deprecated components when importing plugin into Unity 6.3 - XRStats, Physics.autoSyncTransforms
- The RuntimeGizmoManager and associated RuntimeGizmo.shader shader are not URP compatible and would require breaking changes to support URP; These remain as BiRP only
- Support either input system for all interactions, fixing HandRecorder and CycleHandPairs
- Scene(s) using physical hand interactions will prompt to go to settings to change parameters. One parameter is not being set, when set which is causing this repeated prompting
- Hand distortion seen on Pico devices using Ultraleap Tracking hardware (large hands, messed up hand rotation vectors)
Note
If using the .UnityPackage method to import the Plugin, it is recommended to delete any previous version before importing to avoid import issues.
Unity Release 7.2.0
- This release was tested against Unity 2022LTS and (lightly tested) with Unity 6. Script changes were made to support breaking API changes introduced in Unity 6
- Unity 6 is still not fully supported. The majority of the example scenes and materials do not support URP which is now the default render pipeline.
- Tracking contains stable content including Core, Hands and the Physical Hands components
- Tracking Preview contains experimental/pre-release content.
Headline features include:
Tracking Client versions
Windows - v6.1.0 (Hyperion)
MacOS - v6.0.0
Android - v6.0.0
Added
- Added a warning to Physical Buttons when no Physical Hands Manager is in the scene
- Added a checkbox to enable fiducial marker tracking within the LeapC service
Changed
- Non-convex MeshColliders are skipped when processing Physical Hands
- Removed old conditional support for Unity 2021.3.18 since 2022 is the oldest LTS version we support
Fixed
- Fixed issue with LeapXRHandProvider not working on Quest devices when using XRI/XR Hands and Ultraleap tracking in direct (non OpenXR) mode, due to default constructor being optimized away
- Multi device mode will no longer be requested on Connection if arg is set to false
- Fixed issue with Unity 6 triggering warnings for scripts that need to be upgraded due to Unity 6 API changes
- Fixed a broken meta file in Physical Hands XR Examples
- Fixed a frequent editor freeze that would occur when the Leap service is stopped/uninstalled
Known Issues
- Multiple issues present in the Pose Recorder Scene - grab ball does not work, pose record button falls through panel and flies away, NullReferenceException raised by SimpleInteractionGlow script
- Pull chord in Turntable and Pullchord scene gets stuck in pulled state with the grab ball juddering
Full Changelog (Tracking Package)
Documentation
Discussions
Note
If using the .UnityPackage method to import the Plugin, it is recommended to delete any previous version before importing to avoid import issues.
Unity Release 7.1.0
- This release was tested against Unity 2021LTS and 2022LTS
- Tracking contains stable content including Core, Hands and the Interaction Engine.
- Tracking Preview contains experimental/pre-release content.
Headline features include:
Tracking Client versions
- Windows - v6.1.0
- MacOS - v6.0.0
- Android - v6.0.0
Added
- Added option to fade UIInputCursor sprite out based on specified interaction distance range
- Added range to customise the distance at which the UIInputCursor scales when using direct input
Changed
- PostProcessProvider now defaults to UpdateAndFixedUpdate updating to better support PhysicalHandsManager out of the box
- Service providers using a specific serial will now connect to the exact given serial, rather than first closest
- UI PointerElement now only uses specified finger rather than the calculated closest to canvas (defaults to INDEX)
- Reduced the default UIInputCursor minimum sprite scale
- UIInputEventSystem prefab now defaults to Direct interaction mode
- Modified version check logic for readability
Fixed
- Service providers using a specific serial will now correctly handle device reconnections
- GrabHelper handles null ContactHand objects more gracefully
- Fixed instance where setting CapsuleHand colour through code would report a nullref
- Fixed references to LeapProvider and Camera in PointerElement to prevent nullrefs when changing either in the main UIInputModule
- Fixed GrabBall for new physical setup
- Correctly unassign/re-assign LeapProvider events in PhysicalHandsManager if reference changed at runtime
- Fixed an unreachable code warning if XR_MANAGEMENT and INPUT_SYSTEM are not AVAILABLE
- Fixed the default float height for UIInputCursor
- Increased timeout and retry delay in ServerStatus to reduce GetServerStatus fails
- Fixed an instance where ServerStatus would report a nullref if the devices array fails to populate
- Fixed MRTK integration (updated finger/bone methods for new 7.0.0 implementation)
Full Changelog (Tracking Package)
Documentation
Discussions
Discord
Note
If using the .UnityPackage method to import the Plugin, it is recommended to delete any previous version before importing to avoid import issues.
Unity Release 7.0.0
- This release was tested against Unity 2021LTS and 2022LTS
- Tracking contains stable content including Core, Hands and the Interaction Engine.
- Tracking Preview contains experimental/pre-release content.
Headline features include:
Tracking Client versions
- Windows - v6.0.0
- MacOS - v6.0.0
- Android - v6.0.0
Added
- ImageRetriever allows more than 6 reconnections
- New Pinch and Grab detection utilities
- Option to fade hands on found/lost in HandEnableDisable component
- OnHandFound and OnHandLost events to LeapProviders
- LeftHandTracked and RightHandTracked access booleans to LeapProviders
- PhysicalHandsButton with automatic setup
- PhysicalHandsButtonToggle
- PhysicalHandsAnchorable, including anchoring and un-anchoring based on grabs
- PhysicalHandsSlider
- TwoDimensionalPhysicalHandsSlider example
- Ability to ignore collisions per hand separately from grabs
- Primary hover functionality to physical hands
- PhysicalHandsButton can now use primary hover functionality
Changed
- XRLeapProviderManager renamed LEAP_DIRECT to ULTRALEAP
- Accessors for Hand.Finger, Hand.Bone and Finger.Bone
- Renamed BoneType enum entries to remove redundancies
- Replaced use of PinchStrength for IsPinching with PinchDistance
- PinchDistance is now measured in Metres not Millimetres
- Removed old PhysicalHandsButton
- Anchors no longer require Interaction Engine
- Turntable and Pullcord example scene now uses Physical Hands
- Physical Hands Playground uses new PhysicalHandsButtons and Toggles
- Grab Ball uses Physical Hands rather than Interaction Engine
- Physical Hands events are sent to all event interfaces attached to the interacted rigidbody
- Hard Contact Parent settings access levels to public
- Prefab Create Menu uses Physical Hands prefabs as opposed to Interaction Engine
- Prefab Create Menu chooses URP hands where available
- Shaders use _Color as the default color property name
- Shaders all come under the Ultraleap folder
- Deleted Interaction Engine
- Leap and Leap.Unity namespaces are now Leap
Full Changelog (Tracking Package)
Documentation
Discussions
Discord
Note
If using the .UnityPackage method to import the Plugin, it is recommended to delete any previous version before importing to avoid import issues.
Unity Release 6.15.1
- This release was tested against Unity 2021LTS and 2022LTS
- Tracking contains stable content including Core, Hands and the Interaction Engine.
- Tracking Preview contains experimental/pre-release content.
Headline features include:
Tracking Client versions
- Windows - v6.0.0
- MacOS - v6.0.0
- Android - v6.0.0
Added
- Support for reading the camera matrix
Changed
- Improved XRHands support for Meta Aim Input Actions
Fixed
- Issue with the method signature for LeapPixelToRectilinearEx
- Duplicate meta aim hands when using XRHands Input
- Editor stuck in infinite loop when no service running
- Caching issue with LeapToUnityTransform which causes the hand to be flipped on the Z axis.
Full Changelog (Tracking Package)
Documentation
Discussions
Discord
Note
If using the .UnityPackage method to import the Plugin, it is recommended to delete any previous version before importing to avoid import issues.
Unity Release 6.15.0
- This release was tested against Unity 2021LTS and 2022LTS
- Tracking contains stable content including Core, Hands and the Interaction Engine.
- Tracking Preview contains experimental/pre-release content.
Headline features include:
Tracking Client versions
- Windows - v6.0.0
- MacOS - v6.0.0
- Android - v6.0.0
Added
- LeapServiceProvider accessor for world space position of the Tracking Camera
- LeapXRServiceProvider accessor for world space position of the Tracking Camera
- (Physical Hands) Ability to ignore collisions on single object or all children
- (Physical Hands) Added toggle to GrabHelper to allow kinematic object movement
- (Physical Hands) Ignore Physical hands component can now choose which hand(s) it should be applied to
- (Physical Hands) Edit time representation of hands via Physical Hands Manager
- (Attachment Hands) Do not show warning again this session when deleting attachment points
- (Optional) Metadata capture to help improve the Plugin
- (Physical Hands) Ability to create IgnorePhysicalHands at runtime
- (Fiducial Marker Tracking) Fiducial Marker Tracking support using AprilTag
Changed
- (Config) Additional uses of Config marked as Obsolete
- Any LeapServiceProvider can be used with MRTK subsystem
- Example content to be split by XR, Tabletop and URP Examples
- Combined example content to be part of the main Ultraleap Tracking .unitypackage when importing via .unitypackage
- Added fog and gradient sky for all XR example scenes
- (Hand Rays) Exposed dot product used to test if the hand is facing camera
- (Hinting) Added support for startup setting of Hand Tracking Hints via the Ultraleap Settings window
- (Hinting) Added support for runtime changing of Hand Tracking Hints via static HandTrackingHintManager
- (Hinting) Added support for setting OpenXR Hand Tracking Hints via the OpenXR HandTrackingFeature
- Access of Physical Hands extensions
- Added public accessors to various Physical Hands utilities
- Unified use of TrackedPoseDrivers across XR LeapProviders
Fixed
- Errors in Editor when using pre-2023.3.18 LTS due to FindObjectByType issue
- (Physical Hands) Objects are sticky when they ignore collision with hard contact hands
- (Physical Hands) Ability to toggle ignore Physical hands options from the inspector at runtime.
- (Locomotion) IsPinching wouldn't fire when between Activate and Deactivate values in LightweightPinchDetector
- (Physical Hands) Soft contact button difficult to press in physical hands playground scene when not using UI layer
- (Physical Hands) Disabled Ignore Physical hands components still affecting grab and collision at runtime
- (Physical Hands) Button Prefab uses mesh from example assets
- (Physical Hands) Button gets stuck down if disabled after pressing
- (UI Input Preview) Null UIInput events cause unnecessary error logs
- Memory increase when repeatedly opening scenes with LeapServiceProviders
- ThreadAbort when changing scenes in editor that use multidevice or display the tracking device gizmo
- (LeapServiceProvider) OnDeviceChanged event is not raised when multidevice mode is disabled
- (LeapXRServiceProvider) LeapXRServiceProvider wrongly uses transform relative to camera when offset mode set to transform
- (Hand Binder) incorrect upperArm name definition for elbow joint
- (Physical Hands) Soft Contact NAN collider error when using OpenXR tracking on Android devices
- (Physical Hands) Hand stuck in pose, unable to grab if object is disabled while grabbing
- (Physical Hands) Errors when destroying objects that are grabbed
- (Physical Hands) Errors when adding Physical Hands Manager prefab for the first time
- Use of Device Transforms does not apply rotations
- OpenXR API Layer Service query intent was missing sometimes, preventing API layers functioning correctly
- OpenXR checks minSdkVersion rather than targetSdkVersion for query intents
- (Physical Hands) PhysHands Settings are not localized when using decimals
Full Changelog (Tracking Package)
Documentation
Discussions
Discord
Note
If using the .UnityPackage method to import the Plugin, it is recommended to delete any previous version before importing to avoid import issues.
Unity Release 6.14.0
- This release was tested against Unity 2021LTS and 2022LTS
- Tracking contains stable content including Core, Hands and the Interaction Engine.
- Tracking Preview contains experimental/pre-release content.
Headline features include:
Tracking Client versions
- Windows v5.17.1
- MacOS v5.17.1
- Android v5.17.1
Added
- Physical Hands. This introduces a new way of interacting with object in the virtual world using your hands and unitys physics engine.
- Brand New Example Scene to show off some of the many great ways to use Physical hands.
Changed
- Removed Physics Hands from the preview package as Physical Hands has replaced it.
Known issues
- Repeatedly opening scenes can cause memory use increase
- The OpenXR Leap Provider does not currently support the
Confidencehand property (and will return fixed values) - After using Ultraleap OpenXR in Unity Editor, the tracking mode of device 0 will be set to HMD until the Unity Editor session ends. This can stop the testing of non-XR scenes until the Unity Editor is re-opened
Full Changelog (Tracking Package)
Documentation
Discussions
Discord
Note
If using the .UnityPackage method to import the Plugin, it is recommended to delete any previous version before importing to avoid import issues.
Unity Plugin 6.13.0
- This release was tested against Unity 2021LTS and 2022LTS
- Tracking contains stable content including Core, Hands and the Interaction Engine.
- Tracking Preview contains experimental/pre-release content.
Headline features include:
Tracking Client versions
- Windows v5.17.1
- MacOS v5.17.1
- Android v5.17.1
Added
- (Hands Recorder Preview) A new Hand Recorder to record animation clips of hands and additional objects to produce re-playable actions (e.g for tutorials)
- (Pose Detector) Add a new rule type to match rotation of a joint to a target
- (XR Hands) Added XRHandsLeapProvider to convert the current XRHandsSubsystem data to a LeapProvider for use with the Ultraleap Unity Plugin features
- Added the ability to suppress the Android build warnings
- Help Menu that links out to docs, a place to report bugs & places to get support
Changed
- (Preview Teleportation) Lightweight Pinch Detector's finger detection can be configured
- (Obsolete) Some old unused LeapC APIs have been marked as Obsolete (config, IsSmudged, IsLightingBad)
- Changed from using obsolete FindObjectOfType to using newer implementations
- Ultraleap settings are now in the project settings window, under "Ultraleap"
Fixed
- (Hand Binder) Hands begin at large/small scale and slowly scale to normal size
- (Pinch to Paint Example) Painting sound does not play if pinch began out of tracking range
- LeapXRServiceProvider ensures default device offset mode is set to new defaults when enabled
- Attachment Hand Menu is incorrectly rotated
Known issues
- Repeatedly opening scenes can cause memory use increase
- The OpenXR Leap Provider does not currently support the
Confidencehand property (and will return fixed values) - After using Ultraleap OpenXR in Unity Editor, the tracking mode of device 0 will be set to HMD until the Unity Editor session ends. This can stop the testing of non-XR scenes until the Unity Editor is re-opened
Full Changelog (Tracking Package)
Documentation
Discussions
Discord
Note
If using the .UnityPackage method to import the Plugin, it is recommended to delete any previous version before importing to avoid import issues.
Unity Plugin 6.12.1
- This release was tested against Unity 2021LTS and 2022LTS
- Tracking contains stable content including Core, Hands and the Interaction Engine.
- Tracking Preview contains experimental/pre-release content.
Headline features include:
Fixed
- (leapXRServiceProvider) Hands offset incorrectly on Windows when using Leap 2
Known issues
- Use of the LeapCSharp Config class is unavailable with v5.X tracking service
- Repeatedly opening scenes can cause memory use increase
- Currently the Ultraleap Hand Tracking feature for OpenXR requires the New and Legacy input systems to be enabled, to simultaneously use OpenXR and the Ultraleap Unity Plugin's features.
- The OpenXR Leap Provider does not currently support the
Confidencehand property (and will return fixed values) - After using Ultraleap OpenXR in Unity Editor, the tracking mode of device 0 will be set to HMD until the Unity Editor session ends. This can stop the testing of non-XR scenes until the Unity Editor is re-opened
- Running both the Ultraleap XRHands Subsystem and another XRHands Subsystem at the same time causes unstable results. Only enable one at a time.
Full Changelog (Tracking Package)
Documentation
Discussions
Discord
Note
If using the .UnityPackage method to import the Plugin, it is recommended to delete any previous version before importing to avoid import issues.
Ultraleap Unity Plugin 6.12.0
- This release was tested against Unity 2021LTS and 2022LTS
- Tracking contains stable content including Core, Hands and the Interaction Engine.
- Tracking Preview contains experimental/pre-release content.
Headline features include:
Added
- (MRTK Support) Added an MRTK3 subsystem for using Leap tracking directly (non-OpenXR)
Changed
- (XRHands) XRHands subsystem will now use existing LeapXRServiceProviders found in the scene before considering generating new ones
Fixed
- (XRHands) XRHands double-translates tracking data causing XRI InputActions to be wrongly positioned when the XROrigin is moved
Known issues
- Use of the LeapCSharp Config class is unavailable with v5.X tracking service
- Repeatedly opening scenes can cause memory use increase
- Currently the Ultraleap Hand Tracking feature for OpenXR requires the New and Legacy input systems to be enabled, to simultaneously use OpenXR and the Ultraleap Unity Plugin's features.
- The OpenXR Leap Provider does not currently support the
Confidencehand property (and will return fixed values) - After using Ultraleap OpenXR in Unity Editor, the tracking mode of device 0 will be set to HMD until the Unity Editor session ends. This can stop the testing of non-XR scenes until the Unity Editor is re-opened
- The OpenXR Leap Provider palm can be in unexpected position when using pre-1.4.3 OpenXR Layer. A workaround is to ensure you use 1.4.3 or newer - installed by the 5.12.0 or newer Tracking Service Installer
- Running both the Ultraleap XRHands Subsystem and another XRHands Subsystem at the same time causes unstable results. Only enable one at a time.
Full Changelog (Tracking Package)
Documentation
Discussions
Discord
Community Support
Thanks to our contributors:
@MaxPalmer-UH
@rblenkinsopp
@MattGrayUL
@Dwarph
@rorygames
@MattFiler
@BryceNewell-UL
Note
If using the .UnityPackage method to import the Plugin, it is recommended to delete any previous version before importing to avoid import issues.