本次用 Talos,从三段规格化 Prompt 到拿到可拖拽的两层别墅编辑器,全程约 24 分钟。
项目背景

家居 DIY 与模拟经营类游戏的内容量几乎等于资产数量,还需要一套摆放规则让家具能被正确放置。手工完成这一整套(57 件资产 + 两层别墅 + 摆放系统 + 编辑器),本次估算需要 1 周以上。本次用 Talos,24 分钟产出 57 件 3D 资产、一栋 14×14 m 的两层别墅与一个可拖拽的编辑器。

挑战
这类任务有两个难点。一是资产一致性:尺寸、轴心、朝向必须统一,否则进引擎后会出现浮空与穿模,几十件之后逐个手改很耗时。二是摆放规则的正确性:承托、重叠、越界、跨楼层吸附写错一处,表现就是“台灯浮在半空”或“二层书桌被吸到一层台面”。
通用建模工具给出的是模型文件,拿不到附带精确尺寸、承托面与安装方式的结构化数据。本次的目标是产出一套能被程序直接调用、且自带自检的资产与规则。

方法
第一步:分三轮把需求规格化
本次把每一轮的意图写成带约束和验收标准的 Prompt,分三轮推进。下方为规格化后的完整内容,可直接复用。
第一轮 · 立项、定规范、出首批资产
【角色】资深游戏 3D 资产管线工程师。
【目标】为一款家居 DIY 游戏产出一套可直接进引擎的 3D 家具资产。
【技术路线】
用 Python(trimesh + numpy)程序化生成模型,不引入 Blender、不产出 .blend 文件,
除 trimesh 与 numpy 外不增加依赖。所有资产必须能通过脚本重复构建。
【资产规范(每一件都必须满足,不得例外)】
- 单位 1 = 1 米;坐标轴 Y 朝上
- 轴心为水平包围盒中心,local y = 0 为物件自身最低点
- 正面朝 +Z,绕 Y 轴旋转 0° 时正面朝向镜头
- 网格吸附 0.25 m
- 材质为纯色 PBR(金属度/粗糙度),不使用贴图,材质名跨资产共享,便于统一换色
- 节点名格式 <资产key>__<材质key>
- 尺寸按真实家居比例,且视觉几何必须与声明尺寸完全一致(引擎直接用清单做碰撞)
【首批资产】22 件
坐具 4、桌几 3、收纳 4、卧室 2、厨房 1、装饰 2、灯具 2、房间外壳 4
【交付物】
- 每件资产一个 GLB
- manifest.json:尺寸、占地网格、材质名、三角面数
- 资产包总览 GLB 与等距预览图
- README:规范说明与新增资产的方法
【验收】
自检必须全绿:贴地(最低点正好 y=0)、轴心居中、无浮空零件、每个零件闭合流形、
声明尺寸与几何实测一致、GLB 可回读且节点名与材质名不丢。
【工作方式】
先立规范与工具库,再批量出资产。每批结束跑完整自检,全绿才算完成。
第二轮 · 加入摆放系统与房间编辑器
【本轮目标】把静态资产变成可交互的摆放系统,并做出房间编辑器。
【房间数据化】
把房间定义成数据而非硬编码:室内净尺寸、层数、墙高、楼板厚做成参数,
墙体、地砖、楼板、门按尺寸自动铺设。改数字即可重新生成整套房间。
【摆放规则】判定顺序固定,规则写成纯函数,供生成端与编辑器共用
1. 平面范围:整体包围盒必须在本层可摆放区域内
2. 占用区:不能压到楼梯或楼板洞口
3. 层高:物件高度不能超过本层天花板
4. 重叠:同层、同高度不许占地重叠(地毯等地饰除外)
【安装语义】每件资产声明 placement 与 mount_y
- floor:pivot 放在 (x, 本层地面高, z),先查承托面吸附,吸附不到就落地
- wall:y = 本层地面 + mount_y,整体包围盒贴到墙面内侧
- ceiling:y = 本层地面 + mount_y,x/z 直接使用
mount_y 以本层地面为基准(非世界高度)。承托吸附必须限定在同一层。
【编辑器】单文件 HTML,模型与清单全部内嵌,双击即可打开
点选放入、拖动吸附 0.25 m、R 键旋转 90°、Delete 删除、滚轮缩放、右键转视角;
拖到家具顶面自动吸附到桌面高度,拖出自动落回地面;
位置非法时高亮标红并在松手后退回原位;
导出布局 JSON,这就是引擎要存的存档格式;
内置摆放规则自检,页面打开时自动运行。
【验收】
编辑器自检全绿,且结论与 Python 端一致;样板房间逐条判定合法、承托高度自洽。
第三轮 · 扩容、加层、改色
【本轮变更】
1. 房间:面积扩大约 10 倍 → 每层改为 14 × 14 m
2. 层数:改为上下两层,层高 2.90 m(墙高 2.80 + 楼板 0.10)
新增楼板、直跑楼梯、楼板洞口与洞口栏杆
楼梯升高必须等于层高;楼板铺满且洞口正好罩住楼梯
3. 资产:新增 35 件
卫浴 6(浴缸、淋浴房、马桶、洗手台、镜柜、毛巾架)
厨房 5(冰箱、台面灶、油烟机、吊柜、中岛台)
收纳与书房 8(五斗柜、文件柜、屏风、落地镜、儿童床、书桌、办公椅、长凳)
灯具与装饰 7(吸顶灯、吊灯、壁灯、挂钟、装饰画、花瓶、大型绿植)
客厅与其他 5(L 型转角沙发、边几、电视、鞋柜、衣帽架)
结构 4(楼板、楼梯、栏杆、转角柱)
壁挂件与吸顶件用 mount_y 声明安装高度,吸顶件必须满足 mount_y + 高度 = 层高
4. 新增能力:颜色 DIY
单件改色(按材质槽逐槽配色)
整套配色(同名材质全屋一起换)
改色结果随布局 JSON 导出
【不变】资产规范、摆放判定顺序、安装语义、交付物形态、验收标准
【验收】自检全绿;房子交叉校验通过;编辑器与 Python 端结论一致
三段 Prompt 共同锁定了四件事:
- 资产规范:单位、轴心、朝向、网格、材质命名、节点命名,一次定死后所有资产自动对齐。
- 摆放语义:落地 / 壁挂 / 吸顶三类安装方式,以及承托吸附只看同一层。
- 验收标准:自检必须全绿,且编辑器与 Python 端结论一致。
- 变更边界:第三轮显式写出“不变”的部分,避免已对齐的约定被顺手重写。
第二步:Talos 生成与自我校验
Talos 接续执行了以下环节:
- 确认技术路线并立规范:定下单位 1 米、Y 轴朝上、轴心为底面中心、正面朝 +Z、0.25 m 网格吸附,所有资产必须遵守。
- 并行分派四组资产:分别产出卫浴、厨房、收纳书房、灯具装饰四组共 31 件新家具,各自独立生成后统一并入资产库。
- 把摆放规则抽成独立模块:判定逻辑写成纯函数(尺寸换算、重叠检测、承托吸附、越界与层高),供生成端与编辑器共用。
- 构建并渲染:输出 57 个 GLB 文件、资产清单、两层别墅场景与预览图。
- 自检并修复:Python 端 11 类检查与编辑器 15 项自检全部通过;过程中自检报出“二层书桌被吸附到一层厨房台面”,定位为承托吸附未按楼层过滤并修复。
全程约 24 分钟。
第三步:输出结构与资产规范
资产构成:57 件,11 个类别。
| 类别 | 数量 | 内容 |
|---|---|---|
| 坐具 | 7 | 三人沙发、扶手椅、餐椅、L 型转角沙发、长凳、办公椅 |
| 桌几 | 5 | 茶几、餐桌、书桌、边几、儿童书桌 |
| 收纳 | 6 | 床头柜、衣柜、书架、电视柜、五斗柜、文件柜 |
| 厨房 | 6 | 橱柜、冰箱、台面灶、油烟机、吊柜、中岛台 |
| 卫浴 | 6 | 浴缸、淋浴房、马桶、洗手台、镜柜、毛巾架 |
| 卧室 | 3 | 双人床、单人床、儿童床 |
| 玄关 | 2 | 鞋柜、衣帽架 |
| 装饰 | 9 | 地毯、盆栽、大型绿植、电视、屏风、落地镜、挂钟、装饰画、花瓶 |
| 灯具 | 5 | 落地灯、台灯、吸顶灯、吊灯、壁灯 |
| 结构与楼层 | 4 | 楼板、楼梯、栏杆、转角柱 |
| 房间外壳 | 4 | 墙段、地砖、门扇、窗框 |
合计约 2.3 万三角面,GLB 合计 1.1 MB。
房子本身也是一份数据:两层别墅每层 14×14 m,层高 2.90 m,墙、地砖、楼板、楼梯、栏杆、门全部按尺寸参数自动铺设,共 510 个外壳构件。
摆放规则:每件资产在清单里带尺寸、凸出量、承托面与安装方式,判定按固定顺序执行。
| 判定顺序 | 规则 |
|---|---|
| 1 | 整体包围盒必须在本层可摆放区域内 |
| 2 | 不能压到楼梯或楼板洞口 |
| 3 | 物件高度不能超过本层天花板 |
| 4 | 同层、同高度不允许占地重叠(地毯等地饰除外) |
安装方式分三类:floor 落地并优先吸附承托面,wall 与 ceiling 按声明的安装高度自动就位。壁挂件拖到墙附近会自动贴墙并转向房内。
颜色 DIY:材质名跨资产共享,单件改色按材质槽逐槽生效,整套配色可一键把同名材质全屋换掉,改色结果随布局 JSON 一起导出。
结果
| 指标 | 手动制作 | Talos | 变化 |
|---|---|---|---|
| 总耗时 | 1 周以上(估算) | 24 分钟 | 约 -99% |
| 资产数量 | 57 件 | 57 件 | 持平 |
| 尺寸与轴心一致性 | 需逐件核对 | 由自检强制保证 | 更可靠 |
| 摆放规则验证 | 手写用例 | 两端 26 项自检 | 自动 |
| 输出格式 | 模型文件 | GLB + 结构化清单 + 可拖拽编辑器 | 可直接接入 |
| 可复用性 | 每次重新建模 | 改参数即出新变体 | 高 |
Talos 在 24 分钟内产出 57 件带统一规范的 3D 资产、一栋两层别墅与一个可拖拽编辑器。Python 端 11 类检查与编辑器 15 项自检全部通过,其中编辑器自检在页面打开时自动运行。(数据截至 2026 年 10 月)
业务影响
- 单次产出:从“先建规范再逐件建模”变成“先立规范、再批量生成”。规范由程序强制执行,团队不再需要靠人工评审去发现浮空与轴心偏移。
- 扩量成本:加一件新家具是写一个函数,自动进入资产库、清单、编辑器与碰撞检查。想要新变体改参数即可,边际成本很低。
- 规则正确性:摆放判定抽成独立模块后,生成端与编辑器跑同一套规则、同一套自检。任何一侧出错,另一侧会先报出来。
- 引擎接入:资产清单自带尺寸、承托面与安装方式,引擎侧不需要再补隐藏参数即可实现摆放系统。
可复制的启示
- 先立规范,再上量。单位、轴心、朝向、网格这些约定一旦定死,后续所有资产自动对齐;跳过这一步,几十件之后一定返工。
- 把验收标准写进 Prompt。写明“自检全绿”之后,完成信号就变得可判定,不需要每轮重新对齐“什么算做完”。
- 追加需求时显式写出“不变”的部分。把边界画出来,改动范围才可控。
- 要求两端跑同一套自检。生成端与运行端各写一套校验,两边结果不一致时,先报错的那一侧往往才是对的。
常见问题
Q:不装 Blender 也能做 3D 模型吗?
A:低多边形的方体、圆柱、旋转体这类结构可以,本次 57 件家具全部如此生成。有机曲面(软包褶皱、异形椅背)用代码生成做不到,需配合建模软件或 3D 生成模型后再按同一套规范导出。
Q:生成的资产能直接进 Unity 或 Godot 吗?
A:可以。资产为 GLB 格式,另附 JSON 清单,含精确尺寸、占地网格、承托面与安装方式。引擎侧按清单实现摆放判定即可,不需要额外量尺寸。
Q:房间能不能改成别的户型或尺寸?
A:可以。房间尺寸、层数、楼梯位置都是参数,改一个数字即可重新生成整套墙体、地板与楼板;项目里已预留一个小户型预设。
Q:这三段 Prompt 能复用到别的主题吗?
A:可以。三段分别对应“立规范出首批资产”“加交互与规则”“扩容与新增能力”,是资产型项目的通用推进顺序。核心是先定规范与验收标准,再分批推进,每批以自检全绿收尾。