Announcing Structure SDK (Cross-Platform) 0.7.1: Improved Color, All-New Core Playground, and macOS Support


Update 0.7.1 (April 2019):

We’re announcing Structure SDK (Cross-Platform) 0.7.1 - a follow-up maintenance update to Structure SDK (Cross-Platform) 0.7, which is considered a major release.

This release requires Structure Core firmware version 0.9.6. If your sensor has firmware version 0.9.3 or 0.9.4, you can use the included CoreFirmwareUpdater tool to upgrade. If your firmware version is older than 0.9.2 (i.e. 0.8.6), please contact Occipital for support in upgrading your sensor.

Release type: Windows, Linux, macOS, Android
Firmware: Version 0.9.6 required
Architectures: x86_64 (Windows/Linux/macOS), arm64 (Linux/Android)

API changes

  • StructureCoreDepthRangeMode presets have been reconfigured internally to work better across Structure Core devices.
  • Added convertDepthToRgba function for DepthFrame to help with rendering depth frames using a color map.
  • Added saveImageAsPointCloudMesh function for DepthFrame. Outputs a gray, 3D point cloud as a PLY mesh.
  • DepthFrame::saveImageToPngFile now outputs a 16bit PNG image with each pixel holding the depth value in millimeters.
  • Additional documentation for saveImageToPngFile functions for all CameraFrames types. Details output pixel format and image type.
  • The default StructureCoreDepthResolution enum is now VGA instead of QVGA.
  • Added BodyScanning enum preset to StructureCoreDepthRangeMode.
  • Added minMaxDepthInMmOfDepthRangeMode to CaptureSessionSettings. Returns the estimated min and max depth values possible for a specified StructureCoreDepthRangeMode preset.
  • Added Streaming enum to CaptureSessionEventId. Useful for registering when the internal driver has officially started streaming frames.
  • Added createDirectories function to Utilities.h. Used to create directories when they do not exist for each platform.


  • The SDK can now detect and report when the Windows USB Driver for Structure Core is not installed.
  • Added USBDriverNotInstalled enum to CaptureSessionEventId to report out when the Windows USB Driver for Structure Core is detected to not be installed.


  • applyExpensiveCorrection for DepthFrame is now on by default.
  • CaptureSessionUSBVersion is now displayed in the Streaming GUI.
  • Full OCC recording is now supported. Click on the “Record OCC” button in the Streaming GUI to start, and again to stop. The output OCC file will be in your Documents folder in Documents/occ.
  • A button to export a snapshot on all streaming sensor, Save Images & PLY, has been created. The output images will be in your Documents folder in Documents/occ.
  • The color map table when rendering depth frames now uses the estimated min and max depth of the specified StructureCoreDepthRangeMode.
  • When a StructureCoreDepthRangeMode is specified, the exposure and gain UI sliders for infrared frames now correctly adjust to the presets internal values.
  • When One-shot calibration is enabled, it will no longer be enabled when returning to the Configuration GUI from the Streaming GUI after streaming is stopped.

Known issues

  • CaptureSessionUSBVersion will always return USB1 if the USB port in use is not USB3.
  • When streaming on multiple sensors over a USB2 port with FrameSync enabled, some frames may not be delivered. (Such as VGA Depth + Infrared, both 30FPS)

We’re super excited to announce the release of Structure SDK (Cross-Platform) 0.7!

This is our first major update to the Structure SDK (Cross-Platform) since releasing Structure Core. It now features a unified API across all supported platforms, and adds full macOS support.

With this release, we have focused on a number of different improvements to both the firmware found within Structure Core and the software it interacts with.

These improvements include dynamic calibration, improved color frame conversion with options, and a cross-platform core playground sample application.

Full Release Notes

This release requires Structure Core firmware version 0.9.4. If your sensor has firmware version 0.9.2 or 0.9.3, you can use the included CoreFirmwareUpdater tool to upgrade.

  • Release type: Windows, Linux, macOS (new), Android
  • Firmware: version 0.9.4 required
  • Architectures: x86_64 (Windows/Linux/macOS), arm64 (Linux/Android)

If your firmware version is older than 0.9.2, please contact for support in upgrading your sensor.

Dynamic Calibration (Beta)

Dynamic Calibration can recover depth in a situation where the sensor is deformed due to mounting, impact or other causes.


Improved Color

With the new demosaic option, all Structure Core (Color) will see improved color. These improvements are made by making improvements to the color pipeline.

Cross-Platform Core Playground

This package contains the official cross-platform release of Core Playground, a tool that enables testing and tweaking of streaming functionality on Structure Core. You can enable streams for every sensor on the device and adjust their settings.

This version of Core Playground replaces the previous macOS-only preview release.

API changes

  • Added getImuFromDepthExtrinics and getImuFromVisibleExtrinsics functions to CaptureSession.
  • Added support for Structure Core dynamic infrared calibration. See StructureCoreDynamicCalibrationMode. This is a beta feature and is disabled by default.
  • Added options for Structure Core color frame conversion. See StructureCoreDemosaicMethod.
  • Added default values for StructureCoreVisibleResolution and StructureCoreInfraredResolution.
  • Structure Core visible frame gamma correction is now enabled by default.
  • Added saveImageToPngFile function for DepthFrame, ColorFrame, and InfraredFrame.
  • ConnectedSensorInfo and enumerateConnectedSensors() are no longer defined in terms of C++ STL types. This resolves a crash on Windows when using enumerateConnectedSensors() in combination with the C++ multithreaded debug runtime ( /MDd option to cl.exe ).
  • References to functionality specific to iOS and Structure Sensor have been removed.
  • The colorFrame member of CaptureSessionSample has been renamed to externalColorFrame .
  • The MathTypes.hpp header has been merged into MathTypes.h .
  • CaptureSession::sensorSerialNumber() is deprecated in favor of CaptureSession::sensorInfo() which returns additional information.
  • GL.h header has been removed.
  • Removed iOS-specific IMU data types from IMUEvents.h .
  • Removed iOS-specific functionality from OCCFileWriter.h .
  • Removed unused functionality from Utilities.h .
  • Added Android-specific function registerSensorByUSBFileDescriptor() which replaces USB device file descriptor and path options in CaptureSessionSettings.
  • Additional documentation for CaptureSessionUSBVersion.

All platforms

  • All platforms now share the same sample codebase and are built with CMake.
  • CorePlayground is now cross-platform and includes source code. It replaces the platform-specific Recorder sample apps from previous SDK versions.
  • The Linux SimpleStreamer example is now available for all platforms.


  • The size of the Structure library has been reduced by over 50%.


  • Full support for macOS has been added.


  • The size of the Structure library has been reduced by over 50%.
  • The auxiliary libraries libAndroidUtils.a , , and have been removed from the SDK.

Known issues

  • Structure Core devices may reboot continuously if connected to a standby charging USB port (often marked with a lightning bolt or battery symbol). A powered USB hub or a different port should be used instead until this issue has been fixed.
  • Camera and IMU streams may fail to initialize when repeatedly starting and stopping the streams.

listed #2