We have published a new release of the XR Interaction Toolkit (XRI) that brings a number of bug fixes and improvements. This version is available now for Unity 2019.4 and later. For those who want to experiment with XRI, the best way to start is with our samples available at GitHub - Unity-Technologies/XR-Interaction-Toolkit-Examples: This repository contains various examples to use with the XR Interaction Toolkit. As always, you can refer to our documentation for more information.
Our goal with XR Interaction Toolkit is to have it serve as the foundation for cross-platform XR interactivity, so that Unity developers can create applications that can be deployed anywhere and provide seamless end user experiences. It is essential that we provide a baseline that is as future-proof as is reasonable for the foreseeable horizon before declaring a production-ready verified release.
We have collected feedback on the pre-release of XRI from a number of users, and this is what weāve heard:
- A common issue is problems with extensibility. Weāve received many requests for more base methods/properties to be overridable and protected instead of being internal or private. This is especially true for AR behaviors where much of the supporting utilities are completely internal, making it difficult for developers to handle touch gestures. Some of the larger methods also need to be broken up more to allow users to have more fine grained control over overriding certain aspects or inserting code between sections.
- The absence of systems to support some interaction patterns such as multi-selecting for two-handed interaction, dynamic attach points when grabbing, and decoupled visual representation of rigged hands or controllers from the tracked position of controllers cause much pain when implementing custom solutions that work within the current architecture of XRI.
- For those using AR, there is very little guidance on configuration and XRI is not flexible enough in its implementation to be integrated into larger projects.
As a result of this feedback and to provide the best possible experience for everyone using XRI, we have decided to hold XRI in pre-release. As we look to add exciting new features outlined on our public roadmap, such as two-handed interaction and articulated hand tracking, we want to ensure the supporting API those features depend on are in a mature state. XRI would not be at the right level of upgradability or quality that a verified package should convey, and we need the extra time to ensure the API becomes stable.
Pre-release
This 1.0.0-pre.8 version of the XR Interaction Toolkit is considered pre-release. Pre-release packages are supported packages in the process of becoming stable. Starting in 2021.1, Unity is changing the way we publish and show packages in the Package Manager, and is designed to provide clear guidance around a packageās readiness and expected support level. For pre-release packages to appear in Package Manager, they must be enabled in Edit > Project Settings > Package Manager and it must be scheduled to be released by the LTS version. There will be additional iterations of XRI before we get to the final verified release.
Installation
XR Interaction Toolkit will not appear in the Package Manager window in Unity 2021.1 and 2021.2 even when the option to show pre-release packages is enabled unless it has already been added. This is intentional and due to the package being held in pre-release and not having a verified 1.0.0 release version for 2021.2 (LTS). Existing projects with the package included, such as the Examples project, will show XR Interaction Toolkit in the Package Manager window.
See Installation in the Manual for instructions to add the package to your project by name.
The current latest versions of the package are 1.0.0-pre.8 and 2.0.0-pre.6 (recommended).
Roadmap
Use the public roadmap to see our latest plans, upvote existing feature requests, and/or submit new feature requests. We are currently working towards a final 1.0 pre-release that is compatible with Unity 2021.2 (LTS), and a verified release that addresses the above feedback by Unity 2022.1. The feature set for the Unity 2021.2 release will primarily reflect what exists today. Most of our focus and development efforts now are on bug fixes and polished documentation & samples to improve developer onboarding. We are simultaneously working to refactor some of the behaviors to improve flexibility for the verified release.
Stay tuned for our plans to get XRI to a verified status.
Whatās new
For a full list of changes, refer to the Changelog in our documentation.
Many of the changes and fixes were a direct result of feedback we received from the forum and from reported bugs. Thank you to everyone who took the time to make these issues known to the team and for your feedback!
Notable changes
- Fixed the attach point for Grab Interactables being inconsistent between Movement Type values. Instantaneous will now be entirely based on the Attach Transform instead of being partially based on its center of mass. This was an important change to make going forward, but it may cause the effective attach position to be different after upgrading when using Instantaneous. It is recommended that you adjust the Attach Transform or pivot as needed, but an Attach Point Compatibility Mode property is available to revert to the old calculation method. The option will be removed in a future version. (1294410)
- Made several additional adjustments and fixes to Grab Interactable and the handling of the different Movement Type values. The Attach Transform can now be moved after being grabbed. The Rigidbody is now being set to Is Kinematic when Instantaneous to improve collisions and transform syncing. The default property values were adjusted to remove the damping when using Velocity Tracking mode, and the default mode was changed from Kinematic to Instantaneous. The Scripting API documentation for movement types were improved to better describe the differences.
- Fixed an exception being thrown when an Interactor or Interactable was registered or unregistered (such as from being enabled or disabled) during processing and interaction events.
- Fixed Direct and Socket Interactor sometimes not being able to interact with an Interactable with multiple Colliders or when either were registered after the trigger collision occurred. (1325375)
- Fixed the Default Input Actions sample asset using the wrong pose bindings for Windows Mixed Reality controllers, causing the controllers to point at the wrong angle. You will need to import the sample into your project again to receive this update.
- Fixed poor performance scaling as the number of valid targets and hover targets increased. AR projects with hundreds of gesture interactables should see a large speedup.
Known issues
Use the Unity Issue Tracker for Package: XR Interaction to see the active issues.
-
The package must be installed by name in Unity 2021.1 and Unity 2021.2 (LTS) since it will not appear in the Package Manager window even when pre-release packages are enabled in project settings.
-
Custom reticles get displayed on objects without a custom reticle (1252565)
-
Socket Interactor can apply the wrong rotation to an interactable and cause the interactable to skew in scale when the interactable has a parent with a non-uniform scale (1228990)
-
UI clicks are cancelled when multiple Ray Interactors are being pressed at the same time (1336124)
-
Grab Interactables can cause undesired behavior when using Continuous Move locomotion where the Character Controller can be blocked from moving while holding it, or cause the rig to rapidly move away when the object overlaps with the Character Controller
-
The XR Device Simulator canāt rotate the HMD when the Mock HMD is enabled.
-
The XR Device Simulator can conflict with connected HMD and controller devices, causing the position or rotation to be from different sources.
-
The XR Interaction Manager can pass invalid EventArgs to Interactors and Interactables when the same event is recursively triggered again by the event handler.
Deprecated members
As we continue developing the package, properties, methods, and events that are currently marked as Obsolete or Deprecated will start to be elevated from warnings to errors before ultimately being removed from the package before the final, verified release version. As more users begin to use the package, we want to eliminate potential confusion from the different members available and improve the experience while developing in an IDE with code completion and member lists.
Sharing feedback
This forum is the best place to open discussions and ask questions. As mentioned above, please use the public roadmap to submit feature requests. If you encounter a bug, please use the Unity Bug Reporter in the Unity Editor, accessible via Help > Report a Bug. Include āXR Interaction Toolkitā in the title to help our team triage things appropriately.