使用gltf-pipeline对gltf和glb模型进行相互转换

分类:计算机 | 三维开发 | 基础理论 | 综合 1145
更新:2022-10-03 20:44:49
编辑

官方文档

https://npmmirror.com/package/gltf-pipeline

gltf-pipeline说明

gltf-pipeline是基于nodejs的一个开源的gltf、glb模型转换工具:

1、可以将gltf文件转换成glb文件,glb转换成gltf文件;

2、可以将gltf、glb中的坐标信息和贴图文件单独保存出来;

3、可以将gltf v1版本的模型文件转换成gltf v2版本的模型文件。

在命令行中使用

  • 安装gltf-pipeline
npm install -g gltf-pipeline
  • gltf转换成glb
gltf-pipeline -i model.gltf -o model.glb
gltf-pipeline -i model.gltf -b
  • glb转换成gltf
gltf-pipeline -i model.glb -o model.gltf
gltf-pipeline -i model.glb -j
  • gltf Draco压缩
gltf-pipeline -i model.gltf -o modelDraco.gltf -d
  • 单独输出模型的贴图文件
gltf-pipeline -i model.gltf -t

在代码中使用

  • 将gltf转换成glb
const gltfPipeline = require("gltf-pipeline");
const fsExtra = require("fs-extra");
const gltfToGlb = gltfPipeline.gltfToGlb;
const gltf = fsExtra.readJsonSync("model.gltf");
gltfToGlb(gltf).then(function (results) {
  fsExtra.writeFileSync("model.glb", results.glb);
});
  • 将glb转换成gltf
const gltfPipeline = require("gltf-pipeline");
const fsExtra = require("fs-extra");
const glbToGltf = gltfPipeline.glbToGltf;
const glb = fsExtra.readFileSync("model.glb");
glbToGltf(glb).then(function (results) {
  fsExtra.writeJsonSync("model.gltf", results.gltf);
});
  • 将glTF转换成Draco glTF
const gltfPipeline = require("gltf-pipeline");
const fsExtra = require("fs-extra");
const processGltf = gltfPipeline.processGltf;
const gltf = fsExtra.readJsonSync("model.gltf");
const options = {
  dracoOptions: {
    compressionLevel: 10,
  },
};
processGltf(gltf, options).then(function (results) {
  fsExtra.writeJsonSync("model-draco.gltf", results.gltf);
});