看懂 AI 替你写的代码Blender 5.2 Python 基本盘这是「Blender 5.2 从零到一」系列第 3 篇。上一篇你说一句建个雪人AI 写代码替你建好了——本篇掀开这层纸那段代码就跑在 Blender 自带的 Python 里你不但能看懂还能亲手写。目标15 分钟认识写代码的工作区、用控制台试命令、跑起第一个脚本、逐行读懂雪人代码。懂了它AI 建不动的地方你自己补得上第 4 篇的户型实战才能放开了跑。一、Blender 自带一门 Python你什么都不用装回收 01 篇的伏笔Blender 安装目录里那个python3.13.dll——Blender 内置了一整套 Python 环境写代码、跑脚本全在里面不用装 Python、不用配环境打开 Blender 就有。学它不是为了当程序员三个实在的理由看懂 AI 在干什么AI 每次调execute_blender_code执行的就是一段 Python。看得懂你才敢放它跑看不懂出了错只能干瞪眼。补上 AI 的短板AI 建单件模型很快但把场上 30 个物体每个都换个名字这种批量活一段循环代码比来回对话快得多。排错有底气02 篇 AI 自己也翻过车中文节点名KeyError看懂报错你和 AI 才是搭档而不是乘客。本篇不教 Python 语法变量、循环那些只教 Blender 里的用法——遇到看不懂的语法直接丢给 AI 问现学现用。二、Scripting 工作区写代码的界面摆法顶栏标签切到Scripting——01 篇说过工作区就是预设的界面摆法这一副是给写代码准备的区域在哪管什么3D 视口左上看代码跑出来的结果文本编辑器中间写脚本的地方——没内容时全黑不是死机Python 控制台左下一行一行试命令界面和 01 篇的布局完全不同但场景还是那个场景——切回布局标签物体原样都在。检查点切到 Scripting 再切回布局场景没变左右两块面板你能叫出名字。三、Python 控制台一问一答试 API鼠标点进左下的Python 控制台面板会看到一行提示和一个光标等你说第一句。输入这行回车print(bpy.data.objects[Camera])print 把场景里名叫Camera的物体递给你看bpy_struct, Object(Camera) at 0x...——这就是API的意思Blender 把自己的一切都开放出来让你用代码问、用代码改。顺带一个小坑不加print直接敲bpy.data.objects[Camera]回车控制台只把原话回显一遍加 print 才把对象倒出来——很多人第一下都栽在这。再故意输错一次——把objects打成objecs红色AttributeError糊你一脸。这是常态不是事故写代码的一半时间在看报错红字最后一行就是答案——它不但告诉你objecs这个东西不存在还贴心地问了一句Did you mean: objects?你是不是想打 objects。看完改对再回车谁都会犯的错。检查点查询Camera能列出它的位置故意打错能认出红字最后一行是关键信息。四、第一个脚本十行代码十个球控制台是一问一答脚本是整段执行。到上面的文本编辑器点菜单文本→新建把这段粘进去importbpyimportmathforiinrange(10):anglei/10*2*math.pi xmath.cos(angle)*2ymath.sin(angle)*2bpy.ops.mesh.primitive_uv_sphere_add(radius0.3,location(x,y,0.3))点编辑器右上角的▶ 运行脚本看左上视口——中间十行代码左上十个球围成一个圈这十行代码干了什么for i in range(10)是重复十次每次算出一个圆周上的角度angle换成 x、y 坐标然后调primitive_uv_sphere_add在那个位置放一个球。手动加一个球、按 G 挪到位、再重复九次大约一分钟改 10 成 50代码一行不动手动就得五分钟——重复劳动交给循环这就是代码的价值。想让成果留着编辑器菜单文本→另存为存成rings.py。这个文件在硬盘上任何一台 Blender 都能文本→打开再跑。检查点视口里十球成环把 10 改成 6 再跑一次变成六球环改完先全选旧球删掉A全选 →X删除——别让两拨球叠一起。五、bpy 三板斧AI 代码的语法最小集AI 写的代码看着五花八门词汇量其实很小翻来覆去就三样。在控制台里各试一条1.bpy.data——仓库管理员管场景里所有的东西bpy.data.objects[Camera]# 按名字取物体bpy.data.materials.new(红色)# 新建一个材质2.bpy.ops——操作员管所有动作和你点界面按钮一一对应bpy.ops.mesh.primitive_uv_sphere_add(radius0.3,location(0,0,0))这条就是界面上的添加→网格→球体——01 篇你按ShiftA干的事代码里就是它。你在界面上每点一个按钮几乎都对应一条bpy.ops。3.bpy.context——当下状态管现在当前选中了谁、在什么模式bpy.context.active_object# 当前选中的物体记住这个分工找东西用 data做动作用 ops看现状用 context。AI 的代码你逐行看九成是这三类。三条命令在控制台里各跑一遍输出对得上就说明你使唤得动它们。检查点三条命令都在控制台跑过能说出添加球体对应哪一板斧。六、逐行读雪人代码AI 的手法全在这段里把 02 篇 AI 建雪人的代码翻出来下面是同一份加了行号讲解粘进文本编辑器我们逐行过importbpy specs[(Snowman_Body,0.50,0.50),(Snowman_Middle,0.35,1.30),(Snowman_Head,0.25,1.85),]forname,r,zinspecs:bpy.ops.mesh.primitive_uv_sphere_add(radiusr,location(0,0,z))objbpy.context.active_object obj.namename bpy.ops.object.shade_smooth()第 3-7 行specs是一张清单——每个雪人部件的名字、半径、高度。AI 把你的话三个球越来越小叠在一起翻译成了三个三元组这就是理解需求的产物。第 8 行for循环——三个部件除了数字全是一样的活那重复就交给循环。第 9 行bpy.ops...add第二板斧添加球体location(0, 0, z)里的 z 就是清单里的高度。第 10-11 行刚加的球是当前选中的第三板斧context把它改名叫清单里的名字。第 12 行shade_smooth()平滑着色——界面右键菜单里也有它同一个动作的代码形态。后面上材质那步 AI 还翻过一次车它按英文名找材质节点中文界面下节点名字被翻译了KeyError红字报错——AI 把查找方式从按名字改成按类型第二段代码就修好了。这就是报错的价值红字不是说完了是说改这儿。看不懂的行不用硬啃选中丢给 AI 问这行是干嘛的比查教程快。读代码和问 AI是学的两条腿不背。检查点能指着雪人代码说出哪一行在重复、哪一行在添加物体、哪一行在改名。七、print 与报错给代码装上眼睛脚本跑完结果都在视口里但代码看见了什么你看不到——用print。在十球环代码末尾加一行print(我建好了,len(bpy.data.objects),个物体)再点 ▶ 运行。输出在哪默认看不见。打开它顶部菜单窗口→切换系统控制台英文版 Window → Toggle System Console弹出一个黑底窗口print 那句话就在里面——我建好了 6 个物体数字取决于你场景里有几个物体这个黑窗口同时是报错的老家脚本出错时红字会完整打在这里比编辑器顶栏那一行小字详细得多。排错的固定动作报错了 → 切到系统控制台 → 看最后一行。三种最常见的红字见过的都眼熟报错意思典型原因KeyError按名字找没这个东西名字打错、中文界面节点被翻译02 篇实录AttributeError有这个东西没这个功能拼写错objecs打成这样就是它ModuleNotFoundErrorimport 的库不存在库名写错或者真的没装检查点print 的输出在系统控制台里看到了能说出 KeyError 和 AttributeError 的区别。八、番外导出的 .glb 是什么struct 真能解04 篇里 AI 建完模导出的 .glb网页 3D 版就是它变的也是二进制。但它和 .blend 是两个世界.blend 是 Blender 的私有格式场景内存原样打包开头一张 DNA 自描述表版本一升级布局就变——用 struct 硬啃是自虐。想用 Python 看它正路是让 Blender 自己读blender -b 工程.blend --python-expr import bpy; print([o.name for o in bpy.data.objects])一条命令后台盘点知道有这招就行。.glb 是 Khronos 制定的开放标准glTF 2.0 Binary格式说明书全公开结构规整——struct 真就能解。glb 的骨架就三段区块装什么12 字节文件头魔数 “glTF” 版本号 文件总长JSON chunk场景的「目录」物体名、层级、材质、网格BIN chunk「正文」顶点坐标、法线、索引的数值本体struct json 两个标准库十行读开importstruct,json dataopen(20_floorplan.glb,rb).read()magic,version,totalstruct.unpack_from(4sII,data,0)print(magic,version,total)# bglTF 2 378468 —— 正好等于文件字节数jlen,jtypestruct.unpack_from(I4s,data,12)# 12 字节起是 JSON chunk 的头scenejson.loads(data[20:20jlen])# 切出 JSON 部分再交给 jsonprint(len(scene[meshes]),个网格)# 202print(len(scene[materials]),个材质)# 23JSON chunk 打开就是整个场景的目录——每个物体的名字、父子关系、用了哪个材质全在里面。还能顺便验货每个网格的 POSITION 数据自带 min/max顶点包围盒遍历取极值就能量出模型的真实尺寸Blender 都不用开mins[1e9]*3;maxs[-1e9]*3forminscene[meshes]:forpriminm[primitives]:ascene[accessors][prim[attributes][POSITION]]foriinrange(3):mins[i]min(mins[i],a[min][i])maxs[i]max(maxs[i],a[max][i])print(%.2f x %.2f x %.2f%(maxs[0]-mins[0],maxs[1]-mins[1],maxs[2]-mins[2]))# 11.10 x 2.80 x 11.60 —— 户型外框 11.1 米 x 11.6 米墙高 2.8 米这是我实测 04 篇户型 glb 的真实输出202 个网格量出外框 11.10 × 11.60 米和户型图上标的尺寸链横向 360045040503000纵向 70022001500170045001000分毫不差。AI 建的模对没对上图纸不打开任何软件就能验完。想再往深走直接读写顶点、改动画再上库pip install trimesh或pygltflib。但「看结构、验尺寸、查材质」这个层面标准库就够。检查点struct 读开一个 glb终端打出网格数和外包络尺寸。九、你现在的位置三篇下来你手里的家伙事比想象的多。对照一遍界面添加、G/R/S、编辑模式、渲染出图捏过方凳AI装好了 MCP 通道一句话建模、迭代、让 AI 自查返工都跑过PythonScripting 工作区、控制台查状态、跑过十球环、读懂了雪人代码、会看 print 和三种报错加餐能用 structjson 读开 .glb不装库不打开 Blender 就能验货模型哪条没打勾回到对应步骤重做一分钟的事。本系列最后一篇把三篇的家底一次用尽篇标题你将学会01从下载到捏出第一个模型已完成安装、界面、第一张渲染图、第一个模型02三步装上 AI 大脑已完成MCP 安装连通、AI 建模、看-判断-修闭环03看懂 AI 替你写的代码本篇脚本、控制台、bpy 三板斧04一张户型图变成 3D 房完整实战AI Python 素材全上第 4 篇不学新东西——把你已经会的全用上AI 看着户型图建模你看懂它每一行代码素材库补家具Python 批量铺墙铺地板。一张平面图走进去。有问题留言看到都会回。下一篇见。参考链接Blender Python API 文档bpy 三板斧的官方词典搜不到的属性来这里查https://docs.blender.org/api/current/Blender 官网https://www.blender.org/第 4 篇不学新东西——把你已经会的全用上AI 看着户型图建模你看懂它每一行代码素材库补家具Python 批量铺墙铺地板。一张平面图走进去。有问题留言看到都会回。下一篇见。参考链接Blender Python API 文档bpy 三板斧的官方词典搜不到的属性来这里查https://docs.blender.org/api/current/Blender 官网https://www.blender.org/