249 lines
9.5 KiB
Markdown
249 lines
9.5 KiB
Markdown
# 分镜面板生成(从剧本 + 资产 → storyboard)
|
||
|
||
本指南只做一件事:
|
||
根据剧本内容和已有资产,将剧本拆分为一系列分镜,生成结构化的分镜面板。
|
||
|
||
> **核心概念**:分镜面板是将剧本转化为视觉画面的中间产物。每条分镜对应一个独立的画面/镜头,包含画面描述、镜头语言、台词、音效和关联资产等信息,用于后续图片生成。
|
||
|
||
## 1. 输入与输出
|
||
|
||
### 输入
|
||
|
||
- 剧本文本(字符串),通过 `get_flowData("script")` 获取
|
||
- 已有资产列表(数组),通过 `get_flowData("assets")` 获取
|
||
|
||
### 输出
|
||
|
||
调用 `set_flowData` 将分镜面板写入工作区:
|
||
|
||
```ts
|
||
set_flowData({
|
||
key: "storyboard",
|
||
value: [
|
||
{
|
||
id: 1,
|
||
title: "分镜标题",
|
||
description: "画面描述",
|
||
camera: "镜头语言",
|
||
duration: 3,
|
||
frameMode: "firstFrame",
|
||
prompt: "图片生成提示词",
|
||
lines: "台词文本",
|
||
sound: "音效描述",
|
||
associateAssetsIds: [0, 2]
|
||
},
|
||
// ...更多分镜
|
||
]
|
||
})
|
||
```
|
||
|
||
### 字段说明
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| `id` | number | 分镜序号,从 1 开始递增 |
|
||
| `title` | string | 分镜标题,简明概括画面内容(2~10字) |
|
||
| `description` | string | 画面描述,描述画面中发生的事件和视觉元素 |
|
||
| `camera` | string | 镜头语言,描述镜头角度、运动方式 |
|
||
| `duration` | number | 画面持续时长(秒),根据内容复杂度和节奏估算 |
|
||
| `frameMode` | enum | 帧模式:`firstFrame`(首帧)/ `endFrame`(尾帧)/ `linesSoundEffects`(台词音效帧) |
|
||
| `prompt` | string | 图片生成提示词,用于 AI 绘图的英文提示词 |
|
||
| `lines` | string \| null | 台词,该分镜中角色说的话,无台词填 `null` |
|
||
| `sound` | string \| null | 音效描述,该分镜中的环境音/音效,无音效填 `null` |
|
||
| `associateAssetsIds` | number[] | 关联资产的索引(对应 assets 数组的下标),标注该分镜画面中出现的资产 |
|
||
|
||
## 2. 分镜拆分原则
|
||
|
||
### 2.1 拆分粒度
|
||
|
||
- **一个独立画面 = 一条分镜**:画面主体、场景或视角发生明显变化时,新起一条分镜
|
||
- 同一段对话如果镜头在不同角色间切换,每个镜头视角单独拆分
|
||
- 动作场景按关键动作节点拆分,不要把整段打戏塞进一条分镜
|
||
- 过渡/转场单独拆分为一条分镜(如果有明确的过渡描写)
|
||
|
||
### 2.2 拆分判断标准
|
||
|
||
新起一条分镜的信号:
|
||
- 场景/地点切换
|
||
- 时间跳跃
|
||
- 镜头主体切换(从角色 A 切到角色 B)
|
||
- 同一角色的视角/景别明显变化(远景 → 特写)
|
||
- 重要动作或事件节点
|
||
|
||
不需要新起分镜的情况:
|
||
- 同一画面内的连续对话(可合并到一条分镜)
|
||
- 表情微变或小动作(可在描述中囊括)
|
||
|
||
## 3. 各字段填写指引
|
||
|
||
### 3.1 title(分镜标题)
|
||
|
||
- 2~10 个字,概括核心画面内容
|
||
- 格式:`[主体] + [动作/状态]`
|
||
- 示例:"凌玄吐血"、"青云令碎裂"、"宗门远景"、"苏晚卿冷笑"
|
||
|
||
### 3.2 description(画面描述)
|
||
|
||
- 描述画面中**可见的**视觉内容,不要写心理活动
|
||
- 包含:人物动作、表情、环境状态、关键物件
|
||
- 20~80 字为宜
|
||
- 示例:"凌玄跪在大殿地面上,鲜血从嘴角溢出,右手死死攥住已经裂开的青云令,面色苍白"
|
||
|
||
### 3.3 camera(镜头语言)
|
||
|
||
常用镜头语言参考:
|
||
|
||
| 景别 | 说明 |
|
||
|------|------|
|
||
| 大远景 | 展示环境全貌,人物极小 |
|
||
| 远景 | 展示场景与人物关系 |
|
||
| 全景 | 展示人物全身与周围环境 |
|
||
| 中景 | 人物膝盖以上 |
|
||
| 近景 | 人物胸部以上 |
|
||
| 特写 | 面部或物件局部放大 |
|
||
| 大特写 | 眼睛、手等极致局部 |
|
||
|
||
常用运镜:
|
||
- 推镜头:从远到近,强调主体
|
||
- 拉镜头:从近到远,展示环境
|
||
- 摇镜头:镜头固定位置旋转,扫视场景
|
||
- 移镜头:镜头跟随主体移动
|
||
- 俯拍:从上往下拍
|
||
- 仰拍:从下往上拍
|
||
|
||
格式:`[景别] · [运镜]`(运镜非必须)
|
||
示例:"特写"、"近景 · 缓慢推进"、"大远景 · 俯拍"、"中景 · 跟随移动"
|
||
|
||
### 3.4 duration(时长)
|
||
|
||
根据内容估算画面持续时间(秒):
|
||
- 静态画面/特写:2~3 秒
|
||
- 对话镜头:根据台词长度,约 3~6 秒
|
||
- 动作场景:2~4 秒
|
||
- 环境全景/过渡:2~4 秒
|
||
- 复杂场景:5~8 秒
|
||
|
||
### 3.5 frameMode(帧模式)
|
||
|
||
根据分镜内容选择合适的帧模式:
|
||
|
||
| 模式 | 使用场景 |
|
||
|------|----------|
|
||
| `firstFrame` | 最常见。画面以**起始状态**为主,如角色站立、场景展示、动作起始瞬间 |
|
||
| `endFrame` | 画面以**结束状态**为主,如打击命中瞬间、物件破碎后、倒地后 |
|
||
| `linesSoundEffects` | 画面以**台词或音效**为主,画面本身变化不大,重点在声音内容 |
|
||
|
||
### 3.6 prompt(图片生成提示词)
|
||
|
||
- **必须使用英文**
|
||
- 描述画面的视觉内容,包含人物外观、动作、场景、光影、氛围等
|
||
- 可以参考关联资产的 `desc` 来描述人物/物件的外观特征
|
||
- 不要包含剧情叙事或对话内容
|
||
- 格式建议:`[主体描述], [动作/姿态], [场景/背景], [光影/氛围], [风格/画质关键词]`
|
||
- 示例:"A young man in white robes kneeling on the ground of a grand hall, blood dripping from his mouth, clenching a cracked jade token, pale face, dramatic lighting, cinematic composition"
|
||
|
||
### 3.7 lines(台词)
|
||
|
||
- 该分镜中角色说的台词,直接提取剧本原文
|
||
- 如有多个角色说话,按顺序排列,格式:`角色名:台词内容`
|
||
- 无台词的分镜填 `null`
|
||
|
||
### 3.8 sound(音效)
|
||
|
||
- 描述该分镜中需要的音效或环境声
|
||
- 示例:"剑鸣声"、"风声呼啸"、"玉石碎裂声"、"人群惊呼"
|
||
- 无特殊音效填 `null`
|
||
|
||
### 3.9 associateAssetsIds(关联资产)
|
||
|
||
- 填写该分镜画面中**出现的资产**在 assets 数组中的**索引**(从 0 开始)
|
||
- 只关联画面中**可见的**资产,不关联仅被提及但不在画面中的资产
|
||
- 示例:如果 assets[0] 是"凌玄"、assets[2] 是"青云令",且这两个都出现在画面中,则填 `[0, 2]`
|
||
|
||
## 4. 示例
|
||
|
||
### 输入剧本片段
|
||
|
||
```
|
||
苏晚卿冷笑:「还有你当宝贝的青云令」
|
||
「若不是我趁你养伤时,偷偷在令牌上动了手脚」
|
||
△ 凌玄气血逆流,再次一口鲜血喷出
|
||
△ 青云令表面灵纹暗淡,隐约可见细微裂痕
|
||
```
|
||
|
||
### 输入资产
|
||
|
||
```json
|
||
[
|
||
{ "assetsId": "char-1", "name": "凌玄", "desc": "男主 · 青云宗宗主 · 白发修长 · 身着白色宗主袍" },
|
||
{ "assetsId": "char-2", "name": "苏晚卿", "desc": "女配 · 凌玄未婚妻 · 红衣 · 冷艳" },
|
||
{ "assetsId": "item-1", "name": "青云令", "desc": "宗主信物 · 青玉材质 · 灵纹浮刻" }
|
||
]
|
||
```
|
||
|
||
### 输出
|
||
|
||
```ts
|
||
set_flowData({
|
||
key: "storyboard",
|
||
value: [
|
||
{
|
||
id: 1,
|
||
title: "苏晚卿冷笑",
|
||
description: "苏晚卿站在大殿中,嘴角勾起冷笑,目光居高临下看着跪在地上的凌玄",
|
||
camera: "近景",
|
||
duration: 4,
|
||
frameMode: "linesSoundEffects",
|
||
prompt: "A beautiful woman in red robes standing in a grand hall, cold smirk on her face, looking down at someone, dramatic indoor lighting, cinematic",
|
||
lines: "苏晚卿:还有你当宝贝的青云令,若不是我趁你养伤时,偷偷在令牌上动了手脚",
|
||
sound: null,
|
||
associateAssetsIds: [1]
|
||
},
|
||
{
|
||
id: 2,
|
||
title: "凌玄吐血",
|
||
description: "凌玄气血逆流,猛然喷出一口鲜血,身体摇摇欲坠",
|
||
camera: "中景 · 缓慢推进",
|
||
duration: 3,
|
||
frameMode: "endFrame",
|
||
prompt: "A white_haired young man in white robes kneeling on the floor, spitting blood, trembling body, pale face, dramatic lighting, cinematic composition",
|
||
lines: null,
|
||
sound: "喷血声",
|
||
associateAssetsIds: [0]
|
||
},
|
||
{
|
||
id: 3,
|
||
title: "青云令裂痕",
|
||
description: "青云令表面灵纹逐渐暗淡,青玉上浮现细微裂痕",
|
||
camera: "大特写",
|
||
duration: 3,
|
||
frameMode: "firstFrame",
|
||
prompt: "Close_up of a jade token with glowing runes fading, fine cracks appearing on the surface, dark moody lighting, cinematic detail shot",
|
||
lines: null,
|
||
sound: "玉石碎裂声",
|
||
associateAssetsIds: [2]
|
||
}
|
||
]
|
||
})
|
||
```
|
||
|
||
## 5. 工具调用顺序
|
||
|
||
1. `get_flowData("script")` — 获取剧本内容
|
||
2. `get_flowData("assets")` — 获取已有资产列表
|
||
3. 分析剧本,按照拆分原则划分分镜,并为每条分镜填写所有字段
|
||
4. 调用 `set_flowData({ key: "storyboard", value: 分镜数组 })` 一次性保存完整分镜面板
|
||
5. 向用户汇报分镜面板概要(总共多少条分镜,覆盖的场景概括)
|
||
6. **询问用户是否需要生成分镜图片**:
|
||
- 如果用户确认,调用 `generate_storyboard_images({ script: 剧本文本 })` 生成分镜图
|
||
- 如果用户拒绝,跳过此步骤,流程结束
|
||
|
||
## 6. 注意事项
|
||
|
||
- 分镜数量与剧本长度成正比,一般每 50~100 字剧本对应 1~2 条分镜
|
||
- prompt 必须使用英文,且只描述视觉内容
|
||
- `associateAssetsIds` 使用资产数组的索引(0-based),确保索引不越界
|
||
- 如果剧本中出现了资产列表中不存在的角色/物件,仍要在分镜中描述,但不要在 `associateAssetsIds` 中编造不存在的索引
|
||
- 分镜的顺序应与剧本的叙事顺序一致
|
||
- 合理使用三种 frameMode,大部分分镜使用 `firstFrame`,涉及动作结果的用 `endFrame`,以对话为主的用 `linesSoundEffects`
|