ARDK 0.7.0 Release Notes 2021-04-06

Tl;dr

Meshing Early Access and Depth improvements are here!

Welcome to the world of Meshing! Included in this release is Early Access to Meshing features, as well as made changes to improve the accuracy and performance of our Context Awareness features (ex. depth, occlusion, semantic segmentation). Context Awareness features are recommended only for Samsung S9 and up as well as iPhone X and up. Greater device support coming soon.

New Unity version support (2019.4.21)

We have officially moved to supporting the Unity 2019.4.21 and later versions of 2019.4 LTS and are no longer ensuring compatibility with other Unity versions.

Known Issues & Breaking Changes

We have several new known issues and breaking changes mostly related to the introduction of our new Context Awareness features and depth improvements. Please check out the Known Issues and Breaking Changes sections below for more detail.

What’s New

  • [Contextual Awareness] New Early Access Meshing APIs. Please refer to the User Manual for an overview of the new APIs and developer tools.

  • [Contextual Awareness] Requiring iOS 13 for Inference support.

  • [Contextual Awareness] Depth, semantics, and meshing support both portrait and landscape modes.

  • [Multiplayer] New NetworkSessionManager component

    • Add this component to your scene to quickly set up a networked experience (no code required)

  • [Developer Platform] Updated list of supported devices on the System Requirements page

Improvements

  • [Basic AR] Optimized ARFrame objects lifetime and GC pressure with a new disposal policy

    • See IARSession.DefaultFrameDisposalPolicy for more information

  • [Basic AR] IARSession will now skip an IARFrame if the application is still processing an old frame

  • [Developer Platform] Documentation clarification for IARSession objects

    • Any IARSession objects must be disposed to release memory

  • [Developer Platform] Minimum supported version of Unity raised to 2019.4.21

  • [Developer Platform] Updated the APIs in ARSessionFactory, MultipeerNetworkingFactory, and ARNetworkingFactory to be more intuitive

    • Calling Create() without any arguments will attempt to create the most applicable session for the platform

    • Supplying an ARInfoSource in Create(ARInfoSource source) will attempt to create the specified type of session

  • [Developer Platform] Fix for missing images in documentation

  • [Developer Platform] Updated how the example scenes (in ARDK-Examples) use Init/Run/Pause buttons to more cleanly integrate with the ARSceneManager and CapabilityChecker

  • [Developer Platform] Removed the Recording/Capture example scenes as they’re not useful to external teams

  • [Developer Platform] Clarified the documentation around how to support Android 11

  • [Developer Platform] Clarified the documentation around configuring the editor so that compute shaders can be executed in Remote

  • [Developer Platform] Refactor internal static dictionaries to use ConcurrentDictionary class to reduce chance of race conditions

Bug Fixes

  • [Basic AR] Fixed a bug with IARCamera.Intrinsics property in which the incorrect source (GPU vs. CPU) intrinsics was returned

  • [Basic AR] Fixed an issue where IARAnchor objects owned by an IARSession were never disposed

  • [Basic AR] Fixes an issue where IARAnchor objects during a merge would not be disposed of if the IARSession object was destroyed

  • [Multiplayer] Fixed a race condition in _NativeARNetworking that would lead to a crash on peer join event

  • [Multiplayer] Fixed multiple bugs in the CoordinatedClock that led to the SyncStatus reporting Stable before it actually was stable, as well as a bug that led to the clock never becoming stable

  • [Multiplayer] Fixed documentation to correctly say IARNetworking.PeerPoseReceived events are not raised for local pose updates.

  • [Multiplayer] Fixed a bug with the Unity Editor that would return Guid.Zero instead of a valid peer identifier

  • [Developer Tools] Fixed issue where hit tests would not return correct value for Mock AR sessions

  • [Developer Tools] Fixed bug where GameObjects with a MockSceneConfiguration weren’t destroyed when running in Virtual Studio’s Remote mode

  • [Developer Tools] Fixed bug where error would occur if no prefab was specified in the MockPlayConfiguration

  • [Developer Platform] Fixed potential security issue in the NativeArraySerializer in which data was allocated before verifying that it can actually be allocated

  • [Developer Platform] Removed ARDK-Examples project from having visibility into ARDK’s internal APIs

  • [Developer Platform] Fixed bug where Pong example scene would sometimes error upon closing the scene

  • [Developer Platform] Removed Code Snippets link from the header on the documentation site (page is obsolete)

  • [Developer Platform] Fixed a bug with _CallbackQueue that would lead to some ARDK events not being executed if other events threw an exception on the same frame

  • [Developer Platform] Fixed a bug in the Contextual Awareness example scene concerning redundantly removing background buffers after the camera was destroyed

  • [Developer Platform] Properly updated ARDK requirements to .Net 4.x

  • [Developer Platform] Fixed a Unity API reference that prevented ARDK from compiling out of the box in Unity versions 2019.1 to 2019.3

  • [Developer Platform] Fixed a bug causing an exception to be thrown when attempting to use ARDK classes from an Android device with OS version < 7

