我可以把glb文件变小吗?

问题描述 投票:0回答:2

我有一个很大的

obj
文件
306 mb
。所以我将其转换为
glb
文件以减小其大小。文件大小已经减小很多到
82 mb
,但仍然很大。我想让这个文件变小。有办法吗?如果有,请告诉我。

如果您无法进一步减少

glb
文件,请告诉我更有效的减少
obj
文件的方法。我已经完成的事情之一是将
obj
文件更改为
json
,使用
pako.js
压缩、展开并加载它。我没有选择这个方法,因为解压速度太慢

gltf
2个回答
15
投票

如果是顶点数据导致文件那么大,则可能存在。在这种情况下,您可以使用 DRACO 压缩库来进一步减小大小。

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

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

(您需要安装当前版本的 Node.js 才能正常工作)

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

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

本质上,您需要导入

THREE.DRACOLoader
draco-decoder。最后,您需要告诉您的
GLTFLoader
您知道如何处理 DRACO 压缩:

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

之后就可以像以前一样使用GLTFLoader了。

唯一的缺点是解码器本身需要一些资源:解码不是免费的,解码器本身是浏览器要加载的另外 320kB 数据。我认为如果它能为您节省兆字节的网格数据,那么它仍然是值得的。


4
投票

令我惊讶的是,没有人提到有损地减小

.glb
文件大小的明显、简单的方法,该文件只是单独的网格和纹理数据的容器:

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

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

然后,一旦删除了不需要的细节,就开始查看诸如DRACO

basis
、更少的
JPEG
色度样本和
optipng
之类的东西。

© www.soinside.com 2019 - 2024. All rights reserved.