1. 现场实战:当老师傅遇上AI助手

想象一下,你站在一座古建筑的屋檐下,手里拿着手机,眼前是一个断裂的雀替。阳光透过木雕的缝隙,灰尘在光柱中飞舞。过去,老师傅会眯起眼睛,用手比划,在心里默默计算尺寸和弧度,然后回到工坊,花上几天甚至几周的时间,凭经验和手感雕出一个新的。但现在,情况不同了。你只需要拍几张照片,上传到一个网页,几分钟后,一份详细的构件分析报告和可3D打印的模型文件就生成了。这不是科幻电影,而是我今天要跟你拆解的,基于Qwen3-VL大模型的古建筑修复实战全流程。

我是老张,在古建修复和智能硬件这行摸爬滚打了十几年。从最早用全站仪一点点测绘,到后来接触三维激光扫描,再到如今把AI大模型引入现场,我亲眼见证了技术如何一步步改变这个古老的行业。很多刚入行的朋友或者文保单位的技术员,一听到“大模型”、“多模态”这些词就头疼,觉得离自己太远。其实不然,今天我要分享的这套方法,目标就是让没有任何AI背景的一线工程师,也能快速上手,解决实际问题

核心场景非常具体:面对一个具体破损的雀替或斗拱,如何一步步利用Qwen3-VL模型,完成从现场拍照、AI分析、参数生成、3D建模到最终打印替换的全过程。 这不仅仅是一个技术演示,而是一份可以立刻照着做的“操作手册”。我会把我在项目中踩过的坑、总结的技巧,毫无保留地分享给你。你会发现,AI不是来替代老师傅的,而是成为一个不知疲倦、知识渊博的超级助手,把老师傅从重复、繁琐的测量和推测工作中解放出来,让他们更专注于艺术性的修复和判断。

2. 第一步:让AI“看懂”你手里的残件

万事开头难,但用Qwen3-VL开这个头,其实比想象中简单。关键的第一步,就是教会AI“看”懂你拍的照片。这里面的门道,可不止按下快门那么简单。

2.1 拍摄:给AI一双好眼睛

你可能会想,拍照谁不会?但给AI分析用的照片,和发朋友圈的照片,要求完全不一样。我刚开始用的时候,就吃过亏。对着一个斗拱随便拍了几张,光线昏暗还有影子,结果AI识别得一塌糊涂,把“昂”识别成了“枋”,尺寸推测误差大到离谱。

实测下来,最稳的拍摄方案需要遵循以下几个原则:

  1. 多角度,覆盖全:对于复杂构件如斗拱,至少需要拍摄正面、侧面、顶面(或底面) 三个正交视角的照片。如果构件是圆雕或者镂空雕,可能需要增加角度。想象一下,你要给一个从未见过此物的人描述它,最少需要几张图?三视图是最基本的。
  2. 光线均匀,避免炫光:不要在阳光直射下拍摄,强烈的阴影会掩盖细节,特别是榫卯接口处的裂缝。阴天是绝佳的天然柔光箱。如果在室内,可以用手机补光灯或便携LED板进行均匀补光,但注意不要直接打在光滑的木漆面上产生反光。
  3. 引入尺度参考物:这是至关重要的一步!AI再聪明,它也无法从像素直接知道现实世界的尺寸。你必须在拍摄时,在构件旁边放置一个已知尺寸的物体。我最常用的是一把标准钢尺,或者一枚一元硬币(直径25mm)。确保参考物与构件处于同一焦平面,不要一前一后。在提示词里告诉AI“图中有一把15厘米的钢尺”,它就能精准反推出构件每一个部位的毫米级尺寸。
  4. 对焦清晰,分辨率要高:尽量使用手机的专业模式或原生相机,确保对焦点在构件细节最丰富的部位(如雕刻花纹、断裂面)。照片分辨率建议在1920x1080(1080p)以上,现在的手机都能轻松达到。高分辨率能让AI看清纹理和微小的破损。

我通常的动线是:先观察构件,清理表面浮灰;然后放置好钢尺;接着像考古绘图一样,规规矩矩地拍好三视图;最后再补几张局部特写,特别是破损断面和残留的榫头。这套动作熟练后,五分钟内就能完成。

2.2 上传与提问:和AI有效沟通

拍好照片,接下来就是和Qwen3-VL对话了。这里涉及到一个关键技能:提示词(Prompt)工程。你不用怕这个词,说白了,就是怎么向AI清晰地下指令。

很多新手会直接上传照片,然后问“这是什么?”。这样得到的回答往往很笼统,比如“这是一个木制建筑构件”。这显然对我们修复没用。我们需要的是结构化、可操作的数据。

