CAD 领域的资深工程师 Matt Keeter 宣布正式开源其实验性实体建模集成开发环境 Halfspace,作为其始于 2022 年开发的 Rust 语言隐式几何内核 Fidget 的前台载体。在生成式代码大行其道的 2026 年,作者明确声明该项目由纯人类大脑自 2025 年 4 月起一行行敲定,旨在通过直接暴露符号距离场的内部等高线与梯度,解决数学建模如同徒手写汇编语言的长期痛点。
这一工程的意义不在于又诞生了一个小巧的网页建模工具,而在于它揭示了一条绕开工业 CAD 寡头技术壁垒的现实路径。传统三维工业软件极度依赖边界表示法(B-rep)和 NURBS 曲面算法,求交与缝合过程的算法黑洞唯有大型商业团队才能勉力维护;Halfspace 依靠连续数学场直接界定几何形体内外,把复杂的实体造型压缩到个人可控的代码规模。
撕开数学黑盒:把距离场等高线做成可观测实体
在 3D 打印与数控加工等物理制造场景中,实体建模的核心准则是空间闭合性,即任何坐标点都必须明确属于内部或外部。游戏引擎里常见的单层三角面在进入切片软件时极易破面失效,而工业级边界缝合算法又极其沉重。符号距离场(SDF)虽然以简洁的数学连续函数天然支持布尔运算,却让建模者陷入了另一种折磨:面对纯粹的代数变量,开发者完全摸不清曲面在三维空间中的行为边界。
许多开发者在写隐式曲面时常遇到破面与光照阴影突变,根源在于看似正常的函数实际上暗藏导数跳变。Halfspace 采用嵌入式脚本语言 Rhai 作为前台交互语言,核心举措是把底层的距离场和梯度等高线直接推到屏幕前端。当出现跳变不连续时,由于 Fidget 依赖自动微分计算表面法线,不连续的场会导致着色法线彻底失真;Halfspace 允许建模者像观察地形图一样检视场强衰减,将梯度的模长微调拉平至全域恒定为 1,在根源上消除了渲染破损与几何缺陷。
字节码与编译器:原生 JIT 榨干指令集红利
为了支撑实时几何交互,底层的 Fidget 几何运算管道没有采用传统的语法树逐级递归,而是把建模表达式解析为去重图,编译成类似 SSA(静态单赋值)的字节码 Tape。在空间遍历过程中,内核依托区间算术(Interval Arithmetic)大范围剔除完全位于实体内部或外部的空白区域,只对跨越零平面的曲面边缘进行高精度细分计算。
架构层面的实质跃迁发生在指令集一级。Matt Keeter 为 Fidget 开发了针对 x86-64 架构(AVX2 与 BMI2 指令集)和 AArch64 架构(NEON 向量扩展)的原生即时编译器(JIT)。在 Apple M1 Max 硬件测试中,这一设计展现出了压倒性的计算吞吐表现。
| 测试分辨率规格 | libfive(老牌 C++ 内核) | Fidget VM 解释执行 | Fidget JIT 向量编译 | JIT 相对提速表现 |
|---|---|---|---|---|
| 1024³ 网格计算 | 66.8 ms | 61.7 ms | 23.6 ms | 提速约 2.8 倍 |
| 2048³ 网格计算 | 211.0 ms | 184.0 ms | 77.4 ms | 提速接近 3 倍 |
这组实测数据拉开了代际差距。以往基于 C++ 编写的 libfive 内核在行业内已被视作高水准的个人隐式算法库,而 Fidget JIT 能够直接将高分辨率场的评估耗时斩断近三分之二。渲染管线也完成了重构:过去依赖 CPU 与 WebAssembly 计算再交由 Halfspace 绘制的低效链条被废弃,改为由 Fidget 直接调用 Rust wgpu 抽象统管 GPU 渲染路径,Halfspace 仅承担纯粹的 Shader 传递与 UI 呈现。
几何内核的算力跃迁不是靠堆砌硬件,而是把每一个数学表达式精确映射到处理器的向量寄存器中。
现实掣肘:双重轮廓网格与工程落地的未竟之役
尽管纯数学内核表现强悍,但把 Halfspace 推向严肃生产工具依然隔着一道鸿沟。开源建模领域的绝对霸主 OpenSCAD 基于多边形 CSG 构建,虽然在有机曲线与平滑过渡混合上极为笨重,但其沉淀的 BOSL2 和 MCAD 库提供了极为庞大的机械工程尺寸标准。相比之下,Halfspace 能够随心所欲生成分形海绵与复杂场,却缺乏一整套工业尺寸约束链。
更为致命的瓶颈在于物理化提取算法的成熟度。Halfspace 采用流形双重轮廓算法(Manifold Dual Contouring)来提取闭合水密三角网格,但在面对超薄壁厚结构时容易出现特征丢失,退化的数学场甚至会导致导出的网格产生自相交。对于 3D 打印用户而言,模型在屏幕上渲染完美,并不等同于切片引擎能正确识别内部实体。
- 风险.跨平台 WebGPU 愿景在移动端 Safari 上存在适配故障,加之浏览器端 WebAssembly 无法使用原生 JIT 加速,导致网页演示版本的性能与原生环境存在显著断层。
从 Kokopelli、Antimony 到 libfive,再到今日基于 MPL-2.0 开源协议发布的 Halfspace 与 Fidget,Matt Keeter 的长跑印证了基础软件开发的残酷规律。在算法自动生成代码喧嚣尘上的当下,这种对内存排布、底层指令集与数学场梯度的单人雕琢显得格外逆流。对于开源 CAD 开发者与进阶 3D 打印创客而言,Halfspace 尚不足以接管生产任务,但它给整个行业立起了一块关键路标:隐式几何的未来,不需要隐藏数学,而是把数学变成可调试的代码。
