Interaction SDK feature overview
Updated: Jun 25, 2025
Interaction SDK is a device agnostic input system that converts raw controller and hand inputs into generic pointer events. As of v0.8.0, it has replaced
InputSystem as the default system that generates input, hover and click events.
With Interaction SDK, you can:
- Use either your hand or controller’s ray or pinch interaction to grab 3D meshes or flat panels.
- Interact with panels by touching them directly. Hand and controller meshes are prevented from penetrating panels to make poking feel more natural.
Demonstrating grabbing a panel directly and scrolling, and then using the hand’s ray interaction to transform an object.
How to use Interaction SDK
Interaction SDK is enabled by default in any project that uses the VRFeature.
Panels and meshes can be configured to move, rotate and scale by adding the
Grabbable component. For more information about grabbables, see
Grabbables in Interaction SDK.
Pointer events are the primary way to listen to input. See
Input events for more information on how to listen to input events on scene objects, or entities.
How to disable Interaction SDK
While Interaction SDK provides a device agnostic model for handling input, it does not suit some advanced use cases. To opt-out of
InteractionSDK and use the controller-centric
InputSystem, set the
inputSystemType property on
VRFeature that is created in the
registerFeatures method of your
AppSystemActivity:
VRFeature(this, inputSystemType = VrInputSystemType.SIMPLE_CONTROLLER)
Interaction SDK operates on its own set of components, listed below. With the exception of IsdkGrabConstraints, these components are not visible within the Spatial Editor as they are added automatically by ISDK systems.
IsdkCurvedPanelIsdkPanelDimensionsIsdkPanelGrabHandle
IsdkGrabbableIsdkGrabConstraintsIsdkBoxColliderIsdkSphereCollider
Interaction SDK lifecycle
Each app frame, the IsdkSystem ticks the native library. This involves:
- Reading raw input from OpenXR input devices (hands and controllers).
- Reading Interaction SDK component changes from the ECS data model to add, update, or delete internal interactables.
- Using physics to determine hit info between input devices and interactables.
- Resolving any conflicts between interactions (for example, when multiple interactables are close together, which is grabbed?).
- Modifying the ECS data model of interactable entities with any positional updates (for example, grab transforms).
- Modifying the ECS data model of device visual entities (the hand or controller mesh) to apply touch limiting.
- Generating a list of PointerEvents and broadcasting to InputListeners (raw events through
onPointerEvent, and
backwards compatible events through onInput).
- Curved panels cannot be grabbed and transformed.
- Entities that have a
Grabbable or IsdkGrabbable component will no longer receive onClick events unless they also have an IsdkPanelDimensions component. To work around this, listen to button presses in the onInput callback. - Interaction SDK can only be disabled at app launch, not conditionally at runtime.