Releases: google-ar/arcore-unity-extensions
Releases · google-ar/arcore-unity-extensions
ARCore Extensions for AR Foundation v1.35.0
Known issues
- Camera's
GeospatialPose.EunRotation
differs on Android and iOS if the device is not in landscape orientation. iOS always returns a value as if the device is in landscape orientation. This issue will be resolved in next release.
New APIs and capabilities
- All Geospatial poses now expose their orientation accuracy of the Yaw rotation, replacing heading accuracy.
GeospatialPose.OrientationYawAccuracy
Deprecations
GeospatialPose.Heading
has been deprecated. Please useGeospatialPose.EunRotation
instead.GeospatialPose.HeadingAccuracy
has been deprecated. Please useGeospatialPose.OrientationYawAccuracy
instead.
Other changes
- ARCore Geospatial API
AREarthManager.CheckVpsAvailability(double, double)
will continue to retry silently in the background if it is unable to establish a connection to the ARCore service for 5 seconds.
ARCore Extensions for AR Foundation v1.34.0
Known issues
- arfoundation-samples#988: When running AR Foundation 4.1.10, 4.2.3, or 5.0.0-pre.13 on iOS 16,
XRCameraSubsystem.TryGetLatestFrame()
causes a screen freeze. It is fixed in 4.1.12, 4.2.6, and 5.0.2, but a low FPS regression occurs instead. A workaround solution is to use a lower AR Foundation version until a new patch is available, for example, 4.1.13, 4.2.7, and 5.0.3.
New APIs and capabilities
- A new ARCore Geospatial API has been added to check for Visual Positioning System (VPS) availability at a specified horizontal position at runtime. This API can be used without an active AR session. For example, to present an "Enter AR" button only when VPS is available. See Check VPS Availability for more information and a usage example.
- Geospatial poses now expose their orientation in 3D space.
- Geospatial poses can now be converted to and from poses relative to the camera.
AREarthManager.Convert(Pose)
. Note that Geospatial poses obtained from this function have their heading value set to zero. Instead, useGeospatialPose.EunRotation
.AREarthManager.Convert(GeospatialPose)
Other changes
- The Geospatial sample will check for VPS availability when entering the AR view.
- The Geospatial sample now supports setting anchors through screen tapping.
Bug fixes
- Fixed "Device Not Supported" being reported for emulator images on ARM host machines.
- Fixed a bug where the Geospatial API would return auth errors when using Signed JWT authentication on iOS.
AREarthManager.EarthState
andARGeospatialAnchor.terrainAnchorState
now correctly returnErrorNotAuthorized
when there is an authentication issue instead of returningErrorInternal
.
ARCore Extensions for AR Foundation v1.33.0
Breaking & behavioral changes
- To use Cloud Anchors, you must now enable the ARCore API instead of the older ARCore Cloud Anchor API, which is now deprecated. To support older app versions, you may enable both while making the transition. Apps built with ARCore SDK 1.32.0 and lower will target the older API, while apps built with ARCore SDK 1.33.0 and higher will target the new API. Note the following:
- The new API uses the domain name
arcore.googleapis.com
instead ofarcorecloudanchor.googleapis.com
. - If you are using Signed JWTs to authenticate on iOS, you will need to change the
audience
claim tohttps://arcore.googleapis.com/
for apps built with ARCore SDK 1.33.0 and higher. - If you are using an API Key which is restricted by API, you must allow the ARCore API.
- If you send requests to the ARCore Cloud Anchor Management API from your backend, you must also change the domain name to
arcore.googleapis.com
, after enabling the ARCore API. - The old API/endpoint will continue to be supported through August 2023.
- See ARCore 1.33 Cloud Anchor endpoint changes for more details.
- The new API uses the domain name
- ARCore's
targetSdkVersion
has been updated to Android API level 33. If your app does not specify atargetSdkVersion
, your app'stargetSdkVersion
will become 33 due to manifest merging. Specifying a Target API Level in your Unity project's Project Settings > Player > Android > Other Settings will override ARCore'stargetSdkVersion
value.
New APIs and capabilities
- New states
EarthState.ErrorEarthNotReady
,EarthState.ErrorSessionNotReady
are added to better communicate the current state of Earth localization. - The new ARCore Geospatial Terrain anchor API creates an anchor at a specified horizontal position and altitude relative to the horizontal position's terrain.
ARAnchorManager.ResolveAnchorOnTerrain()
provides an anchor for game objects in your scene at the specified latitude, longitude, altitude above the terrain, and orientation.TerrainAnchorState
gets the Terrain anchor state of Geospatial Terrain anchor.
Other changes
- Disable Analytics Reporting in External Dependency Manager on Unity 2022.1 to avoid network connect errors in Editor. For more details, refer to Issue#484.
- Updates for Xcode 14 - see Xcode 14 Release Notes:
- The iOS SDK binaries no longer contain bitcode, as Apple has deprecated bitcode.
- The iOS SDK binaries no longer contain 32-bit architectures, as Xcode 14 does not support these.
- The iOS SDK no longer supports deployment targets < 11.0, as Xcode 14 does not support these.
- The iOS SDK binaries now contain the arm64 simulator architecture for Macs with Apple Silicon.
- The iOS SDK binaries are now packaged as XCFrameworks.
- Update Geospatial sample to wait for the initialization of Geospatial functionality after enabling the config.
- Enable plane finding in Geospatial sample to help the dynamic alignment of Terrain anchors.
Bug fixes
- Fixed an issue where all active scenes are loaded in the Editor after building process even they were not loaded before the build.
ARCore Extensions for AR Foundation v1.32.0
Breaking & behavioral changes
- ARCore's
targetSdkVersion
has been updated to Android API level 32. If your app does not specify atargetSdkVersion
, your app'stargetSdkVersion
will become 32 due to manifest merging. Specifying a Target API Level in your Unity project's Project Settings > Player > Android > Other Settings will override ARCore'stargetSdkVersion
value.
Bug fixes
- The known issue in Google Play Services for AR (ARCore) version 1.31 where configuring a session with
GeospatialMode.Enabled
while the session is running may cause the session to hang has been fixed.
ARCore Extensions for AR Foundation v1.31.0
Breaking & behavioral changes
- Cloud Anchors feature now uses an independent setting for its native dependencies. To build your application with Cloud Anchors feature, navigate to Edit > Project Settings > XR Plug-in Management > ARCore Extensions > Optional Features and select Cloud Anchors.
- The maximum range of Depth measurements has increased from 8191mm to 65535mm when building with ARCore SDK 1.31 and later. The Depth API now uses all 16-bits to represent depth, where previously only 13 bits were used for depth values. For more information, see ARCore Depth changes in ARCore 1.31.
New APIs and capabilities
The new ARCore Geospatial API
utilizes data from Google Earth 3D models and Street View image data from Google
Maps to enable your app for immersive, global-scale, location-based augmented
reality experiences.
- C# reference
AREarthManager
provides localization ability in geospatial coordinates.EarthTrackingState
gets the tracking state of Earth for the latest frame.EarthState
maintains Earth error conditions.
GeospatialPose
describes a specific latitude, longitude, altitude, and compass heading.ARGeospatialAnchor
provides an anchor for game objects in your scene at the specified latitude, longitude, altitude, and orientation.
Known Issues
- Configuring a session with
GeospatialMode.Enabled
while the session is running may cause the session to hang. This issue will be resolved in Google Play Services for AR (ARCore) version 1.32. In the meantime, ensure your app configuresGeospatialMode.Enabled
before the session is started.
Other changes
- Upgraded ExternalDependencyManager to v1.2.169 for bug fixes. See details in EDM's change log.
ARCore Extensions for AR Foundation v1.30.0
Known issues
- None
New APIs and capabilities
- Add a new
arcore-unity-extensions-without-edm4u.tgz
release. This release variant does not bundle external dependencies such as External Dependency Manager for Unity, and allows for upgrades to EDM. Using this lite release may resolve incompatibilities when using Firebase libraries. See installation instructions for ARCore Extensions for AR Foundation to get started.
Other changes
- Upgraded ExternalDependencyManager to v1.2.168 to better support 2021.2 , see details in EDM's change log.
Bug fixes
- Fixed issue where ARCore session configures every frame even there is no change in the session config which causes FPS drop.
ARCore Extensions for AR Foundation v1.29.0
Known issues
- None
Breaking & behavioral changes
- Beginning in November 2022, AR-enabled apps will no longer be able to acquire NDK images or image metadata. The SDK versions impacted depend on the specific function being called, see the deprecation announcement to learn more.
- C: Calls to
ArImage_getNdkImage
andArImage_getNdkCameraMetadata
will always returnnullptr
for theAImage
andACameraMetadata
objects. - Java: The
Image
object returned byFrame#acquireCameraImage()
will be of size0
x0
pixels. Calls toFrame#getImageMetadata()
will always throwIllegalArgumentException
. - Unity (AR Foundation):
- When using AR Foundation 2.1 (Unity 2019 LTS), calls to
XRCameraSubsystem.TryGetLatestImage(out XRCameraImage)
will always returnfalse
. - AR Foundation 4.x and later versions are unaffected, calls to
XRCameraSubsystem.TryGetLatestImage(out XRCameraImage)
will behave normally.
- When using AR Foundation 2.1 (Unity 2019 LTS), calls to
- ARCore SDK for Unity (deprecated): Calls to
Frame.CameraImage.AcquireCameraImageBytes()
will be of size0
x0
pixels. Calls toFrame.CameraMetadata.GetAllCameraMetadataTags()
will return an emptyList<CameraMetadataTag>
.
- C: Calls to
- ArImage#getCropRect() now returns a full-sized crop rectangle, i.e. all pixels in the Image are valid. See
android.media.Image#getCropRect()
for additional information.
Other changes
- The ARCore Extensions package now depends on ARKit XR Plugin to ensure that the installed AR Foundation version is compatible with the ARKit XR Plugin version. This fixes a compile error when installing ARCore Extensions on Unity 2019.x and enabling the ARKit XR plugin.
- ARCore Extensions project settings has been moved from Project Settings > XR > ARCore Extensions to Project Settings > XR Plug-in Management > ARCore Extensions.
ARCoreExtensionsConfig
,ARCoreExtensionsCameraConfigFilter
,ARCoreRecordingConfig
have been moved from Create > XR > ARCore Extensions to Create > XR menu.
Bug fixes
- …
ARCore Extensions for AR Foundation v1.28.0
Known issues
- None
Breaking & behavioral changes
- Beginning in November 2022, AR-enabled apps will no longer be able to acquire NDK images or image metadata. The SDK versions impacted depend on the specific function being called, see the deprecation announcement to learn more.
- C: Calls to
ArImage_getNdkImage
andArImage_getNdkCameraMetadata
will always returnnullptr
for theAImage
andACameraMetadata
objects. - Java: The
Image
object returned byFrame#acquireCameraImage()
will be of size0
x0
pixels. Calls toFrame#getImageMetadata()
will always throwIllegalArgumentException
. - Unity (AR Foundation):
- When using AR Foundation 2.1 (Unity 2019 LTS), calls to
XRCameraSubsystem.TryGetLatestImage(out XRCameraImage)
will always returnfalse
. - AR Foundation 4.x and later versions are unaffected, calls to
XRCameraSubsystem.TryGetLatestImage(out XRCameraImage)
will behave normally.
- When using AR Foundation 2.1 (Unity 2019 LTS), calls to
- ARCore SDK for Unity (deprecated): Calls to
Frame.CameraImage.AcquireCameraImageBytes()
will be of size0
x0
pixels. Calls toFrame.CameraMetadata.GetAllCameraMetadataTags()
will return an emptyList<CameraMetadataTag>
.
- C: Calls to
New APIs and capabilities
- None
Deprecations
- None
Other changes
- To support Android 12, ARCore Extensions for AR Foundation now requires Gradle version 6.1.1 or later and Android Gradle Plugin 4.0.1 or later. For details, refer to Building for Android 12.
- Removed CloudAnchors sample since the Unity HLAPI package is no longer available in Unity 2021.2 and later. The PersistentCloudAnchors sample remains and should be used instead.
- The ARCore Extensions SDK now only automatically cleans up External Dependency Manager dependencies in batch mode to avoid conflicts when patching
Assets/Plugins/Android/mainTemplate.gradle
, for example when building for Android 11 or Android 12.
Bug fixes
- Fixed issue where ARCoreExtensionsCameraConfigFilter fails to render its field labels in Unity 2020.3.
ARCore Extensions for AR Foundation v1.27.0
Known issues
- None.
Breaking & behavioral changes
- None.
New APIs and capabilities
- None.
Deprecations
- None.
Other changes
- None.
Bug fixes
- Various bug fixes and performance improvements.
ARCore Extensions for AR Foundation v1.26.0
Known issues
- Unity Android builds will fail when targeting API Level 31, or when targeting API Level 30 or lower while Android build-tools 31.0.0 is installed. For more information, see Building for Android 12.
Breaking & behavioral changes
- None
New APIs and capabilities
- Added Recording and Playback API support for setting ARCore dataset locations as
Uri
s.- Added
ARCoreRecordingConfig.Mp4DatasetUri
to set the output location of a recording to aUri
. - Added
ARPlaybackManager.SetPlaybackDatasetUri(Uri)
to play back a dataset from aUri
.
- Added
Deprecations
- Recording and Playback with file path strings has been deprecated in favor of
Uri
s.- The member
ARCoreRecordingConfig.Mp4DatasetFilepath
is deprecated. UseARCoreRecordingConfig.Mp4DatasetUri
instead. - The member
ARPlaybackManager.SetPlaybackDataset(string)
is deprecated. UseARPlaybackManager.SetPlaybackDatasetUri(Uri)
instead.
- The member
Other changes
- Fixed #32:
NullReferenceException
caused by deleting preloaded assets.
Bug fixes
- Fixed issue where importing ARCore Extensions using TGZ leads to resolving dependencies failures. It now uses
Assets/ExtensionsAssets
folder for all generated assets.