跳到主要内容
设计与3D技术

GLB文件怎么压缩变小?贴图缩小、减面、压缩三步走,以及能减到什么程度

想让GLB变小,按这个顺序来:先降低贴图分辨率,再减少多边形,最后用Draco或meshopt压缩几何数据。本文介绍如何查看体积由什么构成、Blender与glTF-Transform的操作步骤、Figmee导出的GLB要注意的地方,以及按用途该减到什么程度。

Figmee 编辑部发布日期: 2026-11-07更新日期: 2026-11-0721分钟阅读
GLB轻量化贴图减面Draco
GLB文件怎么压缩变小?贴图缩小、减面、压缩三步走,以及能减到什么程度

想让GLB变小,按这个顺序尝试:① 降低贴图(贴在表面的图像)的分辨率,② 减少多边形(面)的数量,③ 用Draco或meshopt压缩几何数据。Draco这类压缩只缩小几何数据,不缩小图像,所以对于用图像来保存颜色和凹凸的角色GLB,跳过第①步,有时会发现文件没有想象中那么小。

本文依次整理:怎样看出GLB里是什么占了体积,三种方法各自的做法和对外观的影响,用Figmee制作的GLB的瘦身步骤,以及按用途能减到什么程度。工具的功能均以2026年11月的官方文档(Blender 5.2 LTS手册、glTF-Transform、gltfpack、model-viewer)为准。

※目前 Figmee 提供的是:根据你画的插画生成的手办风格图像、3D模型数据(GLB / 3MF),以及3D模型的旋转视频。实物3D打印订购功能正在准备中(Coming Soon)。另外,照片和看起来像照片的图片都无法做成3D(对象是画出来的图)。

GLB为什么这么大?

GLB的体积主要由“贴图(图像)”和“网格(几何数据)”两部分决定。用图像来保存颜色、凹凸和质感的角色模型,图像有时会占很大比例,所以先看清构成,再决定用哪种方法。

GLB是glTF的二进制版本,把形状、颜色、材质打包成一个文件(内部结构和打开方法见GLB文件是什么)。影响体积的有三类,其中占大头的是前两类:

  • 网格:顶点位置、法线(面的朝向)、UV(图像贴在哪里)等。多边形越多,数据越大。面数和体积的关系见多边形数是什么。
  • 贴图:颜色(基础色)、凹凸(法线贴图)、金属感与粗糙度等图像。长宽分辨率各翻一倍,像素就变成4倍。
  • 材质与摆放信息:材质设置和模型位置是文字信息,通常只占很小比例。带动画的GLB还会多出动画的部分。

想用数字看构成,glTF-Transform的inspect最省事。它会输出场景、网格、材质、贴图、动画的表格,官方说明称可用来了解文件中几何与图像各占多少(来源:glTF-Transform CLI源码(inspect的说明),2026年11月)。在装有Node.js的电脑上这样用:

npm install --global @gltf-transform/cli
gltf-transform inspect model.glb

安装命令与glTF-Transform官方页面一致。不想用命令行的话,可以在Blender视图中打开统计(Statistics)查看三角形数量,在图像编辑器里查看各张贴图的分辨率。

除了文件大小,还要留意显示时占用的内存。glTF-Transform的说明写道,PNG、JPEG、WebP图像在GPU内存中必须以解压后的形式存在。比如一张4096×4096像素的图像,按每像素4字节计算约为67MB,即使文件本身只有几MB,在手机上也可能导致显示卡顿。

三种方法的区别归纳如下:

方法变小的是什么对外观的影响主要工具
降低贴图分辨率图像(文件,以及显示时的内存)凑近看时细节变模糊Blender图像编辑器、glTF-Transform resize
减少多边形几何数据轮廓变得有棱角,细的部分最先走样Blender的Decimate、glTF-Transform simplify、gltfpack -si
压缩(Draco、meshopt)几何数据几乎没有变化Blender导出、glTF-Transform draco/meshopt、gltfpack -c

要读取压缩后的GLB,读取端需要有解码器(解开压缩的程序)(详见下文“什么时候用压缩(Draco、meshopt)?”)。

为什么要先缩小贴图?

