一句话:AI 出图不是「生成一张好看的图」,是「生成一张结构正确的图」。判断标准不是好不好看,是可度量:框线数量 == 门扇数,框色改了但玻璃像素一个没动。
这个品类真正难的不是"画得好看",是画得对。项目里的三条硬约束和三个现成解法:
| 类别 | 内容 |
|---|---|
| 产品结构 | 德莉玛 5 大系列(H / H4 / K / M / S)。其中只有 H / S / M 配了价格,K 系列靠 BOM 模板兜底——同一个系列走两条路,出图时也必须分两套处理 |
| 风格铁律 | 业主明确偏好真实感强的写实风,明确拒绝插画 / 动画风格;对生成图里的逻辑错误、空间错误零容忍(门扇数不对、玻璃变多、结构漂了,一次都不接受) |
| 解法一 | product-grid-redraw:只重画竖直框线,玻璃与背景完全不动 |
| 解法二 | product-frame-recolor:金属框改色,画面结构 100% 不变 |
| 解法三 | product-door-collapse-anim:多扇联动门的收拢 / 收框动画,N 条竖框滑合成一条 |
| 相关 skill | comfyui-panoramic-door(全景门 Canny 锁形出参考图)、product-ad-real-insertion(真实产品植入:方舟双图参考替换 + PIL 英雄图合成)、lumenx-reno-keep-structure(旧改前后同空间结构不变) |
结论:把"结构正确"变成三个可执行的程序化动作,就不是靠多试几次运气了。延伸:21 · 卫浴经销商门店业务流(这些系列背后的订单与数据口径)、23 · 旧改局改(旧改前后要"同一间房"的完整方法论)。
不是所有产品都难。难的是这一类:靠"重复单元"构成视觉的产品——一个扇、一个格、一条框,重复 N 次。模型对"重复结构"的理解天生不稳。
| 产品 | 重复单元 | 为什么 AI 容易翻车 | 在德莉玛体系里 |
|---|---|---|---|
| 多扇推拉门 | 门扇 | 扇数多一扇少一扇,肉眼看"差不多" | H 系列主推拉门 |
| 全景门 | 窄边竖框 | 窄边框细,模型容易整片抹掉或凭空加 | K / M 系列常见 |
| 百叶 | 叶片 | 叶片间距是错的,但看起来"有条纹"就行 | 选配件 |
| 格栅 | 竖条 | 条数对、间距不均,视觉上反而更假 | 门窗配套 |
| 分格窗 | 窗格 | 上下分格错位 | 门窗配套 |
| 淋浴房整体 | 玻璃 + 竖框 + 把手 | 三者数量关系必须互相自洽 | 5 大系列全覆盖 |
栅格类产品之所以能"校验",是因为它的结构特征不是独立的,是互相推出来的。抓住一条,就能验出其余三条。
| 特征 | 符号 | 定义 | 由谁决定 |
|---|---|---|---|
| 门扇数 | N | 能开合的扇体数量 | 选型(DP / 门型) |
| 竖直框线数 | V | 画面上可见的竖向分隔框(含两侧边框) | 由 N 决定 |
| 把手数 | H | 可见执手 / 拉手数量 | 由 N 决定 |
| 玻璃分格数 | G | 被框线切出来的玻璃区域数 | 由 N 决定 |
| 关系 | 公式 | 验什么 |
|---|---|---|
| 扇 ↔ 框 | V = N + 1 | 4 扇门必须 5 条竖框(含两侧边) |
| 扇 ↔ 把手 | H = N(每扇一个把手)或 H = N − 1(联动门) | 先确认是不是"联动门"再套公式 |
| 扇 ↔ 玻璃 | G ≈ N(每扇一块主玻璃,含固定扇则 +1) | 玻璃数 ≠ 扇数 = 结构漂了 |
| 框 ↔ 间距 | (W − V × frame_w) / (V − 1) = 均匀间距 | 间距不均 = 透视漂了或框宽不一致 |
H = N。最高频、最致命。扇数错的图,是"看起来最专业"的那类错——因为整体构图、光影、材质都对,只有你伸手去数才发现问题。
| 表现 | 为什么模型会这么错 | 危害 | |
|---|---|---|---|
| 扇数变多 | 要 4 扇,出来 5 扇 / 6 扇 | 模型把玻璃反光里的倒影也当成了一扇 | 报价按 4 扇算,实际要做 5 扇,物料差一档 |
| 扇数变少 | 要 4 扇,出来 3 扇 | 窄边框太细被"连续性"合并掉了 | 门型理解错的,整个方案方向就错了 |
| 扇数对但位置错 | 4 扇,但开门扇在右边 | 镜像生成 | 现场装不上(开门方向是硬需求) |
comfyui-panoramic-door 这条路径的意思就是:不要让模型自由发挥构图,先用边缘检测结果把"这几条竖框在哪"钉死,再在锁定的轮廓上做生成。这是把"自由创作"变成"受限填充"的关键一步。
用 product-grid-redraw 单独把竖框画出来一张(透明底、只有线),程序数一遍线,不等于 N+1 直接判废,不靠人眼看。
见本篇第 09 节的检查清单。这一步不做,你永远靠运气。
扇数错你还能一眼看,玻璃数量错更难发现——因为玻璃是透明的一整片,眼睛默认它是连通的。
| 表现 | 根因 | 可度量的判据 |
|---|---|---|
| 多出一块玻璃 | 框线画了一半,模型用"玻璃"把缺口补平 | 玻璃区域连通块数 ≠ 期望分格数 |
| 少一块玻璃 | 相邻两格被误连 | 同上 |
| 玻璃形状变了 | 框线位置漂移,玻璃跟着"挤"变形 | 每块玻璃的面积占比偏离均匀值超过阈值 |
| 玻璃工艺串了 | 磨边 / 钢化 / 中空,生成图上分不清 | 这一项 AI 基本不可靠,必须以型号参数为准,不以图为准 |
thick / process 是 order_line 上的字段,见 21 篇),图只负责验"结构"这一件事。这一条在"给产品改色"的场景里最常见。需求是把金色框改成白色,结果改完发现玻璃边上多一圈白边、或者玻璃里映出框的颜色。
| 污染形态 | 怎么发生的 | 后果 |
|---|---|---|
| 玻璃边缘渗色 | 换色时用大面积容差,把贴近框线的玻璃像素一起染了 | 玻璃发灰、发黄,一看就是假图 |
| 玻璃里映出框色 | AI 重绘时把框的反射写进了玻璃 | 写实风下破功最严重的一类——真实感强的内容对这种污染零容忍 |
| 背景跟着一起变 | 改色指令被模型理解成"换个色调" | 整个画面风格漂移,等于重做 |
| 不变量 | 怎么保证 | 怎么验 |
|---|---|---|
| 框改了 | 只在框的掩膜(mask)内替换颜色,mask 就是框本身 | 框区域色值确实变了 |
| 玻璃没动 | 玻璃区域完全不进 mask;掩膜外像素逐个像素比对 | 非框区域的像素差 < 阈值(实测应为 0 或极小抗锯齿差) |
| 背景没动 | 同上,掩膜外一律不碰 | 同上 |
product-frame-recolor 就是这两条不变量的封装:金属框改色、画面结构 100% 不变。它的价值不在"能改色",在"改完能证明只改了框"。能证明,才敢批量出多色版本。第四类比前三类更隐蔽:框数对、框色对、玻璃对,但整个空间不像同一间房了。
| 表现 | 为什么错得很隐蔽 |
|---|---|
| 墙角角度变了 | 框线是直的,直的就"看不出错" |
| 门的垂直度变了(轻微倾斜) | 单看一帧完全正常,对比原图才看出来 |
| 窗景内容换了 | 这块通常不在换色/重框的作用范围内,却被整体重绘带跑了 |
| 地面反光方向反了 | 光影错,鬼影一样,客户说不出哪里怪 |
第五类属于"改造类内容"专属,但它是致命級:把旧厨房改成新厨房,出图结果墙挪了、窗挪了、户型变了——观众一眼识破,内容就废了。
| 要求 | 反例 | 怎么保证 |
|---|---|---|
| 同一空间 | 「改造后」变成了另一个户型 | 结构线(墙 / 门 / 窗)锚死,只换饰面和洁具 |
| 同一机位 | 前后两张视角差 10 度 | 基准帧锁机位,前后共用同一张构图 |
| 改造前状态要"真旧" | 旧图其实挺干净,像刚打扫完 | 旧状态是给定状态,不是让模型"想象旧的样子" |
| 同一角色 / 同一空间角色 | 前后人物不一致 | 走 LumenX 的资产作用域(Series / Episode / Global)管理,见第 10 节 |
项目里对应的解法:lumenx-reno-keep-structure —— 保证改造前后是同一空间、房子结构(墙 / 门 / 窗 / 户型 / 机位)不变;场景 / 道具参考图本身也要正确(状态纯度、空间语义、风格归属、窗景一致)。
把客户给的真产品图(比如网页产品图 / 透明底图)放进 AI 生成的场景里,是另一个难度档:你不是在画产品,你是在"把真东西搬进去还让人看不出搬过"。
| 难点 | 表现 | 对策 |
|---|---|---|
| 模型把产品"重画"了 | 你给的是摩恩龙头实拍,图里出来一个"类似但不等于"的龙头 | 不让模型重画产品本体,用参考替换 |
| 产品不接地 | 悬空 / 投影方向错 | PIL 合成时补环境阴影+ 透视对齐 |
| 场景里的产品被场景风格污染 | 产品被整体风格统一掉了 | 方舟双图参考:一张锁产品、一张锁场景 |
项目里对应的解法:product-ad-real-insertion —— 方舟双图参考替换 + PIL 英雄图合成。核心拆法:产品归产品,场景归场景,合成步骤用程序做,不用模型做。
前面五类错误,解法可以归纳成三条不变量。不变量的意思是:不管需求怎么变,这三条永远成立——成立不了,结果就是废片。
product-grid-redraw:只重画竖直框线,玻璃与背景完全不动。product-frame-recolor:金属框改色,画面结构 100% 不变。product-door-collapse-anim:多扇联动门收拢,N 条竖框滑动合成一条,背景不动、把手跟着滑。结构能保持,前提是参考图本身是稳定的、可复用的。在 LumenX Studio(部署域名 lumenx.memberhandbook.cn)里,这件事靠资产三层作用域解决。
| 作用域 | 管什么 | 对应到本项目 | 用错了会怎样 |
|---|---|---|---|
| Series(剧集 / 项目级) | 整个项目共享的角色 / 场景 | 「卫生间局改」这一整个项目里的角色参考图、空间基准 | 放在这里,别的系列用不上 |
| Episode(单集 / 单环节) | 某一集内部的道具 / 分镜元素 | 「第二空间卫生间局改」这一集的道具参考图 | 跨集复用失效,重复生图 |
| Global(全局) | 所有项目都能用的底层资产 | 产品定妆照、品牌风格基准帧 | 放全局会让资产库膨胀、检索变脏 |
这条是业主明确立过的规矩,也是这类内容能不能拿去投放的前提。
| 写实风(要求) | 插画 / 动画风(拒绝) | |
|---|---|---|
| 目标 | 真实感强,能当效果图看 | 风格化、装饰性 |
| 对错误的容忍度 | 零容忍(扇数不对 / 玻璃变多 / 结构漂了,一次都不接受) | 容忍度高("手绘风本来就不准") |
| 为什么不能容忍 | 这是给经销商门店和业主看的产品决策依据,错结构 = 错产品 | — |
| 对生成难度的含义 | 更难:写实风下结构错误最显眼 | 反而容易蒙混过关 |
这一段可直接当 checklist 用。全部可机检,不靠人眼判断;人眼只负责最后一步"整体观感"。
| # | 检查项 | 判据(可机检) | 不通过怎么办 |
|---|---|---|---|
| 1 | 数竖框 | 竖框线数 V == 扇数+1;用红框图单独跑一遍计数 | 判废,回到基准帧重生成 |
| 2 | 数把手 | 平开 H = N;联动门 H = N−1(先判定门型) | 判废 |
| 3 | 数玻璃连通块 | 玻璃区域连通块数 == 期望分格数 | 判废 |
| 4 | 间距均匀度 | 相邻框间距的最大/最小值在阈值内 | 判废 / 微调 |
| 5 | 门扇位置 | 开门扇在指定侧(镜像检测) | 判废 |
| 6 | 改色后玻璃未动 | 玻璃区域像素与基准帧差异 < 阈值(期望接近 0) | 判废,重做掩膜 |
| 7 | 改色后背景未动 | 同上,掩膜外逐像素比对 | 判废 |
| 8 | 动画中间帧拓扑稳定 | 任意中间帧竖框数恒定;只改动了 x 坐标 | 判废 |
| 9 | 旧改前后同空间 | 墙 / 门 / 窗位置与基准帧 diff 在阈值内 | 判废 |
| 10 | 产品植入像素保真 | 产品区域与原产品图差异 < 阈值 | 判废 |
| 11 | 工艺参数回查 | 不看图,回查 thick / process 字段 | 以参数为准,改数据不改图 |
| 12 | 最终观感 | 人眼看(唯一允许主观的一项) | 人工调整 |
实际项目里三条不是各用各的,是串成一条线。以"给一个淋浴房系列出多色版本 + 一条收拢动画"为例:
先用 comfyui-panoramic-door 类的 Canny 锁形路径出一张结构正确的基准帧,过验收清单 1/2/3。这是整条线的原点,后面所有版本都以它为锚。
product-frame-recolor 出金 / 银 / 黑 / 白多个版本,每个版本都跑检查项 6、7(玻璃和背景必须没动)。
个别版本框线漂移,用 product-grid-redraw 只重画竖框,玻璃与背景完全不动——比整张重生成便宜得多,也不会把已经对的光影毁掉。
product-door-collapse-anim 把 3~4 扇门做成收拢成一条的动画,中间帧跑检查项 8。
需要放真产品走 product-ad-real-insertion;做旧改内容走 lumenx-reno-keep-structure,分别跑检查项 10、9。
上线前拿 10 张抽样跑全部 12 项,通过率低于阈值就先别批量。这一步省的是整批废片的钱。
这类项目最容易出的问题是两头都管、两头都管不对:拿图去推参数,拿参数去改图。
| 信息 | 以谁为准 | 原因 |
|---|---|---|
| 扇数、框数、间距、开门方向 | 图(结构) | 客户看的是图,图错了方案就错 |
| 玻璃厚度、磨边、中空、钢化 | 参数(thick / process) | 这些在图上不可判别,看图验工艺必然错 |
| 型号归属、系列价格 | 主数据(product_model / series) | 德莉玛 5 大系列里 H/S/M 有价、K 系列走 BOM 模板兜底,价只能读不能推 |
| 订单尺寸是否齐全 | 数据(spec 空值率) | 见 21 篇:抽 400 单有 97% 的 spec 为 null /「否」 |
坑 1 · 拿「生成的图」当结构依据
想确认"这个系列到底几扇",直接问生成模型。它不会说"我看不清",它会给一个自信的答案。扇数只能从型号 / 门型参数读,图只能用来验已经确定的结构。
坑 2 · 每次重生成都基于上一张
连续迭代会让结构一点点漂,最后一版已经不是你改的那件事了。必须锁基准帧,每次都从基准帧出发。
坑 3 · 用"重绘"实现改色
"让 AI 把金框改成白框"——结果框对了、玻璃也跟着重画了。改色是低自由度操作,不该调用高自由度的重绘。用掩膜替换。
坑 4 · 插画风格练手,拿去交付写实需求
插画风结构松散,很多错误在插画里看不出来。用插画风验证出的"还可以",到写实交付时全是错误。训练校验规则时,一定要在写实基准帧上验。
坑 5 · 把参考图全塞 Global 作用域
短期省事,长期资产库跟剧本不一致、跨集复用失效、角色两集长得不一样。按 Series / Episode / Global 三层放,才是复用率能统计出来的前提。
H = N−1,套 H = N 会得到自洽但错的结构product-grid-redraw / product-frame-recolor / product-door-collapse-anim)thick / process,不看图先纠正一个误解:写 prompt 是我最后才做的事,不是主要工作。我做的是先把"这张图什么算对"定义成可度量的判据,再决定哪一步用模型、哪一步用程序。
以德莉玛淋浴房为例,这个品类叫栅格类产品——多扇推拉门、全景门、百叶、格栅、分格窗,都是靠重复单元构成的。这类产品的结构特征是互相锁定的:扇数 N,竖框就是 N+1,锁边所需的把手数取决于是不是联动门,玻璃分格数约等于 N。这些是算术约束,不是审美标准。
所以我做的事是:① 先用 Canny 锁形(comfyui-panoramic-door 那条路径)把构图钉死,不让模型自由发挥;② 生成后把竖框单独画成一张透明底图,程序数一遍线,不等于 N+1 直接判废;③ 每条出图流水线都留基准帧,后续都跟基准帧做像素 diff,不跟上一版比,避免漂移累积。不追求每次都生成对,追求每次都验得出对不对。
拆成两条不变量:① 只改那一个语义对象;② 改色 = 掩膜内替换,掩膜外像素不变。
比如金框改白框。如果用"让 AI 重绘一版",结果是框对了、玻璃也跟着重画了、背景光影也漂了——因为重绘同时动了颜色和结构。我的做法是做掩膜,只在框的掩膜内换色,然后对玻璃区域和背景区域逐像素和基准帧比对,差异必须接近 0。这个工具就是 product-frame-recolor,卖点不是"能改色",是"改完能证明只改了框",所以才敢批量出多色版本。
框线本身偏了的时候,用 product-grid-redraw,只重画竖直框线,玻璃与背景完全不动。这里有个成本账:框的自由度是 1(位置),玻璃的自由度是 2(形状 + 内容)。改框只动线,改玻璃等于重画两样,风险和成本差一个数量级。这就是为什么我坚持"能算准的部分不许交给模型"。
业主明确要求真实感强的写实风,明确拒绝插画 / 动画风格,对逻辑错误和空间错误零容忍。
这个偏好反过来决定了技术路线,很反直觉:插画风结构松散,很多错误在插画里看不出来;写实风把结构错误暴露得最彻底。所以写实风格下,光靠调 prompt 和重生成这条路是走不通的,必须把结构检查做成自动跑的。我现在那套验收清单一共 12 项,前 11 项全部可机检——数框、数把手、数玻璃连通块、间距均匀度、开门方向、改色后玻璃和背景的像素差、动画中间帧拓扑稳定、旧改前后同空间、植入产品像素保真。只有最后一项"整体观感"允许主观。
靠基准帧 + 只换语义对象。对应工具是 lumenx-reno-keep-structure。
要求很硬:同一空间、房子结构(墙 / 门 / 窗 / 户型 / 机位)不变,只换饰面和洁具。具体做法:结构线锚死,换色换料换洁具;基准帧锁机位,前后共用同一张构图;"改造前"的状态是给定状态,不是让模型去想象旧的样子(这块一旦让模型自己造,它造出来的是它心中的旧厨房,不是这间房的旧厨房)。验收上就跑一遍墙 / 门 / 窗位置与基准帧的 diff,超阈值判废。
还有一层是资产治理:LumenX Studio 上我们部署在腾讯云 lumenx.memberhandbook.cn,资产分 Series / Episode / Global 三层作用域。最常见的错误是把所有参考图丢进 Global,短期省事,长期资产库跟剧本对不上、跨集复用失效、同一角色两集长得不一样。作用域不是分类癖,是复用率能不能统计出来的前提。
能,而且批量前必须抽样全检。
流水线排法是:基准帧锁结构 → product-frame-recolor 出多色 → 个别版框线偏了用 product-grid-redraw 只重画竖框 → product-door-collapse-anim 做收拢 / 收框动画(N 条竖框滑合成一条,中间帧跑拓扑检查)→ 需要放真产品走 product-ad-real-insertion(方舟双图参考替换 + PIL 英雄图合成,核心是产品归产品、场景归场景,合成步骤用程序做不用模型做)。
交付前拿 10 张抽样跑完整 12 项清单,通过率低于阈值就先别批量。这一步经常被砍成"先出几张看看",但结构类错误的特征就是单张品味不错、批量全翻车——每张的生成路径都略有不同,所以抽样全检不是谨慎,是这个领域的标准工序。
最后补一条分工:图管结构,参数管工艺。玻璃厚度、磨边、中空,在图片上本来就不可判别,所以工艺一律回查 thick / process 字段,以参数为准、以图为辅。这条边界提前跟客户讲清,能省掉大量"我按你说的改了,怎么价格还是不对"的循环。
本篇讲结构正确性。门店业务流怎么被信息化串起来、为什么"有订单 ≠ 有数据",在 21 · 卫浴经销商;旧改 / 局改 / 适老化的 B2B 定位与 script-first 降本,在 23 · 旧改局改;改造类项目的完整工程口径见 模块 11 · 数据迁移。