一个高效的提示词应该包含以下几个要素:

  • 角色设定:告诉AI它应该以什么身份来回答。例如:“你是一位精通中国明清官式建筑构造的资深文物修复师。”
  • 任务目标:清晰说明你要它干什么。例如:“请分析我上传的古建筑木构件的破损情况。”
  • 具体指令:给出详细的、可拆解的步骤。例如:“第一步,识别该构件的准确名称、所属部位及时代风格。第二步,标注出图中所有可见的部件(如坐斗、翘、昂、耍头等),并描述其现状(完好、开裂、缺失)。第三步,以图中的钢尺为参照,估算关键部件的尺寸(单位:毫米)。第四步,根据对称性和形制规律,推理缺失部分的原始形状和尺寸。第五步,输出为JSON格式,包含构件名称、部件列表、尺寸估算、材料推测和修复建议。”

你可以把我的这个模板抄下来,稍微修改就能用。对比一下,如果你只问“分析这个构件”,AI可能只会给你一段描述性文字。但用了上面的详细提示词,Qwen3-VL就能输出类似下面的结构化内容,这直接就能给后续的3D建模当输入参数:

{
  "identification": {
    "name": "单翘单昂五踩斗拱 - 昂构件",
    "period_style": "清中期,北方官式风格",
    "location": "檐柱柱头铺作"
  },
  "condition_assessment": {
    "overall": "部分缺失性破损",
    "parts": [
      {"name": "昂身", "status": "前端约1/3处断裂缺失", "note": "断面陈旧"},
      {"name": "昂嘴", "status": "完全缺失"},
      {"name": "交互斗", "status": "完好"},
      {"name": "华头子", "status": "轻微开裂"}
    ]
  },
  "dimensional_analysis": {
    "reference": "图中15cm钢尺",
    "estimations": [
      {"part": "现存昂身长度", "value_mm": 320, "confidence": "high"},
      {"part": "推测完整昂身全长", "value_mm": 480, "confidence": "medium"},
      {"part": "昂高", "value_mm": 180, "confidence": "high"}
    ]
  },
  "reconstruction_suggestion": {
    "shape": "昂嘴应为批竹昂样式,下缘呈平滑曲线,上缘有卷杀",
    "material": "原材可能为楠木或松木,建议使用兼容性高的木塑复合材料(WPC)进行3D打印替代",
    "connection": "新制昂嘴通过环氧树脂胶与碳纤维棒加固方式与现存昂身连接"
  }
}

看到没?从构件名称、时代风格,到每个小部件的状态、毫米级尺寸,再到修复材料和工艺建议,全都齐了。这就是一次高质量的“人机对话”产出的结果。这一步的成功,直接决定了整个后续流程的效率和精度。

3. 第二步:从数据到模型——三维重建的桥梁

拿到AI生成的JSON报告,我们相当于有了一张非常详细的“数字图纸”。但这还不是三维模型。我们需要把这份结构化的描述,转换成3D建模软件能理解的指令,从而生成一个实实在在的、可以打印的STL或OBJ文件。这个过程,我们可以通过编写简单的脚本来自动化完成。

3.1 解析与转换:让Blender听懂AI的话

我常用的3D建模工具是Blender,因为它开源、免费,而且Python API非常强大。我们的目标就是写一个Python脚本,读取Qwen3-VL输出的JSON,然后调用Blender的API,自动把构件“画”出来。

当然,AI给出的尺寸是估算的,对于极其精密的修复,可能需要用三维激光扫描仪做最终校准。但对于大部分非承重性的装饰构件(如雀替、花板)或缺失部分的补配,这个精度已经足够,能节省大量前期建模时间。

下面是一个极度简化的脚本示例,演示这个思路。假设我们要生成一个简单的、长方体形状的“昂”构件:

import bpy
import json

# 1. 读取Qwen3-VL生成的JSON文件
with open('qwen_analysis_result.json', 'r') as f:
    data = json.load(f)

# 2. 提取我们需要的尺寸数据(这里以昂为例)
# 假设JSON结构中有我们之前提到的‘dimensional_analysis’字段
length_mm = data['dimensional_analysis']['estimations'][0]['value_mm']  # 长度480mm
height_mm = data['dimensional_analysis']['estimations'][2]['value_mm']  # 高度180mm
width_mm = 120  # 宽度可能需要AI估算,这里假设为120mm

# 将毫米转换为Blender单位(默认1单位=1米)
length = length_mm / 1000
height = height_mm / 1000
width = width_mm / 1000

# 3. 清除场景中默认的立方体(可选)
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=False)

