ARDK 0.6.0 Release Notes 2021-02-10

Tl;dr

API Refactor in Depth, Occlusions, and Semantics

We refactored Semantics and Depth into separate classes from IARFrame. See Breaking Changes section for more detail.

Example Scene and Extensions

We’ve updated some of the content and organization of our example scenes to make them more developer friendly. We’ve also updated some of our ‘Helpers’. Note: in future releases of ARDK we will begin to refer to our Helpers as Extensions.

Documentation and User Manual

We’ve made improvements to our documentation, including updates to the organization, stylization, and version release process.

Niantic.ARDK Namespace

ARDK is now fully namespaced with the Niantic prefix.

EditorToolSuite is now VirtualStudio and ARLog

The EditorToolSuite has been rebranded as VirtualStudio. A new logging tool has been added, called ARLog which should make debugging ARDK functionality much easier. Please see below for additional information.

Heads up: As of ARDK 0.6.0, we officially require .Net 4.x.

Some APIs included in ARDK may no longer compile on .Net 3.5.

Heads up: Armv7 builds will no longer work on 64 bit Android devices.

This is an ARCore requirement. In order to properly deploy to 64 bit Android devices, the scripting backend must be set to Il2cpp, and target architecture ARM64.

Notable Known Issues

An Exception in Unity is thrown for Android devices running Android 6 and lower that attempt to use the ARDK.

As announced for 5.0, on Android due to new manifest tags interacting with Unity’s manifest merge operation, we do not support target API >29. This issue remains for 0.6.0.

See Known Issues section for full list.

What’s New

  • [Basic AR] New ARSceneManager Prefab to enable drag and drop functionality for managing an ARSession’s lifecycle, configuration, and basic camera support.

  • [Multiplayer] Added message size limits to the IMultipeerNetworking API

    • SendDataToPeer(s)/BroadcastData methods:

      • Size of byte[] data:

        • 8kb for Unreliable messages,

        • 10mb for Reliable messages

    • StorePersistentKeyValue method:

      • Size of string key (when encoded in UTF8):

        • 4kb

      • Size of byte[] data:

        • 100mb

  • [Multiplayer] For external builds: ARDKAuthRegistrar no longer requires runtime input or fires any events.

    • Authentication information is set in Awake(), and the ServerConfiguration is ready to use immediately afterwards. This is following the larger external authentication refactor.

  • [Multiplayer] For external builds: the multiplayer session ID is now generated from user input as well as each external developer’s API key.

    • This will prevent distinct applications from connecting to the same session.

  • [Multiplayer] The most recently received PeerState for each peer is available through the IARNetworking.LatestPeerStates property.

  • [Developer Tools] ARLog

    • Build your application with the scripting define symbol #ARDK_DEBUG to enable debug logs from ARDK.

    • Filter for relevant namespaces or classes using ARLog.EnableLogFeature() to see logs regarding initialization, method calls, and native events. This can be useful for debugging problems without modifying ARDK code or using a separate ARDK artifact.

  • [Developer Platform] Attaching a debugger to an armored build of ARDK will no longer crash the application.

  • [Developer Platform] New manual-style documentation pages and organization.

  • [Developer Platform] Moved scenes that were previously in the ARDK-Example project but were mainly used for testing purposes into a test-specific project. These will no longer be released with ARDK-Examples

Improvements

  • [Basic AR] ARDK will no longer crash if on Android if a native AR session is unable to be initialized.

  • [Multiplayer] Improved performance of a peer caching helper method in Multiplayer sessions.

  • [Contextual Awareness] Example scene ContextualAwareness has been broken up into its various components to more directly relay API usage and best practices.

  • [Developer Tools] Updated ARDK Remote Feed App UI

  • [Developer Platform] ARDK-Example scenes have all been audited for API best practices.

  • [Developer Platform] Documentation pages updated where necessary.

