Meshdiff: STL, 3MF 和 OBJ 文件的客户端 3D 网格对比工具
Meshdiff 支持在浏览器中进行可视化的 3D 网格差异对比
Meshdiff 是一个旨在通过视觉方式对比两个 3D 模型版本的客户端工具。它允许用户上传两个 STL、3MF 或 OBJ 格式的文件,并生成基于体素(voxel)的差异图,其中新增的材料以绿色高亮显示,移除的材料以红色高亮显示。该工具提供体积增量指标,并提供 0.05mm 到 1mm 之间可调节的容差范围,以优化对比结果。
技术架构与实现
Meshdiff 以隐私和性能为核心,通过在用户的浏览器中本地执行所有计算来构建。
客户端处理
为了确保数据隐私并防止服务器端上传,Meshdiff 利用 Web Worker 来处理差异对比过程中的繁重任务。技术栈包括:
- React 和 TypeScript:用于应用程序框架和类型安全。
- React Three Fiber:用于在浏览器中进行 3D 渲染。
- 自定义体素差异引擎:一个专门开发的引擎,用于处理“三角形汤”(triangle soup)——即在现实世界的 STL 文件中常见的非流形几何结构。
基于体素的对比 vs. CSG
与依赖 Manifold 或 CGAL 等构造实体几何(CSG)库的工具不同(这些库需要干净、水密的拓扑结构才能正常工作),Meshdiff 使用基于体素的方法。这确保了在处理经常包含拓扑错误或缝隙的现实世界网格时,该工具仍能保持稳健。
社区反馈与功能需求
Hacker News 上的用户和社区成员为该工具的可用性和集成提出了几项潜在的改进建议:
视口同步
多位用户请求了“锁定视图”或“同步变换”功能。这将允许用户旋转或平移一个视口,而其他视口也会同步旋转,从而更容易对比模型不同版本在特定角度下的差异。
集成与自动化
为了使该工具对专业工作流更有用,有人提出了 CI/CD 集成的建议:
- GitHub PR 触发器:将 Meshdiff 集成为 GitHub Pull Requests 的触发器,以自动预览分支之间的 3D 文件更改。
- CLI 工具:开发命令行界面(CLI)以允许自动生成差异图供后续检查。
缺陷报告与边缘情况
一些用户指出了当前版本中的特定技术限制:
- 多组 OBJ 文件:据报告,目前会忽略多组 OBJ 文件,仅渲染第一组。
- 重复文件警告:用户建议在两次上传同一个文件时添加警告,以避免混淆。
"I built Meshdiff because clients keep sending me part_v3_FINAL.stl and I have no quick way to see what changed. Drop two STL/3MF/OBJ files – voxel diff renders in your browser."
– @projscope