1. 从四张照片到一个能上机打印的零件:这次事件到底在做什么
我刷到“MIT教授扔4张照片,3个Grok一小时造出零件”这条消息时,第一反应不是“AI又刷屏了”,而是赶紧把这套流程拆开看了一遍。这件事说白了就一句话:一个人拿着手机拍四张零件的照片,丢给三个Grok会话轮流处理,约一小时后拿到了一份可以切片、直接送进3D打印机的工程文件。对搞过机械设计和3D打印的人来说,这句话的分量比那些“AI一键生成视频”重得多,因为它把“从实物到图纸”这条老路从半天以上的工作量压缩到了一小时以内。
要理解这件事的价值,得先知道传统的实物测绘有多痛。我这些年帮朋友复制过不少坏掉的塑料件、金属支架,流程永远是:拿游标卡尺量长宽高、量孔径、量孔距,画草图,再打开建模软件一点一点画特征。熟悉CAD的人搞一个简单支架也得30分钟到一小时,遇到曲面或者异形结构,基本就是半天起步。三维扫描仪倒是快,但一台入门设备也要几千上万,扫出来的网格数据还得专门后处理,大多数个人玩家根本不会去碰。
所以当看到这种“AI科学家冲出屏幕”式的工作流出现时,我觉得它真正打中的是一个很实际的场景:你手上有一个零件,想复刻、想改成自己的尺寸、想打印出来装配,但你没有图纸,也不会三维建模。这时候AI能看着照片直接把工程文件给你,那就把“建模能力”这个门槛拆掉了。这套流程适合谁?创客、维修师傅、产品设计打样的人、机械专业学生,还有所有“只想尽快拿到一个能用的打印件”的普通人。
1.1 事件还原:三个Grok会话组成的“虚拟工程师小组”
网上流传的描述比较夸张,但拆开来看,核心工作流并不神秘。研究者大概率是把同一个零件的正面、背面、侧面、顶部四张照片传给了三个独立的Grok会话,每个会话领一个岗位:第一个会话负责“看图说话”,输出零部件的结构描述和尺寸估算;第二个会话负责“建模”,把第一个会话的描述变成OpenSCAD或者Python代码,生成参数化三维模型;第三个会话负责“质检”,检查代码能不能跑、尺寸有没有矛盾、模型有没有会导致打印失败的硬伤。三个会话语义接力,最后导出一个STL文件。
这个“三岗制”设计很有意思,它本质上就是AI Agent里的多智能体分工。如果让一个Grok会话从头干到尾,模型很容易在中间环节“偷懒”——比如视觉分析不细致,或者写代码时漏掉某个孔。拆成三个会话之后,每个会话的上下文更短、任务更单一,幻觉和遗漏的概率会低不少。实测下来,这种把复杂任务切成多个Agent协作的方式,比单纯堆提示词要可靠得多。
1.2 解决的历史难题:从实物到图纸的逆向鸿沟
制造业里有一句大实话:没有图纸,再简单的零件也是天价。一台老设备坏了个塑料卡扣,你想单独买一个,人家不单卖;想自己做一个,就得先解决“图纸从哪来”。以前只有两个选择:要么找会建模的人帮你看图测绘,要么买三维扫描仪。前者看人脸色,后者看钱包。AI大模型出现后,第三种选择变得现实了:用多模态理解能力直接“读懂”照片里的几何信息,再通过代码生成能力“写”出一个CAD模型。
当然,这套流程现在还没到“全自动无人工”的程度。复杂曲面、齿轮齿形、需要配合公差的装配结构,AI目前很容易翻车。但如果是支架、壳子、法兰、底座这类以平面、圆柱孔、矩形槽为主的标准机械特征,AI的完成度已经很高。换句话说,它把“逆向工程”这个专业活,变成了“普通人多拍几张照片、多检查几遍代码”就能干的事。
2. 少了三个工程师,多了三个Grok:技术原理拆解
要真正上手这套流程,不理解里面的原理是不行的。哪怕你只是照抄提示词,也至少要明白:为什么是四张照片?为什么Grok能干这个事?为什么生成的模型和传统扫描不一样?这三个问题搞懂了,你才知道在什么场景下该指望AI,什么时候该老老实实换工具。
2.1 为什么是四张照片,不是一张,也不是四十张
传统三维重建走的是摄影测量路线:从几十个角度拍一堆照片,靠算法寻找共同特征点,算相机姿态,生成稀疏点云,再稠密化、建网格。这个流程对照片数量要求很高,几十上百张是常事,而且极其吃算力。但大模型不走这条路,它更像是“看懂了再画”:先认出这是一个什么样的零件,再根据几个关键视角补全细节。
四张照片(正面、背面、两个侧面或加顶面)基本覆盖了一个简单零件的大部分几何信息。拍一张容易出错——比如你只拍了正面,模型不知道背后有没有凸台,也不知道这个件有多厚;拍太多反而会引入透视畸变和视角冗余,让模型在“该信哪张图”上犯迷糊。实际操作中,我建议在四张正交视角的基础上再补一张45°立体视角,五张图一起喂给模型,识别准确率会更高。照片里一定要有参照物,最好是尺子,实在没有就放一枚硬币,否则AI很难判断真实尺寸。
还要注意一个细节:Grok这代多模态模型对图片分辨率和遮挡很敏感。拍侧面的时候如果手挡住了零件轮廓,模型可能把轮廓线延伸到手指上。我一般会把零件放在一块纯色桌面上,用手机支架固定拍摄高度,保证每张照片的视角尽量“正”,不要仰拍、不要俯拍太多。
2.2 Grok的三个分身:视觉分析、建模、质检的角色分工
Grok能胜任这个任务,靠的是两件事:一是多模态视觉理解,能看图分析几何特征;二是代码生成能力,能把描述转成可执行的建模代码。单纯的视觉模型看不到代码,单纯的代码模型看不懂图,Grok这类多模态模型刚好把二者串了起来。
实际操作时,三个Grok会话的角色可以这么安排。
会话A(视觉分析):上传四张照片,要求它输出结构描述和尺寸表。这一步的关键是让AI把话说全,不要只给一句话概述。我会在提示词里写:“请用列表输出:整体外形、最大外形尺寸、所有孔位的直径和位置、壁厚、倒角/圆角、是否有凸台或凹槽。”AI一旦用列表回答,遗漏特征的概率会明显下降。
会话B(建模工程师):把会话A的描述原文粘给它,要求转换成OpenSCAD代码。为什么不直接让Grok生成STEP或者STL?因为Grok不能直接输出二进制网格文件,但代码是文本,它能写。OpenSCAD是最适合AI生成的建模语言,它的语法简单、全是布尔运算和基本体,而且源码能直接编译成STL。如果用CadQuery(Python库)生成STEP文件也可以,但代码量更大,AI出错的概率更高。
会话C(质检员):把会话B的代码发给它,让它以“第三方审图工程师”的角色检查。重点检查:变量值是否与会话A的尺寸表一致,有没有单位缺少mm,模型的孔是否贯穿,有没有悬空几何。如果发现代码编译错误,我还会直接把错误信息贴给它,让它修。
这三个角色扔给同一个Grok模型没问题,但分会话执行更稳。因为大模型在同一段长对话里切换多个身份时,很容易“角色混淆”——上一秒还在审计尺寸,下一秒就在幻想造型。分群聊、分任务,等于给每个Agent限定了上下文边界,幻觉率会低很多。
2.3 这不是摄影测量,也不是NeRF:一份“活”的工程文件
很多人看到“从照片生成3D”就会想到NeRF、高斯泼溅、摄影测量,以为AI是在重建一个外观模型。其实这次事件的价值不在“重建外观”,而在“生成可编辑的工程文件”。传统重建得到的是三角网格(mesh),好看,但是“死”的:你想把一个直径5mm的孔改成6mm,就得重新建模;你要导进SolidWorks做装配,网格还得转格式。而Grok生成的是OpenSCAD代码,是“活”的参数化模型:改一个变量,零件尺寸就变了,重新编译一下,又导出新的STL。
这个区别在工程上非常关键。逆向复刻一个零件时,几乎没有只想要“一模一样”的,你往往要改长度、改孔径、改安装位置。网格数据做不了这种事,参数化代码可以。我把两种路径的区别整理成了表格,方便大家理解。
| 维度 | 摄影测量/三维扫描 | 大模型生成式建模 |
|---|---|---|
| 输入 | 几十到上百张照片/激光扫描点云 | 3到5张照片+文字描述 |
| 输出 | 三角网格(mesh/点云) | 参数化CAD代码(OpenSCAD/Python) |
| 是否可编辑 | 差,修改特征需要重新建模 | 好,改变量即可同步变更 |
| 设备要求 | 扫描仪、高性能工作站 | 手机/相机+能访问大模型的平台 |
| 上手门槛 | 高,要懂点云后处理 | 低,会拍照和复制粘贴即可 |
| 典型场景 | 文物数字化、复杂曲面复制 | 支架/壳体/法兰等机械件快速改型 |
AI生成式建模当然有短板:它对复杂自由曲面几乎无能为力,你让它生成一个鼠标外壳的CAD代码,大概率会得到一个无法打印的抽象派作品。但对付标准机械特征,它确实是目前效率最高的方式。这也是这次事件能在一个小时内完成的原因——零件本身的复杂度,恰好落在大模型擅长的区间里。
3. 一小时从照片到打印:可复现的实操流程
既然原理清楚了,下面就是把整套流程跑一遍。我以最常见的“复制一个损坏的电机支架”为例,从拍照到打印完整走一遍。你不需要和我用同一个零件,只要按这个流程走,基础流程是通用的。
3.1 拍照:四张照片的正确打开方式
不要小看拍照这一步,很多AI生成失败都是图拍坏了。我的拍照检查清单是这样的:
- 把零件放在纯色背景上,最好A4白纸或浅色亚克力板,避免杂乱纹理干扰AI识别。
- 用手机支架固定手机,镜头与零件中心尽量在同一高度。
- 拍四张:正面、背面、左侧、俯视。正面和背面要让主光轴垂直于零件最大平面,尽量消除透视变形。
- 每张照片都在零件旁边放一把尺子,刻度面朝上、朝向相机。比例参考是整个尺寸判断的关键。
- 光线要均匀,不要在正午强光下逆光拍,也不要用闪光灯直射。孔位和边缘的阴影会误导AI。
- 对焦点选在零件边缘或孔位,保证轮廓清晰。
- 如果有条件,补一张45°角度照片,帮助AI理解立体结构。
拍完之后我会快速检查一遍:能不能在照片里清晰看到所有孔位?尺子刻度是否清楚?零件边缘是否被手指或阴影遮挡?如果有一张不合格,补拍比寄希望于提示词更靠谱。
3.2 提示词:让Grok听懂你要的是工程文件
接下来是提示词,这段可以直接抄。重点是角色设定、输入说明、输出格式、质量要求,一次性说清楚。
把四张照片上传后,我习惯这么写:
你是一位资深机械工程师,擅长零件测绘和CAD建模。我会给你同一个零件的正面、背面、侧面、俯视四张照片,照片中有尺子作为比例参考。 请依次完成: 1. 用列表分析零件结构:整体形状、外形尺寸、壁厚、孔位及孔径、凸台/凹槽、圆角等特征。 2. 根据照片中的尺子,推算出所有关键尺寸,单位mm,给出尺寸表。 3. 用OpenSCAD代码重建这个零件。要求:$fn=64;所有尺寸用变量定义;用difference/union描述特征;单位必须是mm。 4. 生成代码后,检查是否有会导致无法渲染或3D打印失败的问题,并同步给出修改后的最终代码。这里有几个容易被忽略的点。第一,“单位必须是mm”尽量写在提示词里,否则AI可能默认按英寸生成。第二,“所有尺寸用变量定义”是为了后续改尺寸方便,也让AI自己更容易审查。第三,要求它“生成代码后自检并给出最终代码”,等于逼它走一遍质检流程,比只给一版代码强。
3.3 三个Grok会话的流水线:从描述到代码再到审查
我的实际操作习惯是分三个浏览器标签页或者三个会话来做,避免上下文污染。
第一个会话(视觉分析岗)只做一件事:上传照片,让它“列出结构特征并估算尺寸表”,我复制它的输出。第二个会话(建模岗)把上面的输出粘进对话框,追加一句“严格按照上述尺寸,不要增加照片中不存在的特征,生成OpenSCAD代码”。第三个会话(质检岗)再把代码粘进去,追加“你是质检员,请编译检查代码,找出所有可能导致打印失败的问题,并给出修正后的完整代码”。
如果使用的是带代码执行能力的新版Grok,还能在对话里直接运行OpenSCAD脚本或用Python辅助检查;如果没有这个能力,就把代码复制到本地OpenSCAD里编译。这个细节无所谓,重点是“生成-审查-修正”的循环要走完,不要拿到第一版代码就急着打印。
我实际拿到的一个简单支架代码长这样(示意,具体尺寸以你的零件为准):
$fn = 64; base_w = 60; base_d = 40; base_h = 5; wall_t = 5; wall_h = 30; hole_d = 5; hole_dist = 50; module base() { difference() { cube([base_w, base_d, base_h]); for (x = [-hole_dist/2, hole_dist/2]) { translate([x, base_d/2, -0.1]) cylinder(d = hole_d, h = base_h + 0.2); } } } module wall() { translate([0, base_d - wall_t, base_h]) cube([base_w, wall_t, wall_h]); } base(); wall();别急着吐槽它丑,重点在于:所有关键尺寸都是变量,孔的位置、壁厚、高度一眼就能看懂。想改成60mm孔距,改hole_dist这一个变量就行。这种结构就是AI生成模型最适合的形态——简单、参数化、可修改。
3.4 从STL到打印件:最后一步的坑也不少
代码确定后,在OpenSCAD里按F5预览、F6编译,确认没问题后导出STL。接下来的坑主要集中在三处。
一是检查非流形边和破面。STL文件如果存在非流形边,切片软件会报错或者打印出烂面。我用Windows自带的3D Builder直接打开STL,它会提示“检测到问题”,点一键修复就行;Mac用户可以用Meshmixer。
二是切片参数。层高我一般用0.2mm,填充率30%,壁厚2到3层。如果模型里有悬空的水平孔或凸台,必须开支撑;不想加支撑的话,可以在生成代码阶段就避免悬空结构,比如把孔轴方向改成竖直。
三是实物装配。3D打印件有收缩和公差,孔径5mm的孔实际打出来可能只有4.8mm。所以设计孔位时,如果预期要装M5螺丝,AI建模时孔径通常要留到5.2甚至5.4mm。这个经验值只能靠材料和时间积累,AI目前不会替你考虑。
4. 最容易翻车的五个环节:问题排查与避坑实录
这套流程我试了很多次,翻车率不低。但绝大多数问题都集中在固定的几个环节上,提前知道就能避开。我把最典型的五个问题列出来,附上排查思路和解决办法。
4.1 没放参照物,模型尺寸全靠猜
有一次我图省事,直接拍了几张零件照片没有放尺子,结果AI生成的支架宽度是600mm而不是60mm,整个模型大得像一张桌面。排查方法很简单:先在OpenSCAD里看尺寸变量,如果和实物经验值差一个数量级,基本就是缺参照物。解决办法是重新拍一张带尺子的照片,或者在提示词里直接写“整体高度35mm,其余尺寸按比例”,给AI一个锚点。
4.2 视觉分析把通孔识别成盲孔
这个坑我踩过两次。零件侧面照片里孔看不太清楚,视觉分析岗只写出了“有一个圆孔”,但没说穿没穿。建模岗就顺着做了一个很深但没贯穿的孔。打印出来螺丝根本装不进去。现在我的提示词里明确要求:“所有安装孔必须完全贯穿”,并且质检岗要专门检查孔深是否等于壁厚。如果零件有台阶孔、沉头孔,还要明确标出大小径深度,否则AI很容易简化成一个直孔。
4.3 单位错乱:毫米和英寸的混乱
大模型在单位换算上偶尔会犯迷糊。同一个零件,如果照片里的尺子是英寸刻度,AI就可能把所有尺寸换算成mm后搞错比例。更隐蔽的是它在代码里默认了inch,导致STL网格尺寸直接缩水到1/25甚至25倍。我的解决办法是在提示词里反复强调“单位是mm”,同时在OpenSCAD里加一个断言:
assert(base_w > 50 && base_w < 100, "base_w out of expected range, check unit");如果编译报错,说明尺寸变量超出合理范围,马上就能发现问题。这一招在单位校验上非常管用。
4.4 AI幻觉:给零件加了一个不存在的法兰
大模型有时候会“脑补”。照片里明明没有法兰,它觉得这种支架“应该有”,就顺手加了一圈。这类问题最隐蔽,因为模型看起来非常合理,不看实物完全发现不了。我的对策是让视觉分析岗输出结构化清单,每项都对应到照片里的具体位置;建模岗严格执行清单,提示词里写上“只按清单建模,不要增加任何清单外的特征”。最后人工核对一遍清单和模型,基本能堵住大部分幻觉。
4.5 三个Grok会话信息不同步
分会话协作最大的风险是信息在传递中丢失。视觉岗报告孔距50mm,我在复制粘贴时漏了一个“0”,建模岗就做成了5mm;或者视觉岗说“壁厚5mm”,建模岗忘了写,默认成了2mm。解决这个问题的土办法是:把视觉分析岗的输出当成“需求规格书”原样复制,不要自己缩写;质检岗拿到代码后,第一件事就是挨个核对尺寸表变量值。如果用的平台支持Agent流程编排,也可以让总控Agent自动传递消息,省去人工复制这一步。
| 问题 | 典型现象 | 排查思路 | 解决办法 |
|---|---|---|---|
| 缺少参照物 | 尺寸大得离谱 | 看STL尺寸是否合理 | 重拍带尺子的照片 |
| 通孔变盲孔 | 螺丝装不进去 | 检查孔深与壁厚 | 提示词明确“贯穿” |
| 单位错乱 | 缩水或放大25倍 | 断言变量范围 | 加assert并反复强调mm |
| AI幻觉特征 | 多出零件原本没有的结构 | 对照照片逐项核验清单 | 用结构化清单约束建模 |
| 信息不同步 | 孔距/壁厚与预期不符 | 检查各会话传递文本 | 原样传递规格,质检核对 |
5. 我的几点实操体会
整套流程跑到现在,我最大的体会是:AI不会替你做工程判断,但它能把你从重复劳动里解放出来。以前测绘一个零件,最花时间的不是量尺寸,而是把尺寸落实到三维模型里;现在这部分被Grok这类模型接走了,剩下的是“拍照、审图、调参数”这些更靠近人该干的事。这个转变很像当年从手绘图纸到CAD软件,工具变了,但“多测量、多检查、别偷懒”的工程习惯一点都没变。
最后分享一个小技巧:如果零件不大,你可以把四张照片拼成一张2×2的大图再上传。我自己试过多次,把四个视角放进同一张图,模型更容易把不同视角对应到同一个零件上,尺寸推断反而比四张独立图更稳。还有就是不要贪心,一次只让AI做一个零件;一张图片里堆了五六个零件,它会把特征张冠李戴。工程上的事,慢就是快,AI帮你省出的时间,值得花在检查上。