Bug Fixes

  • [Multiplayer] Fixed a crash/exception related to the PeerAdded event when using _NativeARNetworking.

  • [Developer Tools] Fixed mock plane anchors to work properly with non-axis-aligned bounding boxes

  • [Developer Tools] Fixed PlatformAgnosticInput class to correctly surface mouse-up events.

  • [Developer Tools] Fixed Unity crashing/freezing related to improper deinitialization of RemoteConnection processes.

  • [Developer Tools] For external builds: fix for Remote Connection over USB not properly creating and connecting to MultipeerNetworking and ARNetworking sessions

Breaking Changes

  • [Basic AR] Removed IARAnchor.WorldScale property and dependencies

  • [Multiplayer] Removed many obsolete or unused fields from ServerConfiguration.

  • [Multiplayer] Removed the ARDKAuthRegistrar.DidAuthenticate event, authentication now occurs in native code upon creation of the session. Internal developers (non external builds) no longer need to consider the ARDKAuthRegistrar.

  • [Multiplayer] For external builds: the authentication flow is now slightly different.

    • As long as the ServerConfiguration.ApiKey and ServerConfiguration.AuthenticationURL fields are set before creating a NativeMultipeerNetworking object, no further action is necessary. Authentication codes are no longer required.

  • [Contextual Awareness] Refactored Semantics and Depth into separate classes from IARFrame.

  • [Contextual Awareness] Removed ModelParams, the replacements are properties from ISemanticBuffer and IDepthBuffer

  • [Contextual Awareness] Interpolate and FitToDisplay from ISemanticBuffer and IDepthBuffer return a new instance of the same class but with new data.

  • [Contextual Awareness] MonoDepthUtils was removed and functions went to ISemanticBuffer and IDepthBuffer to get the focal length with less arguments.

  • [Contextual Awareness] Removed the depreciated MonoDepth class.

  • [Contextual Awareness] Renamed MonoDepthExample to ContextAwarenessExample.

  • [Contextual Awareness] Renamed Niantic.ARDK.Utilities.Downloader.Feature.MonoDepth to Niantic.ARDK.Utilities.Downloader.Feature.ContextAwareness.

  • [Contextual Awareness] Removed the ConfigHelper component from the ARDK-Examples project. ARDK will automatically set default URLs for resources (DBoW and Depth Model) if none are provided before they are required.

  • [Developer Tools] EditorToolSuite is now VirtualStudio.

  • [Developer Tools] Removed all classes in the Niantic.ARDK.VirtualStudio.Remote namespace from the public API

  • [Developer Platform] The namespace ARDK is now Niantic.ARDK.

    • All references to ARDK will be broken.

  • [Developer Platform] ARSession, ARNetworking, and MultipeerNetworking use factories now. Additionally, the methods for those that already had factories have changed.

    • By default, most users will just want to call CreateOrThrow(), either with empty arguments or with a collection of ARInfoSources that tells what to actually use (LiveDevice, Remote or Mock, for the moment, but new values may be added in the future).

  • [Developer Platform] There are no more static “Any” events. The only static events are in the factories and notify when the objects are created. From that point, users can register to any event they need directly on the instance they were just notified about.

  • [Developer Platform] Many classes that had a Destroy() method are now IDisposable instead.

Known Issues

  • [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.

  • [Multiplayer] For external builds: failure to authenticate (invalid API key or authentication URL) will result in the application hanging.

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

  • [Contextual Awareness] Due to model quality changes, Walkable Planes may be less accurate than in previous releases.

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

  • [Developer Tools] Hit tests performed on a Mock Plane may return results in the “air”.

  • [Developer Tools] Mock plane hit tests aren’t returned in order of closest to farthest.

  • [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.

  • [Developer Platform] An Exception in Unity is thrown for Android devices running Android 6 and lower that attempt to use the ARDK.

  • [Developer Platform] On Unity 2019.1 to Unity 2019.3, there will be a build issue involving GPUFence. Update ARCameraFeed’s GPUFence to GraphicsFence to prevent this issue locally

  • [Developer Platform] On Unity 2019, our .asmdef files contain references to deprecated platforms and do not load properly. This will affect users that use the Universal Render Pipeline, or have require .asmdefs to link dependencies.

Released: February 10, 2021