Skip to content

Commit d4453a4

Browse files
committed
Android XR Unity Extensions v1.0.0
1 parent 2423b97 commit d4453a4

File tree

213 files changed

+9621
-4819
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

213 files changed

+9621
-4819
lines changed

Assets/Banner.png.meta

Lines changed: 0 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/iconBG.png.meta

Lines changed: 0 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/iconFG.png.meta

Lines changed: 0 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CHANGELOG.md

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,68 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
88
and this package adheres to
99
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
1010

11+
## [1.0.0] - 2025-05-07
12+
13+
### Editor version and package compatibility
14+
15+
* This version of the package requires minimal Unity Editor version `6000.1.0b12`. You can install the official **Unity 6.1** (e.g. `6000.1.0f1` or newer) from the Unity Hub.
16+
* Package dependencies updated in this version:
17+
* OpenXR Plugin (`com.unity.xr.openxr`) 1.14.2
18+
* AR Foundation (`com.unity.xr.arfoundation`) 6.1.0
19+
* Verified compatible packages:
20+
* Unity OpenXR Android XR (`com.unity.xr.androidxr-openxr`) 1.0.0-pre.2
21+
* Composition Layer (`com.unity.xr.compositionlayers`) 2.0.0
22+
23+
### Known issues
24+
* **Vulkan Subsampling** now causes rendering issues in multiple samples, including **ImageTracking**, **HandMesh**, **SceneMeshing**, and **XRController**.
25+
* It's confirmed as a regression issue from **OpenXR Plugin** package, expect to be fixed by future releases.
26+
* **Workaround**: To disable it, under the setting menu of **Android XR (Extensions) Session Management**, unselect **Subsampling (Vulkan)**.
27+
28+
### Added
29+
* Marker Tracking and QR Code Tracking:
30+
* New OpenXR Feature `XRMarkerTrackingFeature` which provides marker tracking via `ARTrackedImageManager`. Including APIs:
31+
* Extension method `ARTrackedImage.IsMarker()` to check if the image instance is a marker.
32+
* Extension method `ARTrackedImage.TryGetMarkerData(out XRMarkerDictionary, out int)` to get marker data from a marker instance.
33+
* New ScriptableObject `XRMarkerDatabase`, a container of `XRMarkerDatabaseEntry`, used to manage marker references in an `XRReferenceImageLibrary`.
34+
* New OpenXR Feature `XRQrCodeTrackingFeature` which provides QR Code tracking via `ARTrackedImageManager`. Including APIs:
35+
* Extension method `ARTrackedImage.IsQrCode()` to check if the image instance is a QR Code.
36+
* Extension method `ARTrackedImage.TryGetQrCodeData(out string)` to get the QR code data from a QR Code instance.
37+
* New implementation of `XRImageTrackingSubsystem`. To use it with AR Foundation's `ARTrackedImageManager`, create an `XRReferenceImageLibrary` with a QR Code reference named **QrCode** and/or updates marker references from `XRMarkerDatabase`.
38+
* New sample **ImageTracking** which demonstrates the usage of QR Code tracking and marker tracking.
39+
* Added experimental features support which use OpenXR extensions `XR_ANDROIDX_*`. **Noted**:
40+
* Applications can then access `ANDROIDX` extensions at runtime but **cannot be published in Google Play Store**.
41+
* Experimental features can take several iterations towards formal releases which **may include breaking changes, deprecation, and removal**.
42+
* Body Tracking **(Experimental*)**:
43+
* New Experimental OpenXR Feature `XRBodyTrackingFeature` which provides body tracking via `ARHumanBodyManager`.
44+
* New sample **BodyTracking** which demonstrates the usage of body tracking.
45+
* System State **(Experimental*)**:
46+
* New Experimental OpenXR Feature `XRSystemStateFeature` which provides system state via `TryGetSystemState(out systemState)`.
47+
* Added system state API usage to **BlendMode** sample.
48+
* Scene Meshing **(Experimental*)**:
49+
* New Experimental OpenXR Feature `XRSceneMeshingFeature` which provides scene mesh data via `XRMeshSubsystem`.
50+
* Added new sample **SceneMeshing** which demonstrates the usage of scene meshing API.
51+
52+
### Changed
53+
* **Subsampling (Vulkan)** is now disabled by default in **Android XR (Extensions) Session Management**.
54+
* Face Tracking:
55+
* Updated `XRFaceParameterIndices` with new enum values for tongue blendshapes.
56+
* Updated `XRFaceState` with new property `ConfidenceRegions`, indexed by new enum `XRFaceConfidenceRegion`.
57+
58+
### Deprecated
59+
* N/A
60+
61+
### Removed
62+
* Removed `XRTrackableFeature`, `XRAnchorFeature`, and **Trackables** sample. Please use `ARPlaneFeature` and `ARAnchorFeature` from **Unity OpenXR Android XR** instead.
63+
* Removed `XRDisplayRefreshRateFeature` and **DisplayRefreshRate** sample. Please use `DisplayUtilitiesFeature` from **Unity OpenXR Android XR** instead.
64+
65+
### Fixed
66+
* Fixed typo in `XRHandMeshFeature` which referred to depth texture permission rather than hand tracking permission.
67+
* Fixed bug in `XRHandMeshFeature` which started a subsystem in the `OnSubsystemStop()` callback.
68+
1169
## [0.9.1] - 2025-04-03
1270

