Introduction
Draco is an open source library from Google, released in 2017, for compressing triangle meshes and point clouds. It shrinks vertex positions, normals, colours and texture coordinates by quantising them and predicting each value from its neighbours, which often makes a mesh many times smaller than the same data stored plainly.
A .drc file is a single compressed mesh or point cloud. The same
compression is more often met inside glTF files, through
the KHR_draco_mesh_compression extension, where a browser decodes it
before drawing.
Structure
A Draco file starts with the five bytes DRACO, then the major and minor
version of the bitstream, the encoder type (point cloud or triangle mesh), the method
(sequential or Edgebreaker, which encodes the mesh connectivity by walking across its
triangles) and a 16-bit flags field. Optional metadata follows, then the compressed
connectivity and the compressed attributes. The full bitstream is described in a
published specification.
0MagicDRACO5 bytes5Version major and minor2 bytes7Encoder type and method2 bytes9Flags for example, metadata present2 bytes11Metadata, connectivity and attributesvaries
Links
Software
- draco_encoder and draco_decoder, command line tools that convert OBJ, PLY and STL to and from Draco
- Blender (Windows, macOS, Linux), Draco compression in its glTF exporter
Developers
Reference
- Draco bitstream specification, Google