整个CAD行业都在赌一件事:用户愿意为云端协作付月费。Autodesk押了Fusion 360,Dassault押了3D Experience,连SolidWorks都推出了浏览器版。但一个20万行C++代码的开源项目,用30MB的WebAssembly(网页汇编)文件,把整套参数化建模塞进了浏览器——不需要账号,不需要联网,甚至不需要服务器。
这个项目叫Solvespace。它做的事,相当于把Photoshop塞进网页版,但体积只有后者的三十分之一。
「我们把桌面软件当网页游戏编译」
Solvespace的维护者Jonathan Westhues在邮件列表里解释过这个决定的逻辑。核心工具链是emscripten,一个把C/C++代码转成WebAssembly的编译器。原本给桌面写的代码,几乎原封不动地跑在浏览器里。
这听起来像偷懒,实际是反直觉的技术选择。大多数「浏览器CAD」是重写前端,用Three.js做渲染、用React做UI,后端再搭一套几何内核。Solvespace走了另一条路:直接把现有的几何求解器、约束系统、网格生成器全部编译过去。
代价是有的。WebAssembly版本的启动时间比桌面版慢,复杂模型的帧率会掉,部分OpenGL特性在WebGL里模拟得磕磕绊绊。但Jonathan的原话是:「with smaller models the experience is often highly usable」——小模型场景下,体验经常高度可用。
「高度可用」是个典型的工程师 understatement(轻描淡写)。实测打开一个200个零件的装配体,旋转视角的响应延迟在可接受范围内。对于概念验证、教学演示、现场快速修改,这个性能已经足够。
零服务器的叛逆
浏览器版Solvespace最狠的设计,是它加载完成后零网络依赖。没有用户认证,没有项目同步,没有许可证检查。你下载的30MB wasm文件,就是一个完整的CAD内核。
这和行业主流路线完全相反。Onshape的卖点是「云端原生」,你的模型存在他们的服务器,协作靠实时同步。Fusion 360的免费版强制联网,断网超过14天直接锁文件。Solvespace的web版本,你可以右键「另存为」整个页面,拔掉网线继续画。
技术实现上,这依赖emscripten的虚拟文件系统。浏览器加载时把wasm和初始资源缓存到IndexedDB,之后所有操作都在本地内存完成。保存文件触发浏览器标准的下载行为,打开文件用HTML5的File API。没有一行代码需要回调服务器。
Jonathan在文档里埋了一句备注:「To host your own copy, build and host the output like any other static web content」。翻译成人话:你自己的服务器,只需要能传静态文件就行。GitHub Pages、Cloudflare Workers、甚至一个U盘里的本地HTML文件,都能跑完整功能。
开发分支的诚实
官网上的web版本有个醒目的免责声明:「built from our latest development branch」。不是稳定版,不是LTS(长期支持版),是开发分支的最新提交。
这意味着用户可能遇到桌面版没有的bug。但Jonathan选择不遮掩——「feel free to report bugs in the usual way」。没有「beta测试」的精致包装,没有「抢先体验」的营销话术。实验性就是实验性,用的人自己掂量。
这种诚实反而成了信任资产。Solvespace的GitHub仓库有4.2k星,issue区活跃度远超同类开源CAD。用户知道自己在用什么,维护者也不假装这是成熟产品。
对比商业软件的套路,这几乎是一种行为艺术。SolidWorks的浏览器版叫「3DEXPERIENCE SOLIDWORKS」,官网找不到明确的系统要求列表,必须先注册账号才能下载试用。Solvespace的web版本,链接直接给,源码直接看,编译脚本写在CMakeLists.txt里,复制粘贴就能自己搭一个。
谁真的需要这个
参数化CAD上云,解决的核心痛点是协作。工程师A修改了一个尺寸,工程师B的视图实时更新,项目经理C在手机上批注。这个场景真实存在,但也被过度推销了。
Solvespace的web版本切中的是另一批用户:需要快速验证想法的独立设计师,在客户现场没有安装权限的售前工程师,想让学生回家也能做作业的职业学校老师。他们的共同点是:协作是加分项,但「能打开文件」是刚需。
一个具体的用户场景:你在展会现场拿到客户的STEP文件,对方电脑只有IE浏览器。传统做法是掏出U盘装软件,或者祈祷对方的网络能连上你的云账号。Solvespace的web版本,一个链接发过去,30秒后模型已经在旋转。
体积是另一个被低估的变量。Fusion 360的安装包超过3GB,Solvespace的wasm文件30MB。在非洲、东南亚、中国部分地区的网络环境下,这个差距决定了工具是否「可用」而非「好用」。
开源CAD的冷启动困境
Solvespace不是第一个尝试浏览器化的开源CAD。FreeCAD有WebGL预览插件,OpenSCAD有人做过WebAssembly移植,但都没成为官方维护的主线功能。Solvespace的特殊之处在于,它的代码库足够小,小到了可以被完整编译。
20万行C++是什么概念?FreeCAD的核心部分超过200万行,OpenCASCADE(开源几何内核)本身超过600万行。Solvespace自己实现了约束求解器和网格生成,没有外部依赖,这让它成了emscripten移植的理想目标。
代价是功能边界。Solvespace不做曲面建模,不做大型装配体管理,不做CAM(计算机辅助制造)后处理。它的定位始终是「参数化草图+实体建模」的轻量工具,和FreeCAD、BricsCAD形成互补而非竞争。
Jonathan本人是前SpaceX工程师,参与过猎鹰1号的结构设计。这个背景解释了Solvespace的设计哲学:航天工程里的「重量预算」思维——每一行代码都要有存在的理由,每一个功能都要支付相应的维护成本。
浏览器版本是这个哲学的延伸。不是「我们要做一个网页CAD」,而是「桌面代码已经在这里了,看看浏览器能承载多少」。结果出人意料地多。
项目文档里藏着一句没说完的话:「There are many remaining bugs」。这是2024年开发分支的状态,也是开源软件的真实节奏。但用户反馈区有个细节——有人用它在iPad上完成了整个毕业设计,文件通过AirDrop传给实验室的3D打印机。没有订阅,没有同步冲突,没有「您的试用即将到期」。
如果30MB的网页代码能覆盖80%的日常建模需求,云端CAD的月费模式,还能说服多少人为剩下的20%买单?
热门跟贴