3D 产品模型文件大小超过 5 MB,就已经不适合让买家在手机上打开的商品页了。能在一部中端安卓手机、普通移动网络下撑住的重量,大约在 2 MB 左右——原因不是审美,是算术:5 Mbps 下,每 1 MB 要先等 1.6 秒,然后渲染器才能画出第一帧。
意识到这一点,讨论的性质就变了。多数供应商把 3D 模型当成营销素材,把文件大小当成三维工作室的问题;买家只看到它是一打开页面就要下载的第一件东西。下面是预算表、字节真正花掉的四个地方,以及把 3D 链接贴进报价邮件之前要跑的六项检查。
3D 产品模型文件大小对照表:手机先下载的是什么
下载时间 = 文件大小 × 8 ÷ 带宽,公式里没有渲染、没有旋转、也没有第一帧。下表假设连接稳定,且不计 TLS 握手和往返延迟,所以真实手机只会更慢。
| 模型大小 |
10 Mbps |
5 Mbps |
1.6 Mbps |
买家在等待时做什么 |
| 2 MB |
1.6 秒 |
3.2 秒 |
10 秒 |
转一下模型,顺手读一行参数 |
| 5 MB |
4 秒 |
8 秒 |
25 秒 |
划走,或改点静态图 |
| 10 MB |
8 秒 |
16 秒 |
50 秒 |
认为页面坏了 |
| 20 MB |
16 秒 |
32 秒 |
100 秒 |
关掉标签页 |
| 50 MB |
40 秒 |
80 秒 |
250 秒 |
根本看不到模型 |
50 MB 那一行值得再读一遍:在办公室好网络下也要 13 秒,在仓库、展厅或酒店那种弱移动网络下要四分多钟。这么大的模型不是展示素材,而是一次买家没有同意的文件传输。
3D 产品模型是唯一一种买家必须先下载完整个产品、才能看到产品任何一部分的商品素材。 照片可以逐行加载,视频可以缓冲几秒就播,GLB 不行。
为什么整个模型必须先到齐
glTF 2.0 规范明确写着它不是流式格式:二进制数据本身可流式传输,但 glTF 并没有定义任何流式结构。所以查看器只能先加载资产、解析,然后渲染,中间没有"看起来像产品"的半成品画面。
容器选择也影响这一点。GLB 把 JSON 场景描述和二进制缓冲打包成一个文件,没有 base64 膨胀,单次请求效率最高,代价是买家要等整个包。拆开的 .gltf 加 .bin 加独立贴图可以让查看器分块拉取、更早开始,但请求更多、更容易出错。单个 SKU 的产品卡通常一个 GLB 就对了;六十个 SKU 的系列,共用拆分的文件总重常常更小。
这些不会出现在性能报表的图片栏里,所以容易被忽略。商品页的最大内容绘制(LCP)元素通常是首图或文本块,不是 WebGL 画布。Google 的标准是第 75 百分位的 LCP 不超过 2.5 秒。如果你的查看器脚本和模型下载跟首图抢带宽,页面会错过这个阈值,而三维团队那边只会汇报"模型渲染正常"。
页面其他部分已经占了多少
Web Almanac 引用的 2024 年 HTTP Archive 数据:桌面端页面中位数 2,312 KB,移动端页面中位数 2,037 KB;移动端仅图片一项就占了其中约 900 KB。
把模型放进来对比:
| 资源 |
典型重量 |
相对移动端页面中位数(2,037 KB) |
| 移动端页面整体 |
约 2 MB |
1 倍 |
| 2 MB 的 GLB |
2 MB |
页面翻倍 |
| 5 MB 的 GLB |
5 MB |
整个页面的 2.5 倍 |
| 20 MB 的 GLB |
20 MB |
整个页面的 10 倍 |
预算就是这么定的:3D 展示只是页面上的一个元素,同一页还有图库、参数表、评价、统计脚本和主题。模型单独就比页面中位数还大,那模型就成了页面,而买家是在用自己的时间买单。
天气、展会 WiFi 和设备都会放大这件事。三年前的中端手机解码 4096 像素贴图,比当初审片的笔记本慢得多。用手机测,不要用工作室的显示器测。
字节花在哪,哪种压缩修哪一块
3D 产品模型文件大小的开销集中在三块,按常见占比排序:贴图、几何体、其他(动画、相机、多余节点)。很多人意外的是几何体往往不是大头——一个由照片生成的模型,只要挂一张 4096 × 4096 的 PNG 贴图,就可能比它包住的网格还重。
| 部分 |
什么把它撑大 |
真正能减下来的做法 |
| 贴图 |
4096 像素 PNG、用不到的法线/粗糙度贴图、内嵌色彩配置 |
按查看器实际显示尺寸做小图、改 JPEG 或 KTX2、删掉材质不用的贴图 |
| 几何体 |
扫描或细分出的百万面网格、重复零件 |
减面到看得见的细节程度、重复件做实例化、Draco 几何压缩 |
| 其他 |
没人播放的动画、隐藏节点、相机、灯光 |
删掉查看器用不到的东西;产品转台只需要一个相机 |
两个已由 Khronos 批准的扩展承担主要压缩工作,且解决的是不同问题:KHR_draco_mesh_compression 用压缩几何数据替代原始顶点数据流;KHR_texture_basisu 用 KTX2 加 Basis Universal 超压缩存储贴图,既降传输体积也降显存占用。
两者都是扩展,不是 glTF 基础能力。查看器必须支持,且没有未压缩回退文件时,必须在 extensionsRequired 里声明。发送之前,请用买家真正会用的那个查看器打开导出文件——你的产品卡、你的官网,或者平台的 3D 位。能在 Blender 里打开,不能证明手机浏览器里没问题。
发出 3D 产品展示链接前的六项检查
按顺序做。前两项能挡掉大部分损失,后四项能挡掉那些最后变成客服邮件的失败。
检查 1:它是网页导出,不是工程文件
.blend 或 .step 是创作文档,带着历史记录、相机、材质,有时还引用某人笔记本上某个文件夹里的贴图。网页容器是 GLB,场景里应该只有一个产品、一个相机、查看器读得懂的材质。导出对话框问"是否应用修改器""是否包含隐藏对象"时,前者选是,后者选否。
模型背后的原始照片同样重要。混用不同角度和光线的素材建出来的模型,买家一转就会看见接缝——和照片组不匹配会毁掉商品页是同一个道理。如果照片组还在拍,先看3D 产品展示需要哪些照片,再碰导出器。
检查 2:重量对应的是买家的网络,不是工作室的
打开导出文件,读出以 MB 计的 3D 产品模型文件大小,和上面的表对照。一定要看导出文件,不看源工程——40 MB 的工作文件可能导出成 3 MB,3 MB 的工作文件也可能因为打包贴图导出成 30 MB。
超标时先修最大的那一块。把四张 4096 像素 PNG 换成一两张 1024 像素 JPEG,通常比改几何省得多。Draco 和 KTX2 放在后面用:它们的价值是把合理的资产做小,而不是把不合理的资产变得可以接受。
检查 3:第一帧是海报图,不是空白画布
延迟加载查看器,先显示静态图——最好和模型打开时的角度一致——直到买家操作再启动。这让 3D 画布不进关键路径,也给页面一个真正的 LCP 候选。
下一个最常翻车的是交互响应。Google 的 Interaction to Next Paint 标准是第 75 百分位不超过 200 毫秒,超过 500 毫秒算差。一个重模型加上物理引擎和阴影通道,在中端手机上很容易让"点击旋转"超过这条线,哪怕页面本身加载很快。
检查 4:一个拇指就能转
单手拿手机,用拇指转模型。如果手势需要两根手指、松手后模型自己漂移、缩放时旋转中心跑偏,买家就会跟查看器较劲,而不是读产品。
边缘也要测:顶面、底部、背面。把旋转限制在 ±45 度的查看器,恰好藏住了买家最想看的那些面——也就是摄影棚从来不会拍的那几面。
检查 5:形状仍然和产品一致
拿模型对着实物和尺寸图转一圈,看轮廓、五金件、拼缝,以及板材边缘的厚度;再重点看买家会检查的地方:铰链、脚垫、拉手、线条的断面。
把照片转成 3D 是展示步骤,不是测量步骤。模型可以把一条弧线做顺,但不能凭空长出一个拉手、抹掉一条拼缝,或者改掉尺寸图上写明的比例。模型和图纸冲突时,以图纸为准,重建模型。
这也是两类输出必须彼此诚实的地方。可旋转模型表达形状和零件如何相接,标注过的尺寸图表达数字。把量出来的尺寸钉在照片上、再用同一份素材生成可旋转模型的软件,能让这两种视图不跑偏——尺寸留在标注上,买家读得到,而不是埋进渲染里,谁都量不了。
检查 6:看不到的人也有退路
企业笔记本会禁 WebGL,有些浏览器默认关闭,老手机在大贴图上会内存不足。以上任何一种情况,买家都应该还能拿到静态图、参数表和联系按钮。
把回退方案写进页面,不要只写在计划里。WebGL 不可用时只显示一个转圈的灰框,比没有查看器更糟,因为买家会认定你的产品页坏了。
3D 展示能证明什么,不能证明什么
3D 产品展示是展示资产:它传达形状、比例和零件之间的关系,不是测量记录。模型在屏幕上的视觉大小取决于相机、视场角和买家屏幕,所以买家没法从上面读出一个尺寸,供应商也不该暗示可以。
这句话值得直接写在页面上。一行字——"尺寸以实物测量为准,3D 展示只表达形状"——能挡住这个流程里最贵的误会:买家以为模型就是带尺寸的图纸,然后照着它下单。
| 买家的疑问 |
什么能回答 |
什么不能 |
| "宽度正好是 1200 mm 吗?" |
尺寸标注在照片上的规格图 |
再精细的 3D 渲染 |
| "背面长什么样?" |
3D 展示,或背面照片组 |
只有正面的图库 |
| "能进我家门吗?" |
门宽加上最小的包装尺寸 |
能在屏幕上随便缩放的模型 |
| "底座怎么固定?" |
拆解图,或把底座拆开的 3D 展示 |
一张漂亮的效果图 |
什么时候 3D 不值得这份重量
3D 不是所有买家问题的默认答案,把所有格式都堆在一页上,比只放对的那一种更慢。用下面的判断规则。
| 买家真正的问题 |
更轻、也够用的素材 |
什么情况下才用 3D |
| "侧面什么样?" |
360 度照片序列或四角度图组 |
买家需要自由旋转,而不是逐帧翻看 |
| "多大?" |
尺寸标注在照片上的规格图 |
从不——3D 回答不了这个问题 |
| "怎么拆开?" |
带引出编号的拆解图 |
装配顺序本身就是卖点 |
| "饰面对不对?" |
同一光线下拍的微距照片 |
从不——贴图不是颜色证明 |
如果问题只是"发哪种格式",真正的选择通常在 3D 展示和照片序列之间,而不是 3D 和什么都不发之间。取舍点是文件重量、交互程度,以及买家需要多少控制权;3D 产品查看器与 360 度照片的对比把这个区分讲得更细。
3D 值得占位时,把它放在能被看见的地方:一个和测量尺寸并排打开的3D 产品展示,放在买家会转发给同事的那张产品卡里,比藏在目录页三次点击之后的查看器有用得多。
常见问题
网站上的 3D 产品模型应该多大?
5 MB 以下;如果买家很可能用手机打开,2 MB 以下。上限来自算术而非偏好:5 Mbps 下,5 MB 的模型要先等 8 秒才出第一帧,而且还没算查看器脚本的运行时间。看导出的 GLB,不看源工程。
3D 模型会让商品页变慢吗?
会,通常在两处。下载会和首图抢带宽,把最大内容绘制推过 Google 的 2.5 秒良好线;查看器脚本再抢主线程,把交互延迟推向 200 毫秒的 INP 阈值。要在模型真实上线的情况下跑 PageSpeed Insights,不要用占位图测。
GLB 和 glTF 有什么区别?
GLB 是二进制容器,glTF 是格式。.gltf 是 JSON,指向另外的 .bin 和图片文件;.glb 把 JSON 和二进制缓冲装进一个文件,不用 base64,所以是一次请求、比等价的 JSON 内嵌略小。两者都是 glTF 2.0,都能在合规的查看器里加载。
不破坏形状的前提下能减小 3D 模型文件大小吗?
能,三步:删掉材质用不到的贴图、把几何减到查看器真能显示的细节、再对几何用 Draco、对贴图用 KTX2/Basis。每做完一步都重新核对轮廓和零件数量。最便宜的收益几乎总在贴图;最贵的错误是把曲面减到轮廓已经不像图纸。
买家能从 3D 展示里量出产品尺寸吗?
不能。3D 展示表达形状和比例,无法确认尺寸,因为视觉大小取决于相机、视场角和屏幕。需要数字的买家应该看标注过的规格图或尺寸图——尺寸要挂在产品上,而不是从渲染里推断。
资料来源