Draco和meshopt压缩的是GLB的几何数据,不会缩小图像。在图像占大头的GLB里,降低贴图分辨率效果最明显,而且完全不会改变形状。

glTF-Transform的说明也指出,Draco只作用于几何数据,不压缩动画和贴图(来源:glTF-Transform CLI源码(draco的说明),2026年11月)。让贴图变轻有三种办法:

  1. 降低分辨率:长宽各减半,像素就只剩四分之一。在Blender中,可以用图像编辑器的“Image > Resize”按像素指定新的宽和高(来源:Blender 5.2 LTS手册“Editing Images”,2026年11月)。glTF-Transform的resize会把PNG和JPEG贴图缩到--width和--height指定的最大尺寸以内。
  2. 重新选择格式和画质:Blender手册说明,glTF要求图像为PNG或JPEG;PNG无损、一般更合适,但用于网页时文件更小的JPEG可能更好。Blender导出时可以选择图像格式(Images),以及JPEG、WebP时的画质(Image Quality)(来源:Blender 5.2 LTS手册“glTF 2.0”,2026年11月)。
  3. 改用面向GPU的格式(KTX2):model-viewer的FAQ说明,KTX2的文件大小和JPEG差不多,但能大幅减少GPU内存占用(来源:model-viewer FAQ“What is KTX2?”,2026年11月)。可以用glTF-Transform的etc1s、uastc或gltfpack的-tc生成,但读取端必须支持KHR_texture_basisu扩展。

处理贴图时有两点要注意:

  • 凹凸图像(法线贴图)最好不要转成JPEG。JPEG的压缩模糊可能破坏明暗,所以Figmee的凹凸图像也保持PNG。glTF-Transform的官方示例在转换图像时,也把法线贴图(normalTexture)排除在外(来源:glTF-Transform“textureCompress”,2026年11月)。
  • 有些软件读不了WebP。WebP不是glTF的标准图像格式,而是通过EXT_texture_webp扩展使用的格式(来源:Khronos“EXT_texture_webp”,2026年11月)。Figmee以前也在GLB贴图里用过WebP,但由于有些软件读不了WebP,所以2026年10月25日以后生成的GLB改为颜色用JPEG、凹凸用PNG。只在确认目标查看器支持时才选WebP,文件交给别人时就不会出问题。

怎样减少多边形?

减面可以用Blender的Decimate(精简)修改器、glTF-Transform的simplify或gltfpack的-si。减得越多,轮廓越棱角分明,发梢、手指这类细的部分会最先变形,所以要以实际显示的大小边看边一点点降低。

在Blender中减面的步骤如下(约10~20分钟):

  1. 添加精简修改器(1分钟):选中模型,在添加修改器里选择“Generate > Decimate”。
  2. 选择方式(1分钟):共有三种。Collapse会在考虑形状的同时逐步合并顶点;Un-Subdivide相当于细分的逆操作,适合网格状的面;Planar用于减少以平面为主的形状上的细节(来源:Blender 5.2 LTS手册“Decimate Modifier”,2026年11月)。像AI生成的模型这样由大量细小三角形组成的网格,多半适合用Collapse。
  3. 降低Ratio(5~15分钟):Ratio是精简后保留的面的比例,1.0表示不变,0.5大约保留一半。对比修改器上显示的面数和外观;左右对称的角色还可以试试Symmetry(沿一个轴保持对称)。
  4. 显示贴图来检查(2分钟):减面后,UV接缝处可能出现颜色错位。切换到材质预览,凑近看脸、发梢和手。
  5. 应用(几秒):满意后应用修改器。

如果用命令行减面,glTF-Transform的simplify借助meshoptimizer减少三角形和顶点:它朝目标比例(ratio)靠近,一旦误差(error)超过上限就停下。官方说明建议先执行weld(合并位置相同的顶点)再用,效果更好(来源:glTF-Transform“simplify”,2026年11月)。gltfpack则用-si 0.5这样的写法,以0~1指定保留的三角形比例(来源:gltfpack的README,2026年11月)。

重新生成面的重构网格(Remesh)会丢失UV,颜色会错位,所以以瘦身为目的时请用精简。两者的区别见Blender重构网格与纹理编辑基础,多边形多与少的取舍见低模与高模的区别。

