最近在做web3d的项目,就是把web模型通过webGl展示到浏览器,关于模型制作的方法,模型动画的交互,模型导出gltf的方法,本文主要讲的就是gltf压缩问题,这样可以把gltf模型提及压缩的最小,web显示速度更快。
GLTF介绍:
首先说下gltf是什么,glTF 称为“ 3D 界的 JPEG”,使用了更优的数据结构,为应用程序实时渲染而生,特别适合web3d的展示。内存更小方便传输。
glTF 导出格式有两种后缀格式可供选择:.gltf 和 .glb:
- .gltf 文件导出时一般会输出两种文件类型,一是 .bin 文件,以二进制流的方式存储顶点坐标、顶点法线坐标和贴图纹理坐标、贴图信息等模型基本数据信息;二是 .gltf 文件,本质是 json 文件,记录对bin文件中模型顶点基本数据的索引、材质索引等信息,方便编辑,可读性较好;
- glb 文件格式只导出一个 .glb 文件,将所有数据都输出为二进制流,通常来说会更小一点,若不关心模型内的具体数据可直接选择此类型。
GLTF压缩方法:
gtlf压缩的方法很多:
- gltf-pipeline:用于压缩和解压缩 3D 几何网格(geometric mesh)和点云(point cloud)。换句话说,它显著缩小了 3D 图形文件的大小
- KTX 2.0 2021 年 4 月 20 日,Khronos® 集团宣布批准KTX™ 2.0,为这种容器格式添加了对Basis Universal超压缩的支持,以实现可靠、无处不在的 GPU 纹理分布。Basis Universal 是由Binomial开发的一种压缩技术,可以生成紧凑的纹理,可以在运行时有效地转码为各种 GPU 压缩纹理格式。
换句话说:gltf-pipeline通过压缩模型网格,通过减点和面,实现体积变小,而KTX 2.0通过新技术,改变传统的png,jpg等格式的问题图片,实现压缩。
gltf-pipeline:
gltf-pipeline使用介绍: