做 Web 三维选型时,最容易误导人的问题之一是:“这个引擎支持哪些格式?”如果一张表里把 GLB、FBX、OBJ 与 STEP、RVT、JT、DWG 混在一起,通常已经把四类能力合并成了一个词。
1. 源工程格式能否被正确解释
RVT、NWD、STEP、JT、CATIA、SolidWorks、NX、Creo 不只有三角形,还可能包含 B-Rep、装配关系、实例、属性、单位、材质、版本和外部引用。
所以“支持”至少要回答:
- 当前版本能否读取;
- 外部引用是否完整;
- 装配结构、属性与单位是否保留;
- 异常几何是否有可定位的日志。
能上传扩展名,不等于工程数据已经被正确解释。
2. 能否生成适合浏览器的查看缓存
浏览器不应该每次从头解析完整源文件。更稳的流程是在首次转换时提取结构和属性,生成分块网格、LOD、材质纹理与稳定对象映射;再次打开直接读取缓存,把昂贵的源格式解析与日常浏览分开。
缓存也不能只是一个超大 GLB。大模型还要处理空间分块、优先级、重复几何、工作集、资源释放,以及结构树对象如何映射到渲染批次。只压缩下载字节,不控制运行时对象数和显存,卡顿往往只是从网络阶段移到了解码或 GPU 上传阶段。
3. 运行时 Loader 能否读取交付资产
Three.js 官方把 glTF/GLB 作为推荐运行时格式,并通过 addons 提供多种 Loader。Loader 的职责是把已经准备好的运行时资产变成场景对象,不是替代 CAD/BIM 转换器。
GLTFLoader 能读出网格、材质和动画,但不会凭空恢复 STEP 的 B-Rep、RVT 的构件属性或 NWD 的审阅结构。这是数据链路的职责边界,不是再装一个 Loader 就能补齐的能力。
4. 打开后能否完成工程工作
工程用户最终关心的是:
- 结构树和属性是否正确;
- 选择、隐藏、测量、剖切是否可用;
- 轻量化后对象身份能否稳定回到业务构件;
- 版本更新后问题单和设备台账是否还能重新定位;
- 远程参与者是否能围绕同一视角与构件协同。
如果合批后找不到零件身份,或者属性无法回到构件,几何显示成功也不能算完整支持。
因此,一张可靠的格式兼容矩阵至少应记录:源软件/版本、扩展名、结构、属性、材质、装配实例、单位、验证模型、首次转换结果、缓存后再次打开结果。Loader 只是其中一个环节。
我们做的 ModelView 采用完整工程链路:本地读取源工程格式,生成可复用查看缓存,再由 WebGPU 运行时按工作集加载,并用稳定对象身份连接结构、属性和审阅工具。说明一下,我是 ModelView 的开发者;Windows 标准版可直接用真实模型验证:gitee.com/onedraw/mod…
参考资料
- Three.js Loading 3D Models:threejs.org/manual/en/l…
- Three.js Addons:threejs.org/manual/en/i…
- Khronos glTF:www.khronos.org/gltf/