什么时候用压缩(Draco、meshopt)?

Draco和meshopt是让GLB的几何数据变小的压缩,应在确定放在哪里之后最后再用。读取端支持时,几乎不改变外观就能减小体积;不支持的软件则根本打不开。

压缩缩小的内容读取端需要什么主要工具
Draco(KHR_draco_mesh_compression)三角形网格Draco解码器。model-viewer默认从Google的CDN加载Blender导出、glTF-Transform draco
meshopt(EXT_meshopt_compression)网格、变形目标、动画meshopt解码器。model-viewer默认未启用Blender导出、glTF-Transform meshopt、gltfpack -c

表格的来源如下(均为2026年11月):Blender 5.2 LTS的glTF导出有Draco压缩(Data - Draco Compression,含压缩强度以及位置、法线、UV等的量化设置)和meshopt压缩(Data - Meshopt Compression)选项(Blender 5.2 LTS手册“glTF 2.0”)。model-viewer默认从Google的CDN加载Draco解码器,而meshopt解码器默认没有启用(model-viewer文档)。gltfpack的README写道,读取用-c压缩的文件需要加载器支持EXT_meshopt_compression,three.js从r122起需要调用GLTFLoader.setMeshoptDecoder(gltfpack的README)。

选哪一种,取决于放在哪里:

  • 用model-viewer放到自己的网站:无需设置就能读取的Draco最省事。
  • 用three.js等自己搭页面:只要能给加载器设置解码器,两种都可以。
  • 交给别人或在其他软件里编辑:不压缩更稳妥。你无法确定对方的软件有解码器。

glTF-Transform还有一次性处理的optimize。官方示例加了--compress draco --texture-compress webp,但从源码看,什么都不加时的默认值是:开启形状简化(--simplify)、用meshopt压缩、贴图限制在2048像素以内(来源:glTF-Transform CLI源码,2026年11月)。不想改变形状就加--simplify false,要放进model-viewer就加--compress draco,确认好默认值再用。

用Figmee做的GLB怎样瘦身?

Figmee的GLB把形状和颜色打包成一个文件,2026年10月25日以后生成的GLB,贴图的颜色是JPEG、凹凸是PNG。颜色已经是JPEG,所以剩下的办法是“降低分辨率”“减少多边形”“压缩”这三种。面数和图像分辨率因作品而异,请先在自己的文件里确认数字,再决定减多少。

  1. 保存GLB(1分钟):在作品页面点击“保存”,选择“3D模型(GLB)”。保存不需要额外的代币。保存下来的文件不要删,用副本来操作。
  2. 导入Blender查看构成(5分钟):用“File > Import > glTF 2.0”导入,在统计里看三角形数量,在图像编辑器里看颜色和凹凸图像的分辨率。详细的导入步骤见把Figmee的GLB导入Blender的步骤。
  3. 缩小贴图(5~10分钟):把颜色和凹凸图像缩到适合目标位置的大小(例如长宽各减半)。凹凸图像保持PNG。
  4. 减少多边形(10~20分钟):一点点降低精简的Ratio,以实际显示大小查看脸、发梢和手,在还没变形的地方停下。
  5. 导出并比较(5分钟):用“File > Export > glTF 2.0”导出GLB,目标位置支持的话就打开Draco压缩。确认导出的文件比原来小了,并在目标查看器里检查颜色和形状没有走样。

用命令行做同样的事,顺序如下。数字只是示例,请选比原分辨率小的值。2026年10月25日以前生成的GLB,颜色图像是WebP,resize无法缩小这些颜色图像(resize只缩小PNG和JPEG)。这种情况下请使用Blender的步骤。

gltf-transform resize character.glb step1.glb --width 1024 --height 1024
gltf-transform weld step1.glb step2.glb
gltf-transform simplify step2.glb step3.glb --ratio 0.5
gltf-transform draco step3.glb character-small.glb

