CAD 领域的资深工程师 Matt Keeter 宣布正式开源其实验性实体建模集成开发环境 Halfspace,作为其始于 2022 年开发的 Rust 语言隐式几何内核 Fidget 的前台载体。在生成式代码大行其道的 2026 年,作者明确声明该项目由纯人类大脑自 2025 年 4 月起一行行敲定,旨在通过直接暴露符号距离场的内部等高线与梯度,解决数学建模如同徒手写汇编语言的长期痛点。

这一工程的意义不在于又诞生了一个小巧的网页建模工具,而在于它揭示了一条绕开工业 CAD 寡头技术壁垒的现实路径。传统三维工业软件极度依赖边界表示法(B-rep)和 NURBS 曲面算法,求交与缝合过程的算法黑洞唯有大型商业团队才能勉力维护;Halfspace 依靠连续数学场直接界定几何形体内外,把复杂的实体造型压缩到个人可控的代码规模。

撕开数学黑盒:把距离场等高线做成可观测实体

在 3D 打印与数控加工等物理制造场景中,实体建模的核心准则是空间闭合性,即任何坐标点都必须明确属于内部或外部。游戏引擎里常见的单层三角面在进入切片软件时极易破面失效,而工业级边界缝合算法又极其沉重。符号距离场(SDF)虽然以简洁的数学连续函数天然支持布尔运算,却让建模者陷入了另一种折磨:面对纯粹的代数变量,开发者完全摸不清曲面在三维空间中的行为边界。

两种实体建模技术路线的权衡对照 传统 B-rep / NURBS 工业路线 几何表达:修剪曲面缝合、拓扑边界缝合 工程长处:机械装配严谨、公差约束链完备 致命痛点:求交无闭式解、开发门槛被工业垄断 典型代表:Siemens Parasolid、ACIS Halfspace / Fidget 连续场路线 几何表达:连续数学场(SDF)与标量方程 工程长处:单人可维护内核、天然水密与平滑融合 关键创新:暴露距离场与自动微分梯度可观测性 输出产物:流形双重轮廓算法水密三角网格

许多开发者在写隐式曲面时常遇到破面与光照阴影突变,根源在于看似正常的函数实际上暗藏导数跳变。Halfspace 采用嵌入式脚本语言 Rhai 作为前台交互语言,核心举措是把底层的距离场和梯度等高线直接推到屏幕前端。当出现跳变不连续时,由于 Fidget 依赖自动微分计算表面法线,不连续的场会导致着色法线彻底失真;Halfspace 允许建模者像观察地形图一样检视场强衰减,将梯度的模长微调拉平至全域恒定为 1,在根源上消除了渲染破损与几何缺陷。

字节码与编译器:原生 JIT 榨干指令集红利

为了支撑实时几何交互,底层的 Fidget 几何运算管道没有采用传统的语法树逐级递归,而是把建模表达式解析为去重图,编译成类似 SSA(静态单赋值)的字节码 Tape。在空间遍历过程中,内核依托区间算术(Interval Arithmetic)大范围剔除完全位于实体内部或外部的空白区域,只对跨越零平面的曲面边缘进行高精度细分计算。

Fidget 几何内核的多级运算与编译流水线 Rhai 脚本输入 几何原语定义 数学布尔运算 去重图与 Tape 类 SSA 字节码 区间算术粗筛剪枝 JIT 即时编译 x86-64 (AVX2/BMI2) AArch64 (NEON) 双端渲染导出 wgpu 实时光栅化 流形双重轮廓网格

架构层面的实质跃迁发生在指令集一级。Matt Keeter 为 Fidget 开发了针对 x86-64 架构(AVX2 与 BMI2 指令集)和 AArch64 架构(NEON 向量扩展)的原生即时编译器(JIT)。在 Apple M1 Max 硬件测试中,这一设计展现出了压倒性的计算吞吐表现。

测试分辨率规格libfive(老牌 C++ 内核)Fidget VM 解释执行Fidget JIT 向量编译JIT 相对提速表现
1024³ 网格计算66.8 ms61.7 ms23.6 ms提速约 2.8 倍
2048³ 网格计算211.0 ms184.0 ms77.4 ms提速接近 3 倍

这组实测数据拉开了代际差距。以往基于 C++ 编写的 libfive 内核在行业内已被视作高水准的个人隐式算法库,而 Fidget JIT 能够直接将高分辨率场的评估耗时斩断近三分之二。渲染管线也完成了重构:过去依赖 CPU 与 WebAssembly 计算再交由 Halfspace 绘制的低效链条被废弃,改为由 Fidget 直接调用 Rust wgpu 抽象统管 GPU 渲染路径,Halfspace 仅承担纯粹的 Shader 传递与 UI 呈现。

几何内核的算力跃迁不是靠堆砌硬件,而是把每一个数学表达式精确映射到处理器的向量寄存器中。

现实掣肘:双重轮廓网格与工程落地的未竟之役

尽管纯数学内核表现强悍,但把 Halfspace 推向严肃生产工具依然隔着一道鸿沟。开源建模领域的绝对霸主 OpenSCAD 基于多边形 CSG 构建,虽然在有机曲线与平滑过渡混合上极为笨重,但其沉淀的 BOSL2 和 MCAD 库提供了极为庞大的机械工程尺寸标准。相比之下,Halfspace 能够随心所欲生成分形海绵与复杂场,却缺乏一整套工业尺寸约束链。

工程可用性现状与技术约束指标 0 社区贡献指标 GitHub 零 Issue、零 PR 状态 0 JIT WebAssembly 限制 浏览器端完全退回解释器执行 16 点赞 Hacker News 讨论 早期单帖讨论,生态尚处雏形

更为致命的瓶颈在于物理化提取算法的成熟度。Halfspace 采用流形双重轮廓算法(Manifold Dual Contouring)来提取闭合水密三角网格,但在面对超薄壁厚结构时容易出现特征丢失,退化的数学场甚至会导致导出的网格产生自相交。对于 3D 打印用户而言,模型在屏幕上渲染完美,并不等同于切片引擎能正确识别内部实体。

  • 风险.跨平台 WebGPU 愿景在移动端 Safari 上存在适配故障,加之浏览器端 WebAssembly 无法使用原生 JIT 加速,导致网页演示版本的性能与原生环境存在显著断层。

从 Kokopelli、Antimony 到 libfive,再到今日基于 MPL-2.0 开源协议发布的 Halfspace 与 Fidget,Matt Keeter 的长跑印证了基础软件开发的残酷规律。在算法自动生成代码喧嚣尘上的当下,这种对内存排布、底层指令集与数学场梯度的单人雕琢显得格外逆流。对于开源 CAD 开发者与进阶 3D 打印创客而言,Halfspace 尚不足以接管生产任务,但它给整个行业立起了一块关键路标:隐式几何的未来,不需要隐藏数学,而是把数学变成可调试的代码。