Breaking Changes

  • [Basic AR] Removed broken method IImagePlane.GetBaseDataAddress()

    • The actual address can be obtained by the IImagePlane.Data property

  • [Basic AR] IImagePlane.Data property refactored to use NativeArray, reducing an allocation

  • [Basic AR] New interface properties to support ARFrame disposal policy

    • New property IARSession.DefaultFrameDisposalPolicy

    • New property IARFrame.DisposalPolicy

  • [Multiplayer] IMultipeerNetworking.Leave() no longer requires the metadata value passed to Join() as a parameter

  • [Multiplayer] Renamed IMultipeerNetworking.Deinitializing event to Deinitialized

  • [Multiplayer] Renamed AnyARNetworkingInitializedArgs.Networking property to ARNetworking

  • [Contextual Awareness] IARFrame.Depth and IARFrame.Semantics could be null depending on IARConfiguration.DepthTargetFrameRate and IARConfiguration.SemanticsTargetFrameRate

  • [Contextual Awareness] IDepthBuffer.FitToViewport and ISemanticBuffer.FitToViewport need to be used respectively for the buffers to fit the display

  • [Contextual Awareness] IARFrame.Depth and IARFrame.Semantics could be null depending on IARConfiguration.DepthTargetFrameRate and IARConfiguration.SemanticsTargetFrameRate

  • [Contextual Awareness] Only two semantic channels are supported at the moment: sky and ground.

  • [Contextual Awareness] Removed IARConfiguration.SetSemanticThreshold method

    • Ideal thresholds are now determined by the model itself

  • [Contextual Awareness] Removed DepthWalkablePlane

    • Please see ARDKExamples/ContextAwareness/WalkablePlane/WalkablePlaneExampleManager.cs for information on how to use WalkablePlane with Meshing

  • [Contextual Awareness] IDataBuffer.Data property refactored to use NativeArray, reducing an allocation

  • [Developer Platform] New enum value ARInfoSource.Default was added to support updated APIs in ARSessionFactory, MultipeerNetworkingFactory, and ARNetworkingFactory

    • This may have broken scenes using components that exposed an ARInfoSource field in the Inspector, such as those using ARSessionManager

  • [Developer Platform] Class IARDKReadOnlyCollection removed and replaced with IReadOnlyCollection where applicable

  • [Developer Platform] Removed previously public internal class CharPtrStringMarshaler

  • [Developer Platform] ReadOnlyDictionary made internal from public

  • [Developer Platform] Public methods that use ReadOnlyCollection were refactored to use IReadOnlyCollection instead

  • [Developer Platform] Usages of the term “Native” renamed to “LiveDevice” to better reflect behavior.

    • IARSession.CreateNativeSession()IARSession.CreateLiveDataSession()

    • IMultipeerNetworking.CreateNativeNetworking()IMultipeerNetworking.CreateLiveDataNetworking()

Known Issues

  • [Basic AR] Android devices return a zero position for image anchors

  • [Basic AR] Image anchors on Android update every frame with no underlying data changing

  • [Multiplayer] Using the SendMessage API within the PeerAdded callback directed towards the newly added Peer will fail.

    • Workaround: Use the SendMessage API for a particular Peer outside their corresponding PeerAdded callback.

  • [AR Scanning] Recorder v2 captures images with colors swapped on some Xiaomi devices.

  • [Contextual Awareness] Stopping the ARSession while the Depth model is downloading causes the app to freeze on iOS

  • [Contextual Awareness] Semantics in portraitUpsideDown and landscapeRight do not work correctly

  • [Contextual Awareness] ARDK-Playground Ring scene is broken upon reentry.

  • [Contextual Awareness] In the Contextual Awareness (Semantics) example scene, the camera view is not visible when viewing Ground or Sky segmentation

  • [Developer Tools] MockARNetworking pose and state logic slightly differ from LiveDevice.

  • [Developer Platform] On Android due to new manifest tags interacting with Unity’s manifest merge operation, we do not support target API >29.

Released: April 06, 2021