This repository aims to provide a clear and straightforward guide for manufacturers on how to create E57 files that include mobile point clouds and 360° images. Unlike other resources, this guide focuses specifically on integrating both point cloud data and 360° images into a unified format, addressing the unique challenges of mobile scanning while ensuring compatibility with industry-leading platforms like Autodesk ReCap 2025 and ATIS.cloud. By following the instructions here, developers can ensure their scanners are fully compatible with both Autodesk ReCap 2025 and ATIS.cloud, enabling a unified and seamless user experience.
The mobile scanner market has been growing rapidly since 2022, highlighting the need for clear standards to streamline workflows and improve user experiences. The structure of E57 files plays a critical role in achieving this simplicity: adhering to a standardized format ensures seamless integration between manufacturers, software platforms, and end users.
As of February 2022, ATIS.cloud is fully compatible with mobile images embedded in unstructured E57 files, enabling smooth integration for manufacturers who follow the specifications detailed in this repository.
Recognizing the importance of a unified approach, both ATIS.cloud and Autodesk ReCap 2025 support a standardized E57 file format. This shared adoption establishes a consistent standard, simplifying data processing for the industry and its clients. By adhering to these specifications, mobile scanner manufacturers can achieve full compatibility, ensuring optimal interoperability and effortless workflows across platforms.
Unstructured E57 files, including 360° images, offer a significant advantage by simplifying data sharing. By embedding both point clouds and images within a single E57 container, they eliminate the need to bundle separate JPEG files in a ZIP archive. This approach addresses challenges such as irregular movement patterns and varying environmental conditions during data capture, making it especially advantageous for mobile systems operating in dynamic or complex environments. In such cases, images are stored as 2D representations. These images are encapsulated in a heterogeneous vector of Image2D structures to store data from cameras or similar devices.
To ensure compatibility, the following specifications are mandatory:
-
Spherical Representation:
- Images must use a spherical representation.
-
Image Metadata: each image must include
- A position (translation vector).
- A rotation quaternion.
-
Sensor Information:
- Add an element named
sensorVendor
to thevectorChild
of each image. - This field should be filled with the name of the scanner or processing software.
- Add an element named
-
Projection Requirements:
All the above requirements are mandatory. Integration will not be possible if any of these criteria are unmet.
Below is an example of how the vectorChild
for an image should be structured in the XML section of the E57 file:
guid : A unique identifier for the image.
name : The name assigned to the image for reference.
description : A brief description of the image.
sensorVendor : Specifies the scanner or software that generated the image.
pose:
- rotation: Contains the quaternion values (w, x, y, z) to describe the image's orientation.
- translation: Specifies the position of the image in 3D space (x, y, z).
sphericalRepresentation :
- jpegImage: Points to the image data.
- imageHeight and imageWidth: Define the dimensions of the image.
- pixelHeight and pixelWidth: Specify the size of each pixel in the image.
<vectorChild type="Structure">
<guid type="String"><![CDATA[{B6814439-9A66-4B78-A508-EC888E9387A7}]]></guid>
<name type="String"><![CDATA[Image]]></name>
<description type="String"><![CDATA[My Awesome Image]]></description>
<sensorVendor type="String"><![CDATA[Your scanner/software name]]></sensorVendor>
<pose type="Structure">
<rotation type="Structure">
<w type="Float">5.72200246355708098e-01</w>
<x type="Float">-1.57413981933175670e-02</x>
<y type="Float">-3.43825646644880592e-02</y>
<z type="Float">8.19241677223808695e-01</z>
</rotation>
<translation type="Structure">
<x type="Float">-5.19676770732874793e+00</x>
<y type="Float">9.10547896196429285e+00</y>
<z type="Float">1.12128809534611884e+00</z>
</translation>
</pose>
<sphericalRepresentation type="Structure">
<jpegImage type="Blob" fileOffset="8316894432" length="20622113"/>
<imageHeight type="Integer">4096</imageHeight>
<imageWidth type="Integer">8192</imageWidth>
<pixelHeight type="Float">5.00000000000000041e-06</pixelHeight>
<pixelWidth type="Float">5.00000000000000041e-06</pixelWidth>
</sphericalRepresentation>
</vectorChild>
-
Independent Processing:
- There is no direct relationship between the point cloud and the images via a GUID. These elements are processed independently. You can include either a single scan (point cloud) or multiple images in your E57 file as needed.
-
GUID Association:
- Do not add the
associatedData3DGuid
element (which specifies the scan for each image) to the child vector of images.
- Do not add the
To learn more about the E57 format, refer to the following resources:
- Official E57 Documentation (ASTM7Cen-US.pdf)
- E57 Format Website
- Sample Data Repository
- C++ Library Without Boost
In the code
directory, you will find sample scripts that demonstrate how to create E57 files meeting the integration requirements of Autodesk ReCap 2025 and ATIS.cloud.
Examples include:
- Saving images in spherical representation.
- Saving point clouds and images in E57 format.
Explore the examples:
Check out the e57_unstructured_samples directory for reference files.
Contributions are welcome! Follow these steps to contribute:
- Fork the repository.
- Create a feature branch.
- Submit a pull request with your changes.
This project is licensed under the MIT License. See the LICENSE file for details.