Unreal Engine support for XR development is built on the OpenXR standard, ensuring that OpenXR features supported for Android XR are natively supported in Unreal.
Follow this guide to learn about:
- Unreal Engine support for Android XR
- Unreal Engine XR basics
- Developing and publishing apps for Android XR
- Unreal Engine plugins for Android XR
- Getting support
- Input and interaction
- Supported extensions
Unreal Engine support for Android XR
When you build Unreal apps for Android XR, you can take advantage of the spatial computing capabilities of the latest versions of Unreal Engine 5. Unreal Engine 5 provides support for the core OpenXR specification, while the Android XR Extensions for Unreal provide support for Android XR and other specific extensions to help you get started quickly.
Unreal Engine XR basics
If you are new to Unreal or XR development, you can refer to Unreal's XR development documentation to understand basic concepts and workflows. Here are a few key areas to explore:
- XR Framework: Learn how to construct an VR Pawn by attaching a Camera Component (representing the headset) and Hand Input (representing the hands) to a shared scene root.
- OpenXR Plugin: The core interface for Android XR device support.
- XR Architecture: How Unreal handles the tech stack and XR subsystems.
- Project Setup: Configuring your
.uprojectfor spatial rendering. - Graphics Guidance: Utilizing foveated rendering, multiview, and variable rate shading (VRS).
- Performance and Profiling: Tools and techniques for optimizing your XR application.
- Best Practices: Design and development guidelines for creating comfortable and immersive XR experiences.
Develop and publish apps for Android
Unreal Engine provides comprehensive documentation for developing, building, and publishing for Android. This documentation covers managing Android permissions within the Engine, configuring Android Build Settings (through Project Settings > Platforms > Android), and using the Unreal Automation Tool (UAT).
Additionally, see the documentation for packaging and distributing apps for Android XR for specific requirements that apply to spatial apps that are distributed on the Google Play Store. Ensure your app also adheres to the quality guidelines for immersive experiences to provide a consistent and comfortable user experience on Android XR.
Unreal Engine plugins for Android XR
There are two core plugins that provide support for building Unreal apps for Android XR. These plugins are managed through the Plugins menu (Edit > Plugins).
Android XR OpenXR Plugin
The Android XR OpenXR Plugin is the primary engine interface that adds Android XR support to Unreal. It implements the OpenXR extensions required for spatial tracking, environmental understanding, and perception. To learn how to add and configure this plugin, refer to the Unreal Engine OpenXR documentation.
Android XR Extensions for Unreal
The Android XR Extensions for Unreal supplement the base OpenXR support, including additional features to help you build immersive experiences such as advanced hand mesh data and specific hardware optimizations. To learn how to import and configure this package, follow the Android XR Extensions quickstart.
Get support
If you encounter issues, see the support section for Unreal Engine on our support page for help.
Input and interaction
Creating interactive spatial experiences requires mapping physical movements to digital actions. Unreal Engine uses the Enhanced Input system combined with OpenXR to handle both motion controllers and hand tracking. By setting up Input Actions and Input Mapping Contexts, you can create flexible interactions—like grabbing, pointing, and UI navigation—that work seamlessly across different Android XR input methods.
For a comprehensive guide on building these mechanics, refer to Unreal Engine's documentation on Making Interactive XR Experiences.
Android XR supports the following specific interaction methods within Unreal Engine:
Interaction profiles
You can configure interaction profiles in your Project Settings under the OpenXR section. This allows your app to maintain consistent input mapping across different controllers and tracking methods.
Hand interaction
Hand interaction is provided through the OpenXR Hand Tracking extension. You can access hand joint data and poses through the XR Tracking components in Blueprints or C++.
Eye gaze interaction
Eye gaze data can be retrieved as a standard input pose, letting you drive UI
focus or social presence features. This requires the
android.permission.EYE_TRACKING_FINE permission.
Face tracking
Access real-time facial expression data to animate avatars or drive social
interactions. This uses the XR_ANDROID_face_tracking
extension.
Supported extensions
The following OpenXR extensions are supported when developing for Android XR in Unreal:
| Feature or capability | OpenXR extension string | Provided by |
|---|---|---|
Device Anchor Persistence |
Android XR Extensions for Unreal |
|
Raycast |
Android XR Extensions for Unreal |
|
Trackables (Planes/Depth) |
Android XR Extensions for Unreal |
|
Object Tracking |
Android XR Extensions for Unreal |
|
Scene Meshing |
Android XR Extensions for Unreal |
|
Face Tracking |
Android XR Extensions for Unreal |
|
Eye Tracking |
Android XR Extensions for Unreal |
|
Passthrough Camera State |
Android XR Extensions for Unreal |
|
Passthrough Mesh Layer |
Android XR Extensions for Unreal |
|
Depth Texture |
Android XR Extensions for Unreal |
|
Light Estimation |
Android XR Extensions for Unreal |
|
Performance Metrics |
Android XR Extensions for Unreal |
|
Recommended Resolution |
Android XR Extensions for Unreal |
|
Hand Interaction |
Android XR Extensions for Unreal |
|
Debug Utils |
Unreal Native OpenXR |
|
Performance Settings |
Unreal Native OpenXR |
|
Display Refresh Rate |
Unreal Native OpenXR |
|
Hand Tracking Mesh |
Android XR Extensions for Unreal |
|
Space Warp |
Unreal Native OpenXR |
|
Equirect2 Composition Layer |
Unreal Native OpenXR |
|
Android Thread Settings |
Unreal Native OpenXR |
Extensions are provided by one of these sources:
- Android XR Extensions for Unreal: These are Google-specific extensions
(
ANDROID) developed for the Android XR platform. To utilize these spatial capabilities, you must install and enable the Android XR Extensions plugin in your .uproject. - Unreal Native OpenXR: These features leverage the Khronos (
KHR), Extension (EXT), and Meta (FB) standard extensions that are already integrated and maintained directly within Unreal Engine's core OpenXR plugin.