Install Asset
Install via Godot
To maintain one source of truth, Godot Asset Library is just a mirror of the old asset library so you can download directly on Godot via the integrated asset library browser
Quick Information
XR Kit is a set of addons providing various features for XR development in Godot 4.Complete description available at: https://github.com/patrykkalinowski/godot-xr-kitPhysics Movement:Physics-based XR movement. Player hands collide with environment and can grab or push physics object in realistic manner. Player body can collide with physics objects and be moved around in space.Hand Gesture Recognition:Real-time recognition of hand poses based on predefined templates.Smooth Input Filter:Applies smoothing to XR hand movement using 1€ filter. Supports hand and controller tracking. See 1€ filter demo. Can be used to reduce microstutter or simulate fake weight by increasing hand movement lag.Cinematic View:Smooth VR preview for recording in native monitor resolution."xr-kit/examples/playground.tscn" implements Physics Movement and Hand Gesture Recognition. "xr-kit/examples/smooth_input_filter.tscn" implements Smooth Input Filter.Compatibility:Plugin should work with every OpenXR runtime supporting Vulkan and using OpenXR hand tracking extension. It works best with SteamVR, as it simulates hand skeleton even when using controllers. In other runtimes, when using controllers, hands will not receive skeleton data and they will not work.For plugin to be fully compatible with all OpenXR runtimes, it needs hand models with animations - which is planned, but not yet implemented.
Godot XR Kit
Godot XR Kit is a set of addons providing various features for XR development in Godot 4.
Physics Movement
Physics-based XR movement. Player hands collide with environment and can grab or push physics object in realistic manner. Player body can collide with physics objects and be moved around in space.
Features
- Physics hand follows controller and can be blocked by world objects
- Players can grab and move objects
- Heavy objects are harder to move
- Grabbing heavy objects with two hands makes them easier to move
- Fingers curl around grabbed objects geometry
- Players can move themselves by pushing away from objects
- Heavier objects allow for stronger push
- Players can move in space with thrusters (button activated)
- Players can hit objects with their head and push themselves away
- Ghost hand appears when controller hand gets far from physics one
- Body snap rotation
- Body XYZ rotation around static object using hands (trigger activated)
Hand Gesture Recognition
Real-time recognition of hand poses based on predefined templates.
Currently tracked hand poses:
- open
- rest
- half_grip
- full_grip
- point
- thumb_up
Smooth Input Filter
Applies smoothing to XR hand movement using 1€ filter. Supports hand and controller tracking. See 1€ filter demo. Can be used to reduce microstutter or simulate fake weight by increasing hand movement lag.
Features:
- Supports smoothing movement for hand tracking Skeleton3D and Node3D (ex. XRController3D)
- Reduces jitter while keeping lag to minimum
Cinematic View
Smooth VR preview for recording in native monitor resolution.
Raw preview (left) vs Cinematic View
Features:
- Full screen VR preview in monitor native resolution
- Smooth preview can be rendered to another screen
- Smoothing parameters can be tuned
- Full range of Godot's camera settings is available
Getting started
Repository contains Godot 4.0.2 project with XR and main scene preconfigured. Releases are reduced to addon files only.
Latest release is available in Godot's Asset Library under the name XR Kit or on releases page.
To get most recent version of the whole project, download from master branch.
/addons/xr-kit/examples/playground.tscn
implements Physics Movement, Hand Gesture Recognition and Cinematic View.
/addons/xr-kit/examples/smooth_input_filter.tscn
implements Smooth Input Filter.
Compatibility
Plugin should work with every OpenXR runtime supporting Vulkan and using OpenXR hand tracking extension. It works best with SteamVR, as it simulates hand skeleton even when using controllers. In other runtimes, when using controllers, hands will not receive skeleton data and they will not work.
For plugin to be fully compatible with all OpenXR runtimes, it needs hand models with animations - which is planned, but not yet implemented.
Headset | Runtime | Compatible |
---|---|---|
HP Reverb G2 | SteamVR | Yes |
Pico 4 | Standalone | No hand tracking |
Meta Quest 2 | Standalone | Hand tracking only (no controllers) |
Other | ? | ? |
Contributing
If you'd like to improve the plugin, there are few options:
Test compatibility with other headsets and runtimes
I don't have access to other headset than mine (HP Reverb G2). Compatibility checks with other headsets are more than welcome.
Code improvements
Source code contains multiple TODO
comments with known issues and missing features. You can also take a look at existing Issues.
Showcase
Build something with the plugin and share an example scene or recorded video here.
Ideas
If you have some ideas how to improve the plugin, don't hesitate to create new discussion or message me directly at [email protected].
XR Kit is a set of addons providing various features for XR development in Godot 4.
Complete description available at: https://github.com/patrykkalinowski/godot-xr-kit
Physics Movement:
Physics-based XR movement. Player hands collide with environment and can grab or push physics object in realistic manner. Player body can collide with physics objects and be moved around in space.
Hand Gesture Recognition:
Real-time recognition of hand poses based on predefined templates.
Smooth Input Filter:
Applies smoothing to XR hand movement using 1€ filter. Supports hand and controller tracking. See 1€ filter demo. Can be used to reduce microstutter or simulate fake weight by increasing hand movement lag.
Cinematic View:
Smooth VR preview for recording in native monitor resolution.
"xr-kit/examples/playground.tscn" implements Physics Movement and Hand Gesture Recognition. "xr-kit/examples/smooth_input_filter.tscn" implements Smooth Input Filter.
Compatibility:
Plugin should work with every OpenXR runtime supporting Vulkan and using OpenXR hand tracking extension. It works best with SteamVR, as it simulates hand skeleton even when using controllers. In other runtimes, when using controllers, hands will not receive skeleton data and they will not work.
For plugin to be fully compatible with all OpenXR runtimes, it needs hand models with animations - which is planned, but not yet implemented.
Reviews
Quick Information
XR Kit is a set of addons providing various features for XR development in Godot 4.Complete description available at: https://github.com/patrykkalinowski/godot-xr-kitPhysics Movement:Physics-based XR movement. Player hands collide with environment and can grab or push physics object in realistic manner. Player body can collide with physics objects and be moved around in space.Hand Gesture Recognition:Real-time recognition of hand poses based on predefined templates.Smooth Input Filter:Applies smoothing to XR hand movement using 1€ filter. Supports hand and controller tracking. See 1€ filter demo. Can be used to reduce microstutter or simulate fake weight by increasing hand movement lag.Cinematic View:Smooth VR preview for recording in native monitor resolution."xr-kit/examples/playground.tscn" implements Physics Movement and Hand Gesture Recognition. "xr-kit/examples/smooth_input_filter.tscn" implements Smooth Input Filter.Compatibility:Plugin should work with every OpenXR runtime supporting Vulkan and using OpenXR hand tracking extension. It works best with SteamVR, as it simulates hand skeleton even when using controllers. In other runtimes, when using controllers, hands will not receive skeleton data and they will not work.For plugin to be fully compatible with all OpenXR runtimes, it needs hand models with animations - which is planned, but not yet implemented.