我可以缩小glb文件吗?

时间:2019-05-23 08:50:49

标签: gltf

我有一个obj的大306 mb文件。因此,我将其转换为glb文件以减小其大小。文件的大小已减少到82 mb,但仍然很大。我想缩小这个文件。有办法吗?如果有,请告诉我。

如果您无法进一步缩小glb文件,请告诉我更有效的方法来缩小obj文件。我已经做的一件事是将obj文件更改为json,使用pako.js压缩,展开和加载它。我之所以选择这种方法,是因为它解压缩的速度太慢。

2 个答案:

答案 0 :(得分:2)

如果是顶点数据导致文件变大,则可能会出现。在这种情况下,您可以使用DRACO压缩库进一步缩小大小。

首先,要测试压缩机,可以运行

npx gltf-pipeline -i original.glb -d --draco.compressionLevel 10 -o compressed.glb

(您需要安装最新版本的node.js才能起作用)

如果顶点数据是文件太大的原因,则压缩文件应该比原始文件小得多。

现在,您必须执行一些额外的步骤来加载文件,因为常规的GLTFLoader不支持DRACO压缩的网格。

本质上,您需要导入THREE.DRACOLoaderdraco-decoder。最后,您需要告诉GLTFLoader您知道如何处理DRACO压缩:

DRACOLoader.setDecoderPath('path/to/draco-decoder');
gltfLoader.setDRACOLoader(new DRACOLoader());

之后,您可以像以前一样使用GLTFLoader。

唯一的缺点是解码器本身需要一些资源:解码不是免费的,并且解码器本身是浏览器要加载的另一个320kB数据。我认为,如果它可以为您节省兆字节的网格数据,还是值得的。

答案 1 :(得分:0)

令我惊讶的是,没有人提到明显减少损失.glb文件大小的简单方法,该文件只是用于存放单独的网格和纹理数据的容器:

通过折叠彼此靠近或共面的相邻顶点来减少顶点数,并通过修剪,缩小或使用较低的位深度来处理不必要的细节来减少图像数据。

表面多边形/像素密度每降低2倍,文件大小就会降低4倍。

然后然后,一旦您删除了不需要的细节,就开始查看诸如DRACObasis,更少的JPEG色度样本和{{ 1}}。