Update (Jan 23, 2018): Structure SDK v0.7 - Major Update is now available. See the forum announcement for more info.
Update (Dec 22, 2016): Structure SDK v0.6.2 - Maintenance Update is now available. See the announcement for more.
Update (Sept 28, 2016): Structure SDK v0.6.1 - Maintenance Update is now available. See the announcement for more.
Today we’re pleased to announce the release of **Structure SDK 0.6**!
Today’s update is considered a major update to the Structure SDK with a focus on improved object scanning. From all of us at Occipital, we hope you enjoy this latest and greatest and fastest Structure SDK.
And a Big Thanks! to the 16 organizations that participated in testing the Beta for Structure SDK 0.6. Your feedback helped us get this version ready for public release.
New & Improved Object Scanning
SDK 0.6 features a brand new mapper. Its performance is a dramatic improvement over the old mapper, and will allow for much more frequent model updates and/or finer resolutions. Moreover, it enables finer detail when scanning larger volumes (up to 10x10x10 meters). This new mapping mode is enabled by default. (See the STMapper section in the Release Notes below for how to continue using the legacy 0.5 mapper).
“WOW! The new mapper is really impressive for our use case! I was able to support the volume size that we have been using at a much higher resolution and it looks great!”
**Aaron Bryden, Praxik**
##A Summary of Scanning Performance Improvements You'll Notice * Vast improvements of speed over previous mapper. **Performance tests show that the new mapper in SDK 0.6 produces 60% more resolution - in each XYZ axis - at the same speed when compared to the previous mapper.** That's a _~2.3x speed improvement at the same resolution!_ * Structure SDK 0.6 now features accuracy-enhancing tech in part due to our [Lynx Laboratories acquisition]. This means your 3D scans will be more true-to-reality than ever. * Support for a **wider variety of color input resolutions** _(Thanks to beta tester feedback!)_. * New ability to define the **far depth integration range**, up to 8 meters. * Clean surface scans with less extraneous, "floating" geometry captured from the environment. Cleanup is handled after mesh is processed post-scan.(Notice the finer detail in the scanned Caesar bust with the new Structure SDK mapper; With approximately 3X more faces & vertices in the mesh. Results may vary based on the object scanned.)
## Density Comparisons of New High Resolution Mesh [(Run on iPad Mini 2, with A7 chip.)
--------------------- # Complete Release Notes ## New & Improved Object Scanning This new version features a brand new mapper. Its performance is a dramatic improvement over the old mapper, and will allow for much more frequent model updates and/or finer resolutions. The new mapping mode is enabled by default. You can keep using the legacy 0.5 mapper by specifying the `kSTMapperLegacyKey` option when initializing a `STMapper` instance. ## High-resolution Color Capture The Structure framework now supports the following image resolutions in `STColorFrame` instances: - 640x480 - 2048x1536 _(New)_ - 2592x1936 - 3264x2448 _(New)_ - 4032x3024 _(New)_ Please note that capturing higher resolution images will not necessarily improve the detail of the output textures computed by `STColorizer` instances. ## API Changes ### `STSensorController` * The `error` parameter of the sensor controller initialization method `- (instancetype)initWithOptions:(NSDictionary *)options error:(NSError* __autoreleasing *)error` was dropped, resulting in this new signature: `- (instancetype)initWithOptions:(NSDictionary *)options;` * The sensor controller initialization option `kSTHoleFilterConfigKey` was renamed to `kSTHoleFilterEnabledKey`. * Similarly, the `kSTHighGainConfigKey` was renamed to `kSTHighGainEnabledKey`. ### `STSensorControllerDelegate` - The sensor delegate method `[STSensorControllerDelegate sensorDidOutputSynchronizedDepthFrame:andColorFrame:]` was renamed to `[STSensorControllerDelegate sensorDidOutputSynchronizedDepthFrame:colorFrame:]`. - Similarly, its infrared sibling `[STSensorControllerDelegate sensorDidOutputSynchronizedInfraredFrame:andColorFrame:]` was renamed to `[STSensorControllerDelegate sensorDidOutputSynchronizedInfraredFrame:colorFrame:]`. - The `sensorDidEnterLowPowerMode` delegate callback method was removed. ### `STDepthFrame` - Reconstruction accuracy can be improved on a per-frame basis via a new method called `applyExpensiveCorrection`. This is recommended for long-range depth, as it will avoid geometry distortions in the reconstructed model. However, it has a significant runtime cost. For instance, on iPad Air 2 it can take up to 5 milliseconds to complete. To observe improvements in accuracy, perform a reconstruction and compare the resultant model with and without this new feature enabled. ### `STMapper` - The `(void)setHasSupportPlane:(BOOL)hasIt` method was moved to a boolean initialization option called `kSTMapperVolumeHasSupportPlaneKey` which defaults to `NO`. - The `STMapper` initialization method can now be passed additional options, described below: - The `kSTMapperLegacyKey` allows you keep using the pre-0.6 mapper in your applications. It defaults to `NO`, because you really should be using the awesome new mapper, unless you have a very good reason not to! - The `kSTMapperVolumeBoundsKey` allows you to specify the extents of the mapped volume as a numeric array of 3 integral values specifying the number of cells in each dimension. - The `kSTMapperEnableLiveWireFrameKey` determines whether the STMapper should automatically build a wireframe mesh in the background when new depth frames are provided. It is set to `NO` by default. - The `kSTMapperDepthIntegrationFarThresholdKey` option key enables tuning of the depth integration far threshold. This is an advanced option, and the default 4 meters should fit most use cases. - The `volumeResolution` property has been removed. Instead, its value is now directly specified as an option when initializing a `STMapper` instance. ### `STTracker` - The `error` parameter of the tracker initialization method `[STTracker initWithScene:options:error:]` was removed, resulting in this new signature: `- [STTracker initWithScene:options:]`. - Similarly, the `error` parameter of the `- (BOOL)setOptions:(NSDictionary *)options error:(NSError* __autoreleasing *)error` method was dropped, resulting in this new signature: `- (void)setOptions:(NSDictionary *)options`. - The `STTrackerStatus` enum is no more. Instead, two `STTracker` properties replace it and clarify its semantics: - The `trackerHints` property, of type `STTrackerHints`, aggregates 3 boolean values set when the tracker gets lost, gets too close or when the model gets out of view. - The `poseAccuracy` property, an enumeration value of `STTrackerPoseAccuracy` type, which qualifies the confidence of the tracking as unavailable, very low, low, approximate or high. - The `predictCameraPoseAtTimestamp` has been removed. You can use the `lastFrameCameraPose` instead. ### `STCubeRenderer` - The `adjustCubeSize` method does not need a volume resolution anymore. ### `STErrorCode` The following error codes are not in use anymore and were removed: - `STErrorOptionNotRecognized` - `STErrorOptionInvalidValue` - `STErrorOptionMissingValue` - `STErrorOptionCannotBeUpdated` - `STErrorFileNoSuchFile` - `STErrorTrackerLostTrack` - `STErrorTrackerColorSampleBufferFormatNotSupported` - `STErrorTrackerColorSampleBufferMissing` - `STErrorTrackerTrackAgainstModelWithoutLiveTriangleMesh` - `STErrorTrackerPoorQuality` ## Platform Upgrade - This release features full iPad Pro 9.7‑inch and 12.9-inch support, together with the [latest Calibrator 1.2 update], already available on the App Store. - `armv7s` support was dropped. This reduces the size of the binaries, doesn't affect performance and matches Apple's latest default architecture list. - Support for iSense sensors is discontinued, and they will not be recognized by the SDK. Please contact `firstname.lastname@example.org` if you need to deploy a Structure SDK app for iSense devices. - Error reporting was improved and error messages clarified. - Documentation was clarified and improved. - As with [Structure SDK 0.5.5], this release requires **iOS 8.0** or above. ## Sample Code Changes - The Viewer Sample app now streams color sample buffers in YCbCr format. RGBA sample buffer support is deprecated. - The Scanner sample app can now perform high-resolution color streaming on iPad Air 1 (at 24 FPS), iPad 4 (at 15 FPS) and other older iOS devices unable to capture 2592x1936 at 30 FPS. - The Unity packages were updated for the latest API changes and tested with Unity 5.3.4. - Sample app projects were upgraded for Xcode 7.3. - Sample apps icons have been revamped with a shiny new look. : https://youtu.be/EhqZau5R0Gk : https://itunes.apple.com/us/app/structure-sensor-calibrator/id914275485?mt=8 : http://occipital.com/2015/lynx-acquisition : http://forums.structure.io/t/announcing-structure-sdk-0-5-5-improvements-for-ios-9-2/4951