glTF Pipeline
Content pipeline tools for optimizing glTF assets by Richard Lee and the Cesium team.
This project is under active development, see the roadmap.
gltf-pipeline can be used as a command-line tool or Node.js module.
Instructions
Clone this repo and install Node.js. From the root directory of this repo, run:
npm install
Command-Line Example:
node ./bin/gltf-pipeline.js ./specs/data/boxTexturedUnoptimized/CesiumTexturedBoxTest.gltf -o output.gltf
Command-Line Flags
Flag | Description | Required |
---|
-i , --input | Path to the input glTF file. | :white_check_mark: Yes |
-o , --output | Directory or filename for the exported glTF file. | No |
-b , --binary | Write binary glTF file. | No, default false |
-s , --separate | Writes out separate geometry/animation data files, shader files and textures instead of embedding them in the glTF file. | No, default false |
-h , --help | Display help | No |
-t , --separateTexture | Write out separate textures, but embed geometry/animation data files, and shader files. | No, default false |
-q , --quantize | Quantize attributes using WEB3D_quantized_attributes extension. | No, default false |
-n , --encodeNormals | Oct-encode the normals of this model. | No, default false |
-c , --compressTextureCoordinates | Compress the texture coordinates of this model. | No, default false |
--ao | Bake ambient occlusion to vertex data using default settings only. When specifying other settings, do not use --ao on its own. Advanced settings in lib/bakeAmbientOcclusion.js | No, default false |
--ao.toTexture | Bake AO to existing diffuse textures instead of to vertices. Does not modify shaders. | No, default false |
--ao.groundPlane | Simulate a groundplane at the lowest point of the model when baking AO. | No, default false |
--ao.ambientShadowContribution | Amount of AO to show when blending between shader computed lighting and AO. 1.0 is full AO, 0.5 is a 50/50 blend. | No, default 0.5 |
--ao.quality | Valid settings are high, medium, and low. | No, default low |
Build Instructions
Run the tests:
npm run test
To run JSHint on the entire codebase, run:
npm run jsHint
To run JSHint automatically when a file is saved, run the following and leave it open in a console window:
npm run jsHint-watch
Running test coverage
Coverage uses istanbul. Run:
npm run coverage
For complete coverage details, open coverage/lcov-report/index.html
.
The tests and coverage covers the Node.js module; it does not cover the command-line interface, which is tiny.
Debugging
- To debug the tests in Webstorm, open the Gulp tab, right click the
test
task, and click Debug 'test'
. - To run a single test, change the test function from
it
to fit
.
Contributions
Pull requests are appreciated! Please use the same Contributor License Agreement (CLA) and Coding Guide used for Cesium.