如果只在Figmee里展示,就不需要瘦身:在分享链接的页面上,可以用Figmee的查看器旋转3D模型(公开方法见3D模型怎么在网上公开)。只有把模型带到自己的网站或游戏里时,才需要花这份功夫。如果还没有3D模型,在Figmee上只需一张画,就能先生成手办风格图像,再做成3D模型(3D模型消耗5个代币,每个账号的第1个免费)。什么样的画适合做成3D,见插画转3D完整指南。

能减到什么程度?

用外观来判断,而不是数字。以实际放置的页面或画面相同的大小显示,看到脸、发梢、手开始走样时,退回上一步的设置,这就是大致的标准。不同用途的思路如下:

放在哪里要注意什么减法的参考
自己的网站(model-viewer等)加载等待时间、手机内存先缩小贴图,最后再用Draco
游戏引擎同一画面显示的数量、运行负担看是一个模型占满画面,还是很多个并排显示。原始GLB也要保留
交给别人、用聊天工具发送对方服务的文件大小上限、对方的软件上限因服务而异,请确认对方的说明。不压缩更稳妥
3D打印形状的细节不要瘦身。用3MF而不是GLB(Figmee的实物3D打印订购正在准备中,Coming Soon)

关于手机上的AR显示,Google公开了Android的Scene Viewer推荐值:文件不超过10MB,三角形不超过10万个(理想范围是3万~5万个),贴图分辨率不超过2048×2048(来源:Google ARCore“Scene Viewer”,2026年11月)。这是针对特定显示环境的数字,并非所有场合的标准答案,但可以作为放到网页时的参照。同一页面列出的扩展很有限,没有提到Draco和KTX2,所以用于AR显示的GLB请用未压缩的版本来确认。

反过来,也有不宜减太多的情况。在作品集中想让人放大看脸的作品,或以细小装饰为看点的角色,贴图和多边形最好只稍微减一点,加载时间用海报图(加载完成前显示的图像)来弥补,这样一般更不容易影响观看者的第一印象。

常见问题

GLB瘦身后画质会下降吗?

降低贴图分辨率和减少多边形后,凑近看时的细节会变少。Draco和meshopt改变的是GLB几何数据的存储方式,外观变化通常很小,但读取端需要解码器。以实际显示大小查看,减到看不出差别为止,是一个参考标准。

用Draco压缩的GLB在其他软件里打不开。

读取Draco压缩的GLB,软件或查看器需要带有Draco解码器。model-viewer默认会加载解码器,但不支持的软件打不开。请保留压缩前的GLB,给那个软件用未压缩的版本。

Figmee的GLB可以直接放到网站上吗?

可以。2026年10月25日以后生成的GLB,贴图是颜色JPEG、凹凸PNG的标准格式,可以在支持glTF的查看器中读取。觉得加载慢的话,就按本文的顺序:贴图、多边形、压缩,逐步瘦身。嵌入页面的方法见如何把GLB嵌入网站。

总结

给GLB瘦身时,先用inspect或Blender看清是几何还是图像占了体积。然后按降低贴图分辨率、减少多边形、根据放置位置用Draco或meshopt压缩的顺序进行。凹凸图像不要转成JPEG,WebP只在目标位置支持时使用,压缩前的GLB一定要保留。减到什么程度,以实际显示大小查看时开始走样之前为止。

想用自己角色的3D来试试的话,可以在Figmee上用你画的画生成3D模型,保存GLB,再按本文的步骤瘦身。

相关指南

把自己的角色以GLB带进Blender或游戏

一张画就能做成3D模型,并保存为GLB。可在Blender、Godot等支持glTF的软件中导入。模型没有骨骼,要让它动起来需要另外处理。

从一张画到第一个3D模型都免费

分享这篇文章

虚幻引擎导入GLB的方法|Interchange导入设置,以及材质发白、反光过强时的解决办法
设计与3D技术

虚幻引擎导入GLB的方法|Interchange导入设置,以及材质发白、反光过强时的解决办法

虚幻引擎5(Unreal Engine 5)可以用标准导入功能读取GLB。本文依据官方文档,说明把GLB拖进Content Browser后打开的Interchange对话框怎么看、没有骨骼的GLB为何以Static Mesh导入、材质发白或像金属一样反光时的处理、大小与朝向的调整,以及与Unity、Godot的区别。

2026年11月7日17分钟阅读
阅读全文