1371
### Added
14-
* New Sample **XRController** which syncs and displays Samsung Controller
72+
* New Sample **XRController** which syncs and displays Samsung Controller.
1573

1674
### Changed
1775
* N/A
@@ -38,7 +96,7 @@ supports the following features:
3896
- Tracked Objects via Object Tracking Subsystem Provider
3997
- Hand Meshes via Mesh Subsystem Provider.
4098
- Passthrough Composition Layer via OpenXR Composition Layer Provider
41-
- Face Tracking via MonoBehavior `XRFaceTrackingManager`
99+
- Face Tracking via MonoBehaviour `XRFaceTrackingManager`
42100
- Unbounded Reference Space
43101
- Display Refresh Rate
44102
- Environment Blend Mode

Editor/Google.XR.Extensions.Editor.asmdef

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
"GUID:e7613e527d035461da6942ba7283ee2d",
1111
"Unity.XR.CoreUtils.Editor",
1212
"Unity.XR.CompositionLayers",
13-
"Unity.XR.CompositionLayers.Editor"
13+
"Unity.XR.CompositionLayers.Editor",
14+
"Unity.XR.ARSubsystems",
15+
"Unity.XR.ARSubsystems.Editor"
1416
],
1517
"includePlatforms": [
1618
"Editor"
@@ -22,41 +24,11 @@
2224
"autoReferenced": true,
2325
"defineConstraints": [],
2426
"versionDefines": [
25-
{
26-
"name": "Unity",
27-
"expression": "6000.0.4",
28-
"define": "UNITY_6000_0_4_OR_NEWER"
29-
},
30-
{
31-
"name": "Unity",
32-
"expression": "6000.0.23",
33-
"define": "UNITY_6000_0_23_OR_NEWER"
34-
},
35-
{
36-
"name": "com.unity.xr.openxr",
37-
"expression": "1.8.2",
38-
"define": "UNITY_OPENXR_1_8_2_OR_NEWER"
39-
},
40-
{
41-
"name": "com.unity.xr.management",
42-
"expression": "4.4.0",
43-
"define": "XR_MGMT_4_4_0_OR_NEWER"
44-
},
4527
{
4628
"name": "com.unity.xr.androidxr-openxr",
47-
"expression": "0.1",
29+
"expression": "0.5.0",
4830
"define": "UNITY_OPEN_XR_ANDROID_XR"
4931
},
50-
{
51-
"name": "com.unity.xr.androidxr-openxr",
52-
"expression": "0.2",
53-
"define": "UNITY_OPEN_XR_ANDROID_XR_0_2_0"
54-
},
55-
{
56-
"name": "com.unity.xr.androidxr-openxr",
57-
"expression": "0.3.9",
58-
"define": "UNITY_OPEN_XR_ANDROID_XR_0_4_0"
59-
},
6032
{
6133
"name": "com.unity.xr.hands",
6234
"expression": "0.1",

Editor/Internal/AndroidXRBuildUtils.cs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,13 @@
2020
namespace Google.XR.Extensions.Editor.Internal
2121
{
2222
using System.Linq;
23+
using Unity.XR.Management.AndroidManifest.Editor;
2324
using UnityEditor;
2425
using UnityEditor.XR.Management;
2526
using UnityEditor.XR.OpenXR.Features;
2627
using UnityEngine.XR.OpenXR;
2728
using UnityEngine.XR.OpenXR.Features;
2829

29-
#if XR_MGMT_4_4_0_OR_NEWER
30-
using Unity.XR.Management.AndroidManifest.Editor;
31-
#endif
32-
3330
internal static class AndroidXRBuildUtils
3431
{
3532
// UnityEditor.XR.OpenXR.Features.Android.AndroidFeatureSet is an internal class,
@@ -48,15 +45,13 @@ public static TOpenXRFeature GetActiveFeature<TOpenXRFeature>()
4845
return OpenXRSettings.ActiveBuildTargetInstance.GetFeature<TOpenXRFeature>();
4946
}
5047

51-
#if XR_MGMT_4_4_0_OR_NEWER
5248
public static string PrintManifestElement(ManifestElement manifestElement)
5349
{
54-
return string.Format("Path: {0}{1}",
55-
string.Join("/", manifestElement.ElementPath),
56-
string.Join("", manifestElement.Attributes.Select(
57-
pair => string.Format("\n Attribute: {0}={1}", pair.Key, pair.Value))));
50+
string element = string.Join("/", manifestElement.ElementPath);
51+
string attributes = string.Join(string.Empty, manifestElement.Attributes.Select(
52+
pair => string.Format("\n Attribute: {0}={1}", pair.Key, pair.Value)));
53+
return string.Format("Path: {0}{1}", element, attributes);
5854
}
59-
#endif
6055

6156
internal static bool IsAnyAndroidXRFeatureEnabled()
6257
{

Editor/Internal/AndroidXRFeatureSet.cs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,17 @@ namespace Google.XR.Extensions.Editor.Internal
2828
FeatureIds = new string[] {
2929
XRSessionFeature.FeatureId,
3030
XREnvironmentBlendModeFeature.FeatureId,
31-
XRTrackableFeature.FeatureId,
32-
XRAnchorFeature.FeatureId,
3331
XRObjectTrackingFeature.FeatureId,
32+
XRMarkerTrackingFeature.FeatureId,
33+
XRQrCodeTrackingFeature.FeatureId,
3434
XRFaceTrackingFeature.FeatureId,
3535
XRPassthroughFeature.FeatureId,
3636
XRHandMeshFeature.FeatureId,
3737
XRFoveationFeature.FeatureId,
3838
XRUnboundedRefSpaceFeature.FeatureId,
39+
XRBodyTrackingFeature.FeatureId,
40+
XRSceneMeshingFeature.FeatureId,
41+
XRSystemStateFeature.FeatureId,
3942
},
4043
// Features enabled and disabled along with selecting and deselecting the feature set
4144
// from Editor.
@@ -45,13 +48,12 @@ namespace Google.XR.Extensions.Editor.Internal
4548
// Features enabled along with selecting the feature set from Editor,
4649
// desired to include all XR_ANDROID_* features provided by this package.
4750
DefaultFeatureIds = new string[] {
48-
XRTrackableFeature.FeatureId,
49-
XRAnchorFeature.FeatureId,
5051
XRObjectTrackingFeature.FeatureId,
52+
XRMarkerTrackingFeature.FeatureId,
53+
XRQrCodeTrackingFeature.FeatureId,
5154
XRFaceTrackingFeature.FeatureId,
5255
XRPassthroughFeature.FeatureId,
5356
XRHandMeshFeature.FeatureId,
54-
5557
},
5658
UiName = "Android XR (Extensions)",
5759
Description = "Feature group that provides Android XR experience and " +
@@ -68,14 +70,18 @@ internal class AndroidXRFeatureSet
6870
/// </summary>
6971
internal static readonly string[] _sessionManagementDependentIds = new string[]
7072
{
71-
XRAnchorFeature.FeatureId,
7273
XREnvironmentBlendModeFeature.FeatureId,
7374
XRFaceTrackingFeature.FeatureId,
7475
XRFoveationFeature.FeatureId,
76+
XRHandMeshFeature.FeatureId,
7577
XRObjectTrackingFeature.FeatureId,
78+
XRMarkerTrackingFeature.FeatureId,
79+
XRQrCodeTrackingFeature.FeatureId,
7680
XRPassthroughFeature.FeatureId,
77-
XRTrackableFeature.FeatureId,
7881
XRUnboundedRefSpaceFeature.FeatureId,
82+
XRBodyTrackingFeature.FeatureId,
83+
XRSceneMeshingFeature.FeatureId,
84+
XRSystemStateFeature.FeatureId,
7985
};
8086
}
8187
}

Editor/Internal/AndroidXRProjectValidationRules.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,11 @@ static void AddAndroidXRProjectValidationRules()
3939
"Android XR reuiqres resizable windows to render pop-ups correctly " +
4040
"in immersive view, such as system permission requests.",
4141
IsRuleEnabled = AndroidXRBuildUtils.IsAnyAndroidXRFeatureEnabled,
42-
#if UNITY_6000_0_4_OR_NEWER
4342
CheckPredicate = () => PlayerSettings.Android.resizeableActivity,
4443
FixItMessage =
4544
"Go to <b>Project Settings > Player Settings</b>, " +
4645
"selet <b>Android</b> tab, then enable <b>Resizable Activity</b>.",
4746
FixIt = () => PlayerSettings.Android.resizeableActivity = true,
48-
#else
49-
CheckPredicate = () => PlayerSettings.Android.resizableWindow,
50-
FixItMessage =
51-
"Go to <b>Project Settings > Player Settings</b>, " +
52-
"selet <b>Android</b> tab, then enable <b>Resizable Window</b>.",
53-
FixIt = () => PlayerSettings.Android.resizableWindow = true,
54-
#endif
5547
FixItAutomatic = true,
5648
Error = true,
5749
},

Editor/Internal/XRAnchorFeatureEditor.cs

Lines changed: 0 additions & 51 deletions
This file was deleted.

0 commit comments

Comments
 (0)