存档级三维模型动辄几百 MB,无法直接放进网页。云展厅的技术核心,是把高精度采集数据转换成能在浏览器和手机上流畅加载、交互、甚至 AR 查看的轻量化资产,同时尽量不损失观感。本文拆解这条链路。
本文为技术科普。文中体积/参数为常见工程范围,具体取值随文物与目标平台而定。
一、展示模型的格式:glTF / GLB
Web 三维展示的事实标准是 glTF 2.0(及其二进制封装 .glb),被称为“三维领域的 JPEG”。它把几何、材质、纹理、动画打包,浏览器端用 WebGL 直接渲染,无需插件。
存档常用的 OBJ、PLY、FBX 不适合直接上网——它们或体积大、或不含标准 PBR 材质。云展厅的第一步通常是从归档母本导出/转换为 glTF,并采用 metallic-roughness 标准 PBR 材质(很多老扫描件用已废弃的 specular-glossiness 扩展,需转换,否则在新渲染引擎里会变白模)。
二、让模型变小的两项压缩
1. 几何压缩:Draco
Draco 对网格的顶点、法线、UV 做量化与熵编码,几何体积通常可压缩到原来的 20%–40%。代价是加载时需要一个解码器(WASM)。
工程要点:解码器应本地化部署,不要依赖外部 CDN——否则离线/弱网/内网环境会因拉不到解码器而白屏。
2. 纹理压缩:KTX2 / Basis
普通 JPG/PNG 纹理解码后在显存里仍是未压缩位图,移动端易爆显存。KTX2(Basis Universal) 是 GPU 原生压缩纹理,显存占用与带宽都更低,对多模型同屏的展厅尤为关键。
经过 Draco + KTX2,一件文物的展示模型通常能压到单件 1–3 MB 量级,在移动网络下可接受。
三、轻量化:减面与纹理分级
压缩之外,还要做模型简化(Decimation):把归档母本的高面数网格按观感无损的程度减面,并把纹理从 ≥1200 dpi 降到展示够用的分辨率。原则是——
- 几何减面以轮廓与关键细节不塌陷为底线;
- 法线贴图(Normal Map)可把高模细节“烘焙”到低模上,用更少的面保留视觉细节。
归档母本永久保留,展示模型是它的派生物。算法升级后,凭母本可重新生成更优的展示版,无需重扫文物——这就是“一次采集,两份价值”在展示侧的体现。
四、浏览器渲染与交互
展示层常用 <model-viewer>(基于 three.js 封装)或直接用 three.js / Babylon.js:
- 360° 旋转、缩放:鼠标/触摸操控相机;
- 环境光照(IBL):用 HDR 环境贴图让 PBR 材质呈现真实反射;
- 热点标注:在模型表面挂交互点,弹出讲解;
- 全景展厅:若是“展厅漫游”形态,用全景图(等距柱状投影)+ 热点,叠加三维展品。
五、移动端 AR:不用装 App
主流方案借助操作系统级 AR,无需安装应用:
- iOS:提供 USDZ 模型,Safari 调起 AR Quick Look;
- Android:用 glTF/GLB 经 Scene Viewer 调起 ARCore;
- WebXR:支持的浏览器可直接在网页内进入 AR 会话。
观众扫码即可把文物按真实比例“摆”到所在环境中查看,适合现场用自己的手机体验。
六、加载性能优化清单
- Draco + KTX2 压缩,单件控制在数 MB;
- 解码器与依赖本地化,避免外部 CDN 依赖;
- 懒加载:进入视口或点击后再加载模型;
- 静态托管 + 强缓存:模型、解码器设长缓存(immutable);
- poster/占位图:模型加载完成前显示封面,避免白屏;
- 控制同屏 WebGL 上下文数量,移动端尤其注意显存。
云展厅不是“把模型传上网”那么简单,而是一条从存档母本到浏览器/AR 的转换与优化链路:glTF 标准化、Draco/KTX2 压缩、减面轻量化、WebGL 渲染、系统级 AR。做对了,几百 MB 的高精度数据也能在手机上秒开,且观感不打折。