天天看点

gltf与glb格式转换 gltf-pipeline、binary-gltf-utils

gltf与glb格式转换

    • 1. [gltf-pipeline](https://github.com/seminar2012/gltf-pipeline)
    • 2. [binary-gltf-utils](https://github.com/seminar2012/binary-gltf-utils)
    • 3. [obj23dtiles](https://github.com/PrincessGod/objTo3d-tiles)
    • 4. gltf.json与.glb对比
    • 参考

.gltf: Graphics Language Transmission Format(图形语言传输格式),本质是JSON文件,表示3D内容的场景,可以想象成3D图片;是一种3D的标准格式;

.glb: Graphics Lanuage binary,二进制的gltf文件;

1. gltf-pipeline

缺少啥model,使用npm install model_name

npm install fs-extra
  • -o 输出文件名
  • -b 输出glb,默认同路径下 name-processed.glt
  • -d draco压缩,使用默认参数
node gltf-pipeline.js -i D:\learn1\gltf\outputGLTF\9\9.gltf -b
node gltf-pipeline.js -i D:\learn1\gltf\outputGLTF\9\9.gltf -o D:\learn1\gltf\outputGLTF\9\9_d.gltf -d
gltf与glb格式转换 gltf-pipeline、binary-gltf-utils

2. binary-gltf-utils

3. obj23dtiles

obj2glb

obj2gltf

4. gltf.json与.glb对比

glb实质上是gltf.json+图片等资源打包后的二进制文件;

无图片情况glb会减少10%~40%左右;有图片情况下glb比gltf.json大至少1倍以上;

gltf转换glb,实质上是把gltf依赖的图片等全打包放进了glb中,所以对于没有照片的gltf基本会变小,依赖过多照片的其文件会变大;

使用Windows自带的 3DViewer渲染可以看的出来,gltf.json+依赖图片作为静态资源在同一个目录才可渲染,而glb可直接渲染;

glb无论放在哪个目录单独要给文件就可以渲染;

总体来说,gltf转换glb后,其文件大小有的变小(红色),有的变大(蓝色)。

gltf与glb格式转换 gltf-pipeline、binary-gltf-utils

使用Draco压缩算法回使生成的glb文件变小一点,尤其对于有顶点数据的gltf;

gltf与glb格式转换 gltf-pipeline、binary-gltf-utils

参考

  • https://juejin.cn/post/6931954784018628621
  • glTF-glb格式互相转换