petrbroz / svf-utils

Utilities for working with the SVF file format used by Autodesk Platform Services.
https://petrbroz.github.io/svf-utils/
MIT License
129 stars 55 forks source link

Add support for 'Zeux' compression #15

Closed wallabyway closed 4 years ago

wallabyway commented 4 years ago

Deux compression is this... https://github.com/zeux/meshoptimizer

This is an alternative option to Draco.

This compression has shown favorable file sizes for AEC models compared to Draco (see here: https://github.com/KhronosGroup/glTF/issues/1699#issuecomment-565499098)

Secondarily - the wasm file size appears smaller, and the decoder performance is currently faster.

petrbroz commented 4 years ago

Thanks, the results from gltfpack are impressive!

One thing I've been wondering about lately is: should we keep adding different post-processing modules (like gltf-pipeline, or gltfpack in this case) to forge-convert-utils, or should we position the library as "a pipeline module you can chain with other tools unix-style"? I'm thinking the latter would make more sense, because:

What do you think?

petrbroz commented 4 years ago

Btw. here's a new branch that illustrates the idea: https://github.com/petrbroz/forge-convert-utils/tree/experiment/separate-postproc. It removes all the post-proc dependencies, and instead provides examples of how you can integrate forge-convert-utils with other tools, for example: https://github.com/petrbroz/forge-convert-utils/blob/experiment/separate-postproc/test/remote-svf-to-gltf.sh.

wallabyway commented 4 years ago

Agreed. My hunch is for separate-postproc and use a script remote-svf-to-gltf.sh It's too soon to pick a compression and optimize. Better to remain agile.

petrbroz commented 4 years ago

I've merged https://github.com/petrbroz/forge-convert-utils/tree/experiment/separate-postproc to develop. The example shell script now post-processes the glTF using gltfpack if available: https://github.com/petrbroz/forge-convert-utils/blob/develop/test/remote-svf-to-gltf.sh#L41-L44.

I'm also adding an experimental Docker image as a quick way to start experimenting with the different post-processing tools. If you run:

docker pull petrbroz/forge-convert-utils
docker run --rm -it petrbroz/forge-convert-utils /bin/bash

... you have forge-convert-utils, gltf-pipeline, and gltfpack all available at your disposal.