gltf-pipeline 项目教程
1. 项目的目录结构及介绍
gltf-pipeline 项目的目录结构如下:
gltf-pipeline/
├── bin/
│ └── gltf-pipeline.js
├── lib/
│ ├── gltfPipeline.js
│ ├── processGltf.js
│ ├── glbToGltf.js
│ ├── gltfToGlb.js
│ └── ...
├── test/
│ ├── spec/
│ └── ...
├── doc/
├── package.json
└── README.md
目录介绍:
- bin/: 包含命令行工具的入口文件
gltf-pipeline.js
。 - lib/: 包含项目的主要逻辑文件,如
gltfPipeline.js
和processGltf.js
等。 - test/: 包含项目的测试文件,位于
spec/
目录下。 - doc/: 包含生成的文档文件。
- package.json: 项目的配置文件,包含依赖、脚本等信息。
- README.md: 项目的介绍文档。
2. 项目的启动文件介绍
项目的启动文件位于 bin/
目录下的 gltf-pipeline.js
。这个文件是命令行工具的入口点,负责解析命令行参数并调用相应的处理函数。
#!/usr/bin/env node
const yargs = require('yargs');
const gltfPipeline = require('../lib/gltfPipeline');
const processGltf = require('../lib/processGltf');
const glbToGltf = require('../lib/glbToGltf');
const gltfToGlb = require('../lib/gltfToGlb');
// 命令行参数解析
const argv = yargs
.option('i', {
alias: 'input',
describe: 'Input glTF file',
type: 'string',
demandOption: true
})
.option('o', {
alias: 'output',
describe: 'Output file',
type: 'string'
})
.option('d', {
alias: 'draco',
describe: 'Apply Draco compression',
type: 'boolean'
})
.help()
.argv;
// 根据参数调用相应的处理函数
if (argv.draco) {
processGltf(argv.input, argv.output, { draco: true });
} else {
gltfPipeline(argv.input, argv.output);
}
3. 项目的配置文件介绍
项目的配置文件是 package.json
,它包含了项目的元数据、依赖、脚本等信息。
{
"name": "gltf-pipeline",
"version": "2.0.0",
"description": "Content pipeline tools for optimizing glTF assets",
"main": "lib/gltfPipeline.js",
"bin": {
"gltf-pipeline": "bin/gltf-pipeline.js"
},
"scripts": {
"test": "npm run test-spec && npm run test-coverage",
"test-spec": "mocha --require babel-register test/spec",
"test-coverage": "nyc --reporter=lcov --reporter=text npm run test-spec",
"jsdoc": "jsdoc -c jsdoc-conf.json"
},
"dependencies": {
"draco3d": "^1.3.6",
"fs-extra": "^9.0.1",
"yargs": "^15.3.1"
},
"devDependencies": {
"babel-register": "^6.26.0",
"mocha": "^8.1.3",
"nyc": "^15.1.0"
},
"repository": {
"type": "git",
"url": "https://github.com/CesiumGS/gltf-pipeline.git"
},
"keywords": [
"gltf",
"3d",
"model",
"pipeline",
"draco"
],
"author": "CesiumGS",
"license": "Apache-2.0