# 4. 创建一个新的立方体,并设置尺寸
bpy.ops.mesh.primitive_cube_add(size=1, location=(0, 0, height/2))
new_ang = bpy.context.active_object
new_ang.name = "Reconstructed_Ang"
new_ang.dimensions = (length, width, height)  # 设置长宽高

# 5. 进行简单的倒角修改,使其边角更圆润(更像木构件)
bpy.ops.object.modifier_add(type='BEVEL')
new_ang.modifiers["Bevel"].width = 0.01
new_ang.modifiers["Bevel"].segments = 3

# 6. 导出为STL文件,供3D打印机使用
stl_path = "C:/古建修复/斗拱_昂_修复件.stl"
bpy.ops.export_mesh.stl(filepath=stl_path, use_selection=True)

print(f"3D模型已生成并导出至:{stl_path}")

这个脚本非常简单,只是创建了一个方块。真实的斗拱构件有复杂的曲线和榫卯。更高级的做法是:

  • 建立参数化构件库:提前用Blender制作好各种斗拱、雀替的参数化模板模型。比如一个“昂”的模板,其长度、高度、弯曲度、嘴部造型都是可以调节的参数。
  • 脚本调用模板:我们的Python脚本不从头建模,而是调用这个模板,然后根据JSON中的数据,动态修改这些参数。AI输出的“批竹昂样式”、“下缘平滑曲线”等描述,可以对应到模板中特定的曲线函数和参数上。
  • 处理缺失部分:对于缺失部分,脚本可以基于对称性(如果另一侧完好),或基于AI推测的“原始形状”描述,自动生成网格并进行布尔运算组合。

这样一来,我们就搭建了一座从AI语义描述三维数字模型的自动桥梁。工程师要做的,只是运行一下脚本。

3.2 模型检查与优化:为打印做好准备

自动生成的模型,在送进打印机之前,必须经过人工检查。这一步不能省,因为AI和脚本可能会忽略一些现实制造的约束。

你需要重点检查这几个方面:

  1. 模型完整性:确保模型是“水密”的,没有破面、缝隙或内部孤岛。在Blender里,可以使用“3D打印工具箱”插件来检查并自动修复非流形几何体。
  2. 尺寸复核:将模型以1:1比例显示,用Blender的测量工具,核对关键尺寸是否与AI报告和现场记录相符。特别是榫卯的配合尺寸,要留出适当的公差(通常0.2-0.5mm的间隙)。
  3. 打印可行性
    • 悬垂结构:古建构件多有雕花和悬挑。对于超过45度的悬垂,需要考虑添加支撑结构。你可以在切片软件(如Cura、PrusaSlicer)中设置,也可以在Blender里手动为模型添加临时的、易于拆除的支撑。
    • 壁厚:确保模型的任何部位都有足够的厚度,至少要大于你选择的打印喷嘴直径的2倍。例如,用0.4mm喷嘴打印,最小壁厚建议不小于0.8mm,否则容易失败或强度不足。
    • 拆分大型构件:如果构件很大,超过了你的打印机成型尺寸,就需要在Blender里将其合理拆分成几个部分,并设计好拼接榫卯。Qwen3-VL在分析时,其实也可以根据你提供的打印机尺寸,在建议里给出拆分方案。

检查无误后,将模型导出为STL3MF格式。STL是通用格式,但3MF能包含更多的信息,如颜色、纹理和多材料分配,如果你的打印项目更复杂,3MF是更好的选择。

4. 第三步:选择材料与3D打印实战

模型有了,接下来就是把它实体化。3D打印技术为我们提供了前所未有的灵活性,但材料的选择至关重要,直接关系到修复件的耐久性、外观和与原构件的兼容性。

4.1 古建修复专用打印材料怎么选?

这不是普通的玩具打印,我们对材料的要求很苛刻:要耐候、稳定、强度够、还要有类似木材的质感,最好还能进行后续的做旧、上漆等处理。

我测试过不少材料,下面这个表格是我的一些实战心得:

