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 anARSession
’s lifecycle, configuration, and basic camera support.[Multiplayer] Added message size limits to the
IMultipeerNetworking
APISendDataToPeer
(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 theServerConfiguration
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 theIARNetworking.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
andARNetworking
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 theARDKAuthRegistrar
.[Multiplayer] For external builds: the authentication flow is now slightly different.
As long as the
ServerConfiguration.ApiKey
andServerConfiguration.AuthenticationURL
fields are set before creating aNativeMultipeerNetworking
object, no further action is necessary. Authentication codes are no longer required.
[Contextual Awareness] Refactored
Semantics
andDepth
into separate classes fromIARFrame
.[Contextual Awareness] Removed
ModelParams
, the replacements are properties fromISemanticBuffer
andIDepthBuffer
[Contextual Awareness]
Interpolate
andFitToDisplay
fromISemanticBuffer
andIDepthBuffer
return a new instance of the same class but with new data.[Contextual Awareness]
MonoDepthUtils
was removed and functions went toISemanticBuffer
andIDepthBuffer
to get the focal length with less arguments.[Contextual Awareness] Removed the depreciated
MonoDepth
class.[Contextual Awareness] Renamed
MonoDepthExample
toContextAwarenessExample
.[Contextual Awareness] Renamed
Niantic.ARDK.Utilities.Downloader.Feature.MonoDepth
toNiantic.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 nowVirtualStudio
.[Developer Tools] Removed all classes in the
Niantic.ARDK.VirtualStudio.Remote
namespace from the public API[Developer Platform] The namespace
ARDK
is nowNiantic.ARDK
.All references to ARDK will be broken.
[Developer Platform]
ARSession
,ARNetworking
, andMultipeerNetworking
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 ofARInfoSource
s that tells what to actually use (LiveDevice
,Remote
orMock
, 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 nowIDisposable
instead.
Known Issues
[Multiplayer] Using the
SendMessage
API within thePeerAdded
callback directed towards the newly added Peer will fail.Workaround: Use the
SendMessage
API for a particular Peer outside their correspondingPeerAdded
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 fromLiveDevice
.[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
. UpdateARCameraFeed
’sGPUFence
toGraphicsFence
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