Hello everyone! We are proud to announce the availability of ReconstructMe SDK 2.1. The new version brings a lot of new features and fixes many issues we have encountered of the past months. You can get the latest version here.
The major changes are
Post-process your scan with CSG
We have added a constructive solid geometry (CSG) module that allows you to post-process reconstruction data using manipulative operations. These operations allow you to perform intersections, unions or differences between volume content and other objects. Currently, we support the following primitive objects
- axis aligned boxes,
- and planes.
In the screenshots below you can see CSG operations (union, difference, intersection) applied to a box and a sphere.
All operations are performed on the volume and generate intersection free meshes when extracted. Additionally, we’ve added support for complex meshes. This allows you to easily add stands or cut your reconstruction. We used this feature extensively for automatically generating printable busts such as the example below.
We will go into more detail on how to automatically generate busts in upcoming blog posts next week. In the mean-time check out the CSG example for usage.
Use any RGBD sensor
Another feature we turned our development efforts on is to allow users to share a 3D camera resource with ReconstructMe. This means, that ReconstructMe does not enforce you anymore to use the sensors that ship with it, but you can roll out your own sensor implementation and provide ReconstructMe only the data it requires for reconstruction (this usually boils down to sensor intrinsics, a depth map and optionally an color image).
Using an external sensor allows you to use yet unsupported sensors in ReconstructMe. You might want to have a look at the external sensor example for details.
Browse the volume directly
Until now ReconstructMe SDK did not provide any means of directly navigating through reconstruction volume content. Users always were forced to explicitly generate a surface from the volume andsurface afterwards. This has now changed thanks due to the volume viewer. It pretty much boils down to placing the following lines in your code
reme_viewer_t viewer; reme_viewer_create_volume(ctx, volume, sensor, "My volume viewer", &viewer); reme_viewer_wait(c, viewer);