通过紧凑API降低AI生成3D模型的Token消耗,提供可编辑的机械结构构建方案。
有人开发了一个 Python 库,让 Claude Code 能够在 Blender 中创建真正的 3D 模型。包括可动部件。
这不仅仅是根据文本提示生成的网格。
你可以描述一个机械物体,让 AI 编写一段简短的 Python 程序,最终得到一个各个组件都能移动的模型。
这个项目叫 sand3d,它的洗衣机演示很好地说明了为什么这很有趣。
整个洗衣机仅用 38 行 Python 代码定义。
它有一个柜体、一个旋转滚筒、一扇带玻璃和把手的门、一个洗涤剂抽屉和一个控制旋钮。
但巧妙之处在于,这些不仅仅是装饰性的网格。
门有一个铰链,定义了 143° 的运动范围。
滚筒可以连续旋转。
洗涤剂抽屉可以滑入滑出。
甚至连旋钮也有自己的旋转关节。
而且每个组件都以命名部分的形式存在于装配体中。
这很重要,因为传统的 Blender 脚本对于编码代理来说可能非常痛苦。
一个模型可能理解它需要创建一个带有四个孔、圆角边缘和特定厚度的支架。
但将其转换为原始 Blender Python 通常需要大量的几何运算、坐标和样板代码。
sand3d 给代理提供了一个更小的词汇表。
与其手动操作顶点,它可以描述如下操作:
创建矩形轮廓。
将其挤出为实体。
在预定义位置添加孔。
圆化选定的边缘。
使用关节连接可动组件。
导出完成的装配体。
根据项目自身的测量,单个部件所需的 token 比使用 Blender Python、CadQuery 或 FeatureScript 的等效实现少 2–6 倍。
整个 API 文档大约占用 3,600 个 token。
这意味着你可以将文档提供给 Claude Code,而无需用庞大的 CAD 框架填满其上下文窗口。
而且由于模型被定义为 Python 程序,它们是可重现且可编辑的。
想改变支架的宽度?更改一个参数即可。
想让门开得更大?修改关节限制。
想要完全不同的装配体?让代理重写相关部分。
导出选项也比预期的更有趣。
STL 用于 3D 打印。
GLB 用于浏览器和游戏引擎。
URDF 用于机器人和 MuJoCo、PyBullet 等仿真环境。
USD 用于 OpenUSD 管线。
OBJ 用于标准网格工作流。
一个重要的区别是:这不是保证完美几何形状的魔法文本到 3D 模型。
它是一个编程接口,使 AI 代理更容易进行程序化 3D 建模。生成的代码和 resulting 几何形状仍需检查,特别是对于物理制造而言。
但我真的很喜欢这个方向。
与其训练另一个巨大的生成模型来直接生成 3D 资产,不如给编码代理一个紧凑的几何语言,让它一步步构建对象。
结果不仅仅是一个你可以观看的模型。
它是一个你可以检查、修改、动画制作并可能制造的模型。
开源,Apache 2.0 许可证。
来源:Keisuke · x.com