Release Notes 4.3.0
Highlights
- Scaniverse supports USDZ, X4 Air, and meshes for 360 camera
- LLM and Skill support in docs
- New Debugger Viewer tool for VPS
- New VPS localization APIs
- Improved VPS2 event handling
- Localization quality and user coaching
- New API-based mesh streaming capabilities
Features/Fixes
Localization quality and user coaching
Developers can optionally enable blur detection through VPS2. It evaluates camera-frame quality before upload and flags frames that may be too blurry to localize well. Apps can use the resulting frameFlagged localization request record to coach users to hold the device steady; flagged frames are still sent for localization. See Guide users during localization for configuration and platform-specific implementation guidance.
New API-based mesh streaming capabilities
Developers can now stream a VPS map's mesh by asset ID in Unity, Swift, and Kotlin. Mesh downloads deliver mesh chunks incrementally, prioritizing chunks near a supplied latitude and longitude. Apps can also request associated texture-image bytes and set limits for chunk count and cumulative download size.
Scaniverse supports USDZ and meshes for 360 camera
Scaniverse now supports generating both splats and meshes from 360 camera captures. An updated asset generation workflow lets users choose which assets to create, including splats, meshes, and VPS maps.
Generated splats and meshes can also be exported as USDZ files, making Scaniverse assets easier to use in workflows such as robotics simulation.
Scaniverse now supports 360 video uploads from the Insta360 X4 Air camera, in addition to the X4 and X5 cameras.
LLM and Skill support in docs
You can now use the LLM documentation index to help AI assistants discover NSDK guides and API references when answering questions, generating code, or providing implementation guidance.
You can also use Niantic Spatial Setup Skills to help an AI assistant guide or automate NSDK installation and configuration in Unity, Swift, and Kotlin.
New Debugger Viewer tool for VPS
You can now use the VPS Debugger Viewer web application to display live or logged events from a VPS Debugger and troubleshoot VPS2 localization issues, an incorrect geographic position, or incorrect anchor or content poses.
New Site and location VPS2 localization APIs
Developers can now target VPS2 localization to a specific Site using localize(siteId:) in Swift, localize(siteId) in Kotlin, or TryLocalize(...) in Unity. The SDK localizes against the Site's production VPS assets without requiring an anchor payload.
Developers can also start VPS2 localization near a specified latitude and longitude using localize(latitude:longitude:radiusMeters:) in Swift, localize(latitude, longitude, radiusMeters) in Kotlin, or TryLocalize(...) in Unity. The SDK finds eligible VPS assets within the requested radius and submits them for localization.
Improved VPS2 event handling
VPS2 now processes localization request and update events on its dedicated task thread. This improves the consistency and thread safety of VPS2 event handling, including telemetry and VPS Debugger events.
Breaking Changes
- Unity:
ARVps2Manager.TryGetLatestLocalizationnow returnstruewhenever the subsystem exists, where it previously returnedfalsewhile the tracking state wasUnavailable. This surfaces the localization's new localized asset, which is valid independent of the tracking state: a VPS asset without a georeference localizes visually while the state staysUnavailable. The geolocation fields are only valid while the tracking state is notUnavailable, so callers that used the return value to decide whether the geolocation fields are usable must checkXRVps2Localization.TrackingStateinstead. This matches the Swift and Kotlin SDKs, where the localization is always reported and the tracking state conveys geolocation validity. - Unity: VPS2 anchors are now served by the new
ARVps2AnchorManagertrackable manager, backed by the newXRVps2AnchorSubsystem.ARVps2Managerrequires the anchor and asset managers next to it (adding them at runtime when missing) and keeps its anchor methods,trackables, andtrackablesChanged, forwarding to the anchor manager, so calls throughARVps2Managerare source compatible. The other surfaces move:ARVps2Manageris no longer anARTrackableManager: casts and generic constraints against that base class, inherited members such asSetTrackablesActive, andprotected override void Update()in subclasses no longer compile. Use theAnchorManagerproperty to reach the trackable manager surface.- Scenes saved with an earlier version serialized the Inspector-wired
trackablesChangedlisteners and theDefault Anchor Game Objectprefab onARVps2Manager; that data is not migrated. Add theARVps2AnchorManagercomponent to the scene in the editor (it is only added automatically at runtime), then re-assign the anchor prefab and re-wire the listeners on it. - Callers of the anchor methods and
GetChangesonXRVps2Subsystemmust move toXRVps2AnchorSubsystem:XRVps2Subsystemnow covers only configuration, localization, and geolocation.
Known Issues
- Importing the NSDK UPM in a project started from Universal 3D template might cause a few build errors reported in the console. Restarting the editor should fix this.
- On iPad Pro running iOS 17 in the Unity External Sample, rotating the device from landscape to portrait may cause a soft lock and screen flickering.