材料类型 优点 缺点 适用场景 我的评价
PLA+木粉/竹粉复合材料 有真实的木质纹理和气味,打印后可以打磨、钻孔、轻微雕刻,易于上漆。环保,打印气味小。 强度一般,长期户外耐候性较差(紫外线、潮湿易导致脆化),尺寸稳定性一般。 室内装饰构件,非承重的雕花板、雀替补配。短期户外展示件。 新手友好首选。效果逼真,打印成功率高,非常适合练手和制作展示模型。
PETG 强度、韧性好,耐一定程度的冲击和弯曲。耐候性优于PLA,抗潮湿、抗紫外线能力较强。打印尺寸稳定。 表面光泽度高,缺乏木质哑光感。粘附性较强,支撑可能难拆。 户外非承重结构件,如窗棂、栏杆花饰等需要一定强度和耐候性的部位。 户外应用的性价比之选。性能均衡,像“塑料里的劳模”。
ASA 卓越的耐候性,抗紫外线、抗老化能力极强,专为户外设计。强度高,尺寸稳定性非常好。 打印需要封闭的打印机腔体(因为打印过程有气味),对打印平台附着力要求高,价格较贵。 长期户外使用的关键装饰构件,如檐角斗拱、垂花柱头等。 户外耐久性之王。如果修复件需要在外风吹日晒几十年,ASA是值得投资的选择。
尼龙(PA) 机械性能顶级,非常坚固、耐磨、有韧性。可以进行染色。 极易吸潮,打印前必须充分干燥。打印难度大,容易翘边,需要高温喷嘴和恒温腔。 需要高强度的特殊连接件或隐蔽结构件 高手向材料。性能强悍,但对打印环境和经验要求极高,不建议初学者挑战。
光敏树脂(SLA/DLP打印) 精度极高,能完美再现复杂雕花的细节。表面光滑。 材料本身较脆,耐候性差(阳光下易黄化变脆),通常只适合室内。需要后处理(清洗、固化)。 极其精细的微小纹样复制,如匾额上的微雕、佛像衣纹等。 细节还原度之王。用于对表面细节有极致要求的局部补配,而非大型结构件。

注意:对于任何新材料,在正式打印修复件之前,务必先打印一个小样块,进行上漆、做旧测试,观察其与原有木料的颜色、质感匹配度,以及胶粘剂的粘合效果。

根据Qwen3-VL在分析报告中给出的材料建议(比如它可能根据构件部位和受力情况,推荐“木塑复合材料”或“耐候工程塑料”),结合上表,你就能做出更明智的选择。我个人的经验是,对于大部分仿木修复件,PLA基木粉复合材料PETG是使用最频繁的。

4.2 打印设置与后处理:出精品的关键

选好材料,只是成功了一半。打印参数设置和后处理,才是决定成品最终质量的临门一脚。

核心打印参数建议:

  • 层高:追求细节用0.1mm或0.15mm,平衡速度与质量用0.2mm。对于大型构件,0.2mm是性价比很高的选择。
  • 填充密度:非承重装饰件,15%-25%的填充足够,既能节省材料和时间,也有一定强度。如果构件有受力可能,可以提高到30%-40%。
  • 壁厚(外壳厚度):至少设置2-4条壁厚(0.8mm-1.6mm),这决定了构件的外壳强度。对于要打磨的部件,壁厚可以更厚一些。
  • 支撑:这是古建打印的难点。对于复杂的镂雕,我强烈建议使用树状支撑手动添加支撑。自动生成的支撑有时会破坏精美细节。在切片软件中仔细预览支撑生成情况,在必要的地方手动添加或减少。
  • 打印速度:外轮廓打印速度建议放慢(30-40mm/s),以确保表面光洁度;内部填充可以快一些(50-60mm/s)。

打印完成后的后处理流程:

  1. 小心拆除支撑:使用钳子、刻刀等工具,耐心地移除所有支撑材料。对于PLA木粉材料,支撑接触点可能会留下粗糙痕迹,这是正常的。
  2. 打磨:这是让打印件“脱胎换骨”的关键。使用从粗到细(例如180目->400目->800目)的砂纸进行打磨。木粉复合材料的打磨手感很像软木,会产生木屑。打磨可以消除层纹,让表面更光滑,也更易于上漆。
  3. 上底漆:喷涂或刷涂一层模型用的水补土或专用塑料底漆。这可以进一步填补微小层纹,形成一个均匀的着色基底,同时增强面漆的附着力。
  4. 做旧与上色:这是艺术性最强的部分。使用丙烯颜料、木器漆或专业的模型漆进行上色。可以采用“干扫”、“渍洗”等模型技法,模仿木材的纹理、色差和旧化效果。可以参考旁边原有构件的颜色进行调色。
  5. 表面保护:最后喷涂一层哑光或半哑光的清漆(如聚氨酯保护漆),可以保护颜色,并统一光泽度,使其更接近老木材的质感。

经过这一系列操作,一个由AI识别、参数生成、3D打印制造的修复构件就诞生了。它不仅在尺寸和形状上能与原结构精准匹配,在外观上也力求融入历史氛围。

5. 部署与进阶:打造你的移动修复工作站

