Description - glTF Draco Mesh Compression Extension
Draco is a library for compressing and decompressing 3D geometric [meshes] and [point clouds]. It is intended to improve the storage and transmission of 3D graphics. The GL Transmission Format (glTF) is an API-neutral runtime asset delivery format. glTF bridges the gap between 3D content creation tools and modern 3D applications by providing an efficient, extensible, interoperable format for the transmission and loading of 3D content.
This package is a build for encoding/decoding Draco mesh compression extension in glTF specification. It could be used to compress the meshes in glTF assets or to decode the buffer data that belongs to a Draco mesh compression extension. For more detail, please read the extension spec.
TODO: Add glTF branch url.
News
Version 1.2.5 release
- On average 10% faster decoding
- Improved Javascript metadata API
- Bug fixes
Version 1.2.4 release
- Up to 20% faster decoding
- Added support for integer attributes to our Javascript Encoder
- Fixed issues with THREE.DracoLoader not releasing memory associated with the Draco module
- OBJ decoder can now be used to parse pure point clouds
- Added Unity plugins to support runtime loading and design-time importing of encoded Draco files
Version 1.2.3 release
- Fixed Visual Studio building issue
Version 1.2.2 release
The latest version of Draco brings a number of small bug fixes
- Fixed issues when parsing ill-formatted .obj files
Version 1.2.1 release
The latest version of Draco brings a number of enhancements to reduce decoder size and various other fixes
- Javascript and WebAssembly decoder size reduced by 35%
- Added specialized Javascript and Webassembly decoders for GLTF (size reduction about 50% compared to the previous version)
NPM Package
The code shows a simple example of using Draco encoder and decoder with Node.js.
draco_encoder_node.js
and draco_decoder_node.js
are modified Javascript
encoding/decoding files that are compatible with Node.js.
draco_nodejs_example.js
has the example code for usage.
Here we use a Draco file as an example, but when it's used with glTF assets, the
Draco file should be instead some buffer data contained in the binary data.
How to run the code:
(1) Install draco3dgltf package :
$ npm install draco3dgltf
(2) Run example code to test:
$ cp node_modules/draco3dgltf/draco_nodejs_example.js .
$ cp node_modules/draco3dgltf/bunny.drc .
$ node draco_nodejs_example.js
The code loads the Bunny model, it will first decode to a mesh and then encode it with different settings.
glTF Extension
The above example shows how to decode compressed data from a binary file. To use with glTF assets. The decoder should be applied to the data of the bufferView
that belongs to a Draco extension. Please see the spec for detailed instruction on loading/exporting Draco extension.
References
Bunny model from Stanford's graphic department https://graphics.stanford.edu/data/3Dscanrep/