模特上身图提示词重构 + 图片创作页 UI 调整

后端(模特上身图提示词):
- build_model_tryon_prompt_refs 重写:穿戴/非穿戴分流(穿戴=真实穿身替换原衣,
  非穿戴=手持/佩戴/使用不动原衣)、每张按 index 变化动作/场景/镜头、负面词尾接、
  多图参考序号自适应(参考图1~N=商品,参考图N+1=模特)
- 新增 _product_reference_urls:商品参考图真实上传图优先、排除 AI 生成图、可多张(≤3),
  无真实图回落 cover
- worker run_standalone_image_task 模特分支改用多图取图 + 传 index/n_product

前端(图片创作/工作室):
- 生成数量改 1/2/4;图片比例新增「手动输入」(宽:高 两输入框)
- 临时隐藏「商品库」按钮
- 模特卡:去掉 // 真人模特,标题改图片底部白字遮罩层 + 单行省略
- 工作室壳负边距对齐 .content padding,修复上下被遮挡/裁切

其他:并入此前未提交的商品页改动、脚本 Agent/格式实测文档与 demo
This commit is contained in:
zyc
2026-06-27 09:31:44 +08:00
parent 4c8b2d1902
commit de4b20cc7b
24 changed files with 2350 additions and 127 deletions
+87
View File
@@ -0,0 +1,87 @@
# 故事板「画风锚点」对比 demo
> 探针:[`backend/storyboard_style_demo.py`](../../backend/storyboard_style_demo.py) · 图像模型:yunqi/gpt-image-2 · 纯文生图(隔离"锚点"单一变量)
> 同一组保温杯 4 分镜,各出两版:**无锚点(现状)** vs **有锚点(锁画风)**。
---
## 一、什么是「画风锚点」
就是把一段**固定的、逐帧逐字相同的风格规格**注进每一帧的提示词,把模型本来自由发挥的画风焊死。本 demo 用的锚点:
```
【统一画风 · 所有分镜必须严格一致,不可逐帧漂移】
· 风格:写实电商摄影棚实拍质感(photorealistic),禁止插画/线稿/漫画/3D 卡通;
· 布光:统一柔和影棚顺光,同一色温(暖白);
· 色彩:统一明亮干净的电商色彩分级,低饱和高级灰背景;
· 景别构图:统一中近景、人物居中、相同画面留白比例与镜头高度;
· 人物:全片同一位年轻女白领(同一张脸、同一发型妆容着装);
· 商品:全片同一只白色保温杯(同一外形/配色/logo)。
```
关键:**这段每一帧都一模一样地拼进去**,模型就被反复约束到同一套风格上,不会这帧写实、那帧插画。
---
## 二、对比结果
### 无锚点(现状)—— 连"产出物形态"都在漂
| 帧 | 实际产出 |
| -- | -------- |
| 第1镜 钩子 | 单张「分镜卡」:顶部元数据表格(镜号/景别 MCU/机位)+ 一张照片,蓝调办公室,白衬衫女主 |
| 第2镜 痛点 | 又一张「分镜卡」,但**布局变了**(元数据挪到左栏)+ 灰西装女主 + 暖调 |
| 第3镜 卖点 | **直接画成一整张 4 行分镜缩略表(contact sheet)**——完全不同的产出物 |
| 第4镜 CTA | (同样各画各的) |
→ 不只是画风漂,**连"画一张图还是画一张分镜表"都每次不一样**;元数据布局、色调、人物也各不相同。
| ![](no_anchor/frame1_钩子.png) | ![](no_anchor/frame2_痛点.png) | ![](no_anchor/frame3_卖点.png) |
| --- | --- | --- |
| 第1镜:单张卡(表格在顶) | 第2镜:单张卡(表格在左)| 第3镜:4行分镜表 |
### 有锚点(锁画风)—— 4 帧像同一套片子
| ![](with_anchor/frame1_钩子.png) | ![](with_anchor/frame3_卖点.png) | ![](with_anchor/frame4_CTA.png) |
| --- | --- | --- |
| 第1镜 | 第3镜 | 第4镜 |
→ **统一写实摄影质感、统一米灰色调、统一柔光、同一位女白领、同一只白色保温杯**——明显是一套连贯的片子。
画风一致性被锁住了(对比无锚点那组的杂乱一目了然)。
---
## 三、demo 意外暴露的第二个问题(比画风更值得修)
**两组都把图画成了"分镜表/分镜卡"(多格 + 元数据列 + 文字标注),而不是干净的单帧画面。**
根因:提示词里的 **「导演故事板 / 分镜图」** 这几个字,会让图像模型去画一张"分镜文档"(storyboard sheet),
而不是"这一镜的画面"。锚点锁住了**画风**,但没锁住**产出物类型**。
雪上加霜:线上 DB 模板把代码默认里的 **「一镜一图」** 删掉了(见下),而"一镜一图"正是约束"出单帧、别出多格表"的那句。
- 代码默认:`…电商竖屏 9:16 导演故事板,**一镜一图**,画面清晰…`
- 线上 DB :`…电商竖屏 9:16 导演故事板,画面清晰…`(少了「一镜一图」)
> 注:线上真实路径走 `image_edit` + 人物参考图,参考图会把结果往"这个人的实拍照"拽,可能比纯文生图更不易出表;
> 但"导演故事板"这个词的风险真实存在,demo 已证。
---
## 四、改进建议(锚点要同时锁「画风」+「产出物」)
把 `storyboard_frame` 后台模板的尾段改成**画风锚点 + 产出物锚点**合体,并恢复「一镜一图」:
```
…请严格保持各参考图中角色的同一张脸、同一商品的外观与配色;
【统一画风】写实电商摄影棚实拍质感,统一柔和暖白影棚光、统一明亮干净色彩分级、统一中近景居中构图;禁止插画/线稿/漫画/3D卡通。
【产出物】只输出单张写实画面(一镜一图);禁止多格分镜表、禁止文字标注/字幕、禁止表格/边框/元数据栏。
电商竖屏 9:16,画面清晰,可直接指导视频生成。
```
要点:
1. **画风锚点**——锁写实/光线/色调/构图(本 demo 已验证有效)。
2. **产出物锚点**——明确"单张画面、禁止分镜表/文字/表格"(治本次暴露的"画成分镜表")。
3. **恢复「一镜一图」**——线上被删了,加回。
4. **人物/服装跨帧锁**——纯文生图下服装仍会微漂(白上衣 vs 西装);彻底锁要靠线上的 `image_edit` 参考图路径(用同一张人物立绘当参考)。
5. **可选固定 seed**——进一步压跨次随机漂移(需确认 yunqi/gpt-image 支持)。
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