前面讲的是单次操作流程。如果你想把这个能力固化下来,甚至带到任何一个野外工地现场,就需要考虑系统的部署。Qwen3-VL的优势在于,它提供了非常灵活的部署方案,从云端API到本地离线部署都能搞定。

5.1 本地化部署:没有网络也能用

对于文物保护项目,数据安全是红线。很多古建位于偏远地区,网络信号不稳定甚至没有。因此,在本地笔记本电脑或移动工作站上离线部署Qwen3-VL是最可靠、最常用的方式。

官方提供了打包好的镜像和详细的脚本。对于有一定技术基础的朋友,我推荐以下步骤:

  1. 硬件准备:一台配备NVIDIA显卡的笔记本电脑或迷你主机。RTX 4060 Laptop GPU(8GB显存)是运行Qwen3-VL-4B-Instruct模型的入门门槛,能够进行流畅的图片分析和对话。如果想运行更大的8B模型,或者同时处理多张高分辨率图片,建议RTX 4070(12GB)或以上。显存是关键。
  2. 软件环境:最简单的方法是使用官方提供的Docker镜像。Docker可以帮你把所有复杂的依赖(Python版本、PyTorch、CUDA等)打包好,避免环境冲突。
  3. 一键启动:下载镜像后,通常只需要运行一个脚本。就像原始文章里提到的那个脚本一样,但我们可以让它更“傻瓜”一点。我通常会写一个批处理文件(.bat)或Shell脚本,内容如下:
@echo off
echo 正在启动古建修复AI辅助系统...
echo.
REM 设置模型路径和端口
set MODEL_PATH=E:\AI_Models\qwen3-vl-4b-instruct
set PORT=7860

REM 使用Ollama或vLLM等推理框架启动服务(此处为示例,具体命令需根据实际框架调整)
ollama run qwen3-vl:4b-instruct --port %PORT%
REM 或者使用官方提供的推理脚本
REM python -m qwen_vl.serving --model-path %MODEL_PATH% --port %PORT%

echo.
echo 服务已启动!
echo 请在浏览器中打开:http://localhost:%PORT%
echo.
pause

运行这个脚本,它会自动加载模型到显卡上,并启动一个本地网页服务器。你打开浏览器,输入 http://localhost:7860,就能看到和官方演示类似的聊天界面了。把拍好的照片拖进去,输入提示词,分析结果就出来了。整个过程都在你的电脑里完成,图片数据不会上传到任何外部服务器。

5.2 工作流整合:效率倍增器

当单点工具都准备好后,我们可以更进一步,把整个流程串联起来,形成一个自动化流水线。这听起来复杂,但其实用一些简单的脚本就能实现。

我的做法是创建一个文件夹,命名为“修复工单”。里面有几个子文件夹:/01_原始照片/02_AI分析报告/03_生成模型/04_打印文件

然后我写了一个主控Python脚本(比如auto_pipeline.py),它的逻辑是:

  1. 监控/01_原始照片文件夹,一旦有新的图片放入,就自动触发。
  2. 调用Qwen3-VL的本地API(就是上面部署的服务),发送图片和预设好的提示词模板。
  3. 将AI返回的JSON报告保存到/02_AI分析报告,并以时间戳命名。
  4. 接着,自动调用我们之前写好的那个Blender建模脚本(generate_model.py),读取最新的JSON报告,在Blender后台运行,生成3D模型。
  5. 建模脚本运行完毕后,自动将导出的STL文件移动到/04_打印文件文件夹。
  6. 最后,脚本可以发送一封邮件通知我,或者直接在电脑上弹出一个提示框:“斗拱昂构件模型已就绪,请查收并准备打印。”

这样,我从现场拍完照,把照片往指定文件夹一丢,就可以去喝杯茶了。回来的时候,可能3D模型都已经生成好了。这种程度的自动化,对于需要处理大量同类构件的项目(比如一整排破损的栏杆),效率提升是惊人的。

技术的最终目的是为人服务。Qwen3-VL和3D打印这套组合拳,打掉了古建修复中“测绘难”、“复原慢”这两只拦路虎。它让年轻工程师能快速上手,让老师傅的经验得以数字化沉淀和传承。我印象最深的一次,是用这套方法修复一个清代戏台的藻井残件,从拍照到拿到打印件试装,只用了大半天,而传统方法光做等比例小样可能就要一周。老师傅拿着那个严丝合缝的打印件,看了又看,最后笑着说:“这家伙,比我自己雕的还准点儿。”那一刻我就知道,这条路走对了。工具在变,但我们对文物那份敬畏和让它们重焕光彩的初心,永远不会变。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