6D.ai SDK Release Notes - version 0.21.0

Release Notes
6D.ai beta SDK v0.21.0
May 28, 2019

Introduction

Happy Tuesday!

After over three months focused on customer projects, we are excited to release a new update to the 6D.ai beta SDK, incorporating both new premium tier features and many improvements to the core technology available to all developers.

Please note that because this SDK introduces a new improved neural network that isn't backwards-compatible, it uses a new separate AR Cloud. Applications using SDK 0.20.x and lower will continue to use the old AR Cloud for loading and saving location map data.

Changes

Along with new premium tier features, this release contains many improvements and changes for all beta developers.

warning Changes are required to code using 6D.ai's Meshing API. Please refer to the Meshing section below.

iPad Support

  • 2019 models of iPad Air (3rd Gen) and iPad Mini (5th Gen) are now supported.

AR Cloud

  • Authentication is now enabled, and the SDK requires your app bundle to contain SixDegreesSDK.plist with the correct credentials in order to initialize. A new state "Disabled" has been added in case the credentials are incorrect.
  • Due to the new more efficient neural network, location relocalization map data is incompatible with previous versions of the SDK and now live in a new instance of the AR Cloud. The AR Cloud instance for versions 0.20.x and lower is still available but there will be no multiplayer and persistence possible between applications running 0.21.0 and above and 0.20.x and lower.
  • Saving is now additive, the SDK will only send to the AR Cloud location map data that was scanned during the session (and since the previous save), greatly reducing the bandwidth footprint of saving.
  • The AR Cloud now runs a process known as Mesh Fusion that straightens, aligns, and stitches location map data. This process corrects some of the tracking error accumulated by the SDK's underlying ARKit tracking and reduces distortions in maps, increasing the consistency of relocalization for persistence and multiplayer.
  • SixDegreesSDK_SaveToARCloud() and SixDegreesSDK_LoadFromARCloud() now return a timestamp to be used as a parameter in API calls to get status, cancel or retry AR Cloud requests.
  • SixDegreesSDK_GetSaveStatus() now takes a save timestamp as parameter and returns save state, save error, upload byte size, and upload progress percentage.
  • There is a new "Packaging" save state for the duration of the file operations previously considered part of "Uploading".
  • Failed saves can be retried with the new API call SixDegreesSDK_RetrySaveToARCloud(), e.g. following a network error.
  • SixDegreesSDK_GetLoadStatus() now takes a load timestamp as parameter and returns load state, load error, download byte size, and download progress percentage.

Meshing

  • Mesh radius has increased from 10m to 100m.
  • Most mesh discontinuities and seams have been fixed.
  • Mesh block size has increased to about 1.4 meters in order to eliminate application-side code that consolidate small blocks into chunks for physics performance. Sample code for Unity and SceneKit has been updated to include simpler mesh controllers.
  • Mesh API names have been updated for consistency. The mesh is known as "Block Mesh" for all beta developers, and is now accessed with SixDegreesSDK_GetBlockMeshInfo() and SixDegreesSDK_GetBlockMesh().
  • warning The vertex buffer has been reorganized to make it easier for mesh controllers to parse it and adapt to various numbers of vertex fields. From now on the vertex buffer contains all position coordinates { x, y, z } back-to-back in the first half of the buffer, and all vertex normal vectors { nx, ny, nz } back-to-back in the second half of the buffer. Sample code has been updated to reflect the change. Please refer to the Meshing API Guide on the dashboard for more information.
  • Due to the new neural network and performance optimizations, mesh updates should occur more frequently. Applications using the mesh for physics should consider throttling collision mesh updates. Updates for rendering and occlusions can be as frequent as possible.

Headers & Feature Tiers

  • SixDegreesSDK_advanced.h has been folded into SixDegreesSDK.h. We provide those API calls for expert developers who need specific ARKit features and recommend other developers use our standard API.
  • SixDegreesSDK_premium.h has been added to expose functionality open to our partners and premium tier customers. If your project needs those features, please contact sales@6d.ai.
  • warning Premium features are currently only available for customers working directly with 6D.ai on high profile custom projects, broadly defined as over $100k per annum and/or with exposure to many millions of end-users. If your project qualifies, please contact sales@6d.ai.
  • We are continuing to define and evolve our product, and plan to make some of these premium features available under a self-service model at a lower price point within the next year.

Unity Sample App

  • A bug in most recent versions of Unity 2018.3 creating a duplicate SixDegreesSDK.framework file in the generated Xcode project has been fixed.
  • The new recommended Unity version is 2018.3.14f1.
  • The drawing sample has been updated to use the Mirror library for local network peer-to-peer instead of the now-deprecated Unity Networking framework.
  • Cancel buttons have been added to the user interface to cancel SaveToARCloud() and LoadFromARCloud()
  • A debug toggle button has been added to the user interface to expose the new GetSaveStatus() and GetLoadStatus() values.
  • Collider mesh updates now happen every 10 mesh rendering updates in order to reduce their share of CPU usage.

SceneKit Sample App

  • Swift version was updated to 5.0.
  • Physics mesh updates now happen every 10 mesh rendering updates in order to reduce their share of CPU usage.

Known Issues

The following issues will be addressed in future releases:

Meshing

  • Difficult environments (white walls, metallic, reflective or transparent surfaces) sometimes produce irregularities like mesh shards flying in mid-air.

Relocalization

  • Outdoor relocalization is currently impacted by the accuracy of GPS on the phone. In situations where the phone GPS varies greatly, relocalization may not occur properly.

Memory

  • Each ​SixDegreesSDK_Initialize()​/​SixDegreesSDK_Stop()​ cycle leaks between 2 and 5 megabytes.

Hardware Requirements

Please check our supported devices list for latest devices our SDK is compatible with.

Build Requirements

In order to build software on top of our SDK, please ensure your system matches the following specifications:

  • iPhone XS Max, iPhone XS, iPhone XR, iPhone X, iPhone 8 Plus, iPhone 8, iPhone 7 Plus, iPhone 7
  • iPad Pro (All generations and sizes), iPad Mini (2019, 5th Gen), iPad Air (2019, 3rd Gen), iPad 2018 (6th Gen only)
  • iOS 12 or iOS 11.4+
  • Xcode 10+
  • Unity3D 2019.2+
  • Unity Hub 2.0+

Please review the 6D.ai SDK Function Definitions and the Meshing API Guide for additional info on SDK functions and how to work with the mesh.