+117
View File
@@ -0,0 +1,117 @@
# 故事板画风锚点 demo · 用到的提示词
> 图像模型:yunqi/gpt-image-2 · 模拟商品:保温杯 · 4 分镜
## 无锚点(现状)
### 第1镜 · 钩子
```
根据以下画面生成一个导演故事板分镜图,用于指导短视频生成。
【镜头功能】钩子
【画面】年轻女白领坐在办公室工位,皱眉摸了摸桌上凉掉的水杯,抬头看镜头一脸无奈
电商竖屏 9:16 导演故事板,画面清晰。
```
### 第2镜 · 痛点
```
根据以下画面生成一个导演故事板分镜图,用于指导短视频生成。
【镜头功能】痛点
【画面】女白领从通勤包里拿出漏水的旧保温杯,纸巾擦被打湿的笔记本,表情懊恼
电商竖屏 9:16 导演故事板,画面清晰。
```
### 第3镜 · 卖点
```
根据以下画面生成一个导演故事板分镜图,用于指导短视频生成。
【镜头功能】卖点
【画面】女白领单手按下保温杯一键弹盖,杯口冒出热气,桌面横放杯子滴水不漏
电商竖屏 9:16 导演故事板,画面清晰。
```
### 第4镜 · CTA
```
根据以下画面生成一个导演故事板分镜图,用于指导短视频生成。
【镜头功能】CTA
【画面】女白领手持保温杯对镜头微笑展示,画面右下角出现购物车引导点击
电商竖屏 9:16 导演故事板,画面清晰。
```
## 有锚点(锁画风)
### 第1镜 · 钩子
```
根据以下画面生成一个导演故事板分镜图,用于指导短视频生成。
【镜头功能】钩子
【画面】年轻女白领坐在办公室工位,皱眉摸了摸桌上凉掉的水杯,抬头看镜头一脸无奈
【统一画风 · 所有分镜必须严格一致,不可逐帧漂移】
· 风格:写实电商摄影棚实拍质感(photorealistic),禁止插画/线稿/漫画/3D 卡通;
· 布光:统一柔和影棚顺光,同一色温(暖白);
· 色彩:统一明亮干净的电商色彩分级,低饱和高级灰背景;
· 景别构图:统一中近景、人物居中、相同画面留白比例与镜头高度;
· 人物:全片同一位年轻女白领(同一张脸、同一发型妆容着装);
· 商品:全片同一只白色保温杯(同一外形/配色/logo)。
电商竖屏 9:16 导演故事板,画面清晰。
```
### 第2镜 · 痛点
```
根据以下画面生成一个导演故事板分镜图,用于指导短视频生成。
【镜头功能】痛点
【画面】女白领从通勤包里拿出漏水的旧保温杯,纸巾擦被打湿的笔记本,表情懊恼
【统一画风 · 所有分镜必须严格一致,不可逐帧漂移】
· 风格:写实电商摄影棚实拍质感(photorealistic),禁止插画/线稿/漫画/3D 卡通;
· 布光:统一柔和影棚顺光,同一色温(暖白);
· 色彩:统一明亮干净的电商色彩分级,低饱和高级灰背景;
· 景别构图:统一中近景、人物居中、相同画面留白比例与镜头高度;
· 人物:全片同一位年轻女白领(同一张脸、同一发型妆容着装);
· 商品:全片同一只白色保温杯(同一外形/配色/logo)。
电商竖屏 9:16 导演故事板,画面清晰。
```
### 第3镜 · 卖点
```
根据以下画面生成一个导演故事板分镜图,用于指导短视频生成。
【镜头功能】卖点
【画面】女白领单手按下保温杯一键弹盖,杯口冒出热气,桌面横放杯子滴水不漏
【统一画风 · 所有分镜必须严格一致,不可逐帧漂移】
· 风格:写实电商摄影棚实拍质感(photorealistic),禁止插画/线稿/漫画/3D 卡通;
· 布光:统一柔和影棚顺光,同一色温(暖白);
· 色彩:统一明亮干净的电商色彩分级,低饱和高级灰背景;
· 景别构图:统一中近景、人物居中、相同画面留白比例与镜头高度;
· 人物:全片同一位年轻女白领(同一张脸、同一发型妆容着装);
· 商品:全片同一只白色保温杯(同一外形/配色/logo)。
电商竖屏 9:16 导演故事板,画面清晰。
```
### 第4镜 · CTA
```
根据以下画面生成一个导演故事板分镜图,用于指导短视频生成。
【镜头功能】CTA
【画面】女白领手持保温杯对镜头微笑展示,画面右下角出现购物车引导点击
【统一画风 · 所有分镜必须严格一致,不可逐帧漂移】
· 风格:写实电商摄影棚实拍质感(photorealistic),禁止插画/线稿/漫画/3D 卡通;
· 布光:统一柔和影棚顺光,同一色温(暖白);
· 色彩:统一明亮干净的电商色彩分级,低饱和高级灰背景;
· 景别构图:统一中近景、人物居中、相同画面留白比例与镜头高度;
· 人物:全片同一位年轻女白领(同一张脸、同一发型妆容着装);
· 商品:全片同一只白色保温杯(同一外形/配色/logo)。
电商竖屏 9:16 导演故事板,画面清晰。
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 976 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB