Skip to content

Godot XR Kit is a set of addons providing various features for XR development in Godot 4

License

Notifications You must be signed in to change notification settings

patrykkalinowski/godot-xr-kit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Godot XR Kit - Physics Movement

Features

  • Physics hand follows controller and can be blocked by world objects
  • Player 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
  • Player can move themselves by pushing away from objects
    • Heavier objects allow for stronger push
  • Player can move in space with thrusters
  • Player can brake in space with thruster brake
  • Player can hit objects with their head and push themselves away
  • Ghost hand appears when controller hand gets far from physics one
  • Physics hand is reset to controller position if it gets too far from it (ex. hand got stuck)
  • Joystick snap rotation
  • Smooth 6 degrees of freedom rotation around grabbed static object (trigger activated)
  • Fingers wiggle a little when hand is moving

Read more

Hand Gesture Recognition

Real-time recognition of hand poses based on predefined templates.

Godot XR Kit - Hand Gesture Recognition

Poses tracked by default:

  • open
  • rest
  • fist
  • thumb_up
  • one
  • two
  • three
  • four
  • five
  • middle_finger

Read more

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.

Godot XR Kit - Smooth Input Filter

Features:

  • Supports smoothing movement for hand tracking Skeleton3D and Node3D (ex. XRController3D)
  • Reduces jitter while keeping lag to minimum

Read more

Cinematic View

Smooth VR preview for recording in native monitor resolution.

Godot XR Kit - Cinematic View

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

Read more

Getting started

Repository contains Godot 4.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. Branch new_playground contains much better playground scene with more features and is more interesting in general, but it crashes on standalone. After I fix this, new_playground will be merged to master.

/addons/xr-kit/examples/smooth_input_filter.tscn implements Smooth Input Filter.

If you are on Quest, make sure your hardware is configured properly:

  • Enable "Developer Runtime Features" in Oculus PCVR app (Settings -> Beta)
  • Enable Developer Mode in Meta Quest app on your phone

Compatibility

XR Kit has been tested with SteamVR and Oculus (PC and standalone) using Meta Quest 3.

Contributing

If you'd like to improve the plugin, there are few options:

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].