6.2 KiB
6.2 KiB
衍生资产提取(从剧本 + 资产 → derive[])
本指南只做一件事: 根据剧本内容和已有资产,为每个资产提取在剧情中出现的不同状态/变体(derive)。
核心概念:derive 是父资产的其他视觉状态,用于为后续图片生成提供参考。 只衍生图片模型无法仅凭提示词自行处理的视觉差异,如服装、形态、伤势、物件状态等。 表情、情绪、简单动作等模型可自行控制的内容不需要衍生。
- 角色资产 → 不同服装、伤势外观、形态变化等状态变体
- 道具资产 → 不同物理状态变体(破损、发光、打开等)
- 场景资产 → 不同时间/氛围状态变体(白天、夜晚、废墟等)
1. 输入与输出
输入
- 剧本文本(字符串),通过
get_flowData("script")获取 - 已有资产列表(数组),通过
get_flowData("assets")获取
每个资产结构:
{
assetsId: string; // 资产唯一ID
name: string; // 资产名称
desc: string; // 资产描述
src: string; // 资产图片URL
derive?: Array<{ // 已有衍生状态(可能为空)
assetsId: string;
name: string;
desc: string;
src: string;
}>;
}
输出
对每个需要衍生状态的资产,调用 set_flowData 写入 derive。通过 key 指定 lodash 路径,只传最小更新数据。
// 为索引 0 的资产设置 derive
set_flowData({
key: "assets[0].derive",
value: [
{ name: "状态名", desc: "状态描述" }
]
})
derive 元素格式:
{
name: string; // 状态名称(1~20字)
desc: string; // 状态描述(1~100字)
}
2. 衍生状态类型
derive 代表同一资产在不同剧情场景下的视觉状态变体:
角色资产的衍生状态
| 类型 | 说明 | 示例 |
|---|---|---|
| 服装变体 | 角色穿着不同服饰的状态 | 战甲状态、便装状态、礼服状态 |
| 伤势/身体状态 | 角色身体发生显著外观变化 | 重伤缠绷带、灵力暴走纹路蔓延、白发苍老 |
| 形态变化 | 角色外形产生根本变化 | 魔化形态、兽化、幼年状态 |
| 特殊装扮 | 伪装或临时装束 | 蒙面伪装、乞丐装扮 |
不需要衍生的状态:表情、情绪、简单动作姿态等图片模型可通过提示词直接控制的内容,无需单独建立衍生资产。
道具/物件资产的衍生状态
| 类型 | 说明 | 示例 |
|---|---|---|
| 损坏状态 | 物件受损的外观 | 令牌破损、剑身断裂 |
| 激活/发光状态 | 物件被触发后的外观 | 令牌发光、法印激活 |
| 变形状态 | 物件形态发生变化 | 玉佩碎裂、卷轴展开 |
场景资产的衍生状态
| 类型 | 说明 | 示例 |
|---|---|---|
| 时间变体 | 同一场景不同时段 | 夜晚的宗门、黄昏的战场 |
| 破坏状态 | 场景受到破坏后 | 废墟状态、火烧后 |
| 氛围变体 | 场景氛围发生变化 | 战后的宗门大殿、雨中的山门 |
3. 提取原则
3.1 核心理解
- derive 不是与父资产相关的独立物件(如角色的武器、坐骑)
- derive 是父资产自身在不同剧情节点的视觉状态变体,用于为图片生成提供参考图
- 每个 derive 应该能被理解为"父资产名 + 状态名"(如"凌玄·重伤缠绷带"、"青云令·破损")
- 不要衍生图片模型可通过提示词直接控制的内容(表情、情绪、简单动作姿态等)
3.2 来源优先级
- 剧本中明确描写 — 最高优先级,剧本中直接描写了资产的不同状态
- 角色描述暗示 — 中优先级,desc中暗示存在状态变化但剧本未直接描写
- 合理推测 — 低优先级,根据剧情发展合理推测的状态变化
3.3 提取规则
- 只提取与默认状态有明显视觉差异、且图片模型无法仅凭提示词自行控制的衍生状态
- 已存在于资产
derive数组中的状态不要重复提取 - 每个资产的衍生状态数量建议 1~5个,宁缺勿滥
desc字段格式:[与默认态的差异] · [视觉特征] · [出现场景/触发条件]- 衍生状态命名应能直接表达"这是什么状态",而非"这是什么东西"
3.4 命名规范
- 名称简洁,2~6个字
- 体现视觉外观变化而非情绪动作,如"重伤缠绷带"而非"悲伤流泪"
- 如果剧本中有明确的状态描写,直接提炼为状态名
4. 示例
输入剧本片段
苏晚卿冷笑:「还有你当宝贝的青云令」
「若不是我趁你养伤时,偷偷在令牌上动了手脚」
△ 凌玄气血逆流,再次一口鲜血喷出
△ 青云令表面灵纹暗淡,隐约可见细微裂痕
输入资产
[
{ "assetsId": "char-1", "name": "凌玄", "desc": "男主 · 青云宗宗主 · 重伤废修", "derive": [] },
{ "assetsId": "char-2", "name": "苏晚卿", "desc": "女配 · 凌玄未婚妻 · 背叛者", "derive": [] },
{ "assetsId": "item-1", "name": "青云令", "desc": "宗主信物 · 青玉材质 · 灵纹浮刻", "derive": [] }
]
输出
分别对每个需要衍生的资产调用 set_flowData,通过 key 精确定位:
// 凌玄(索引 0)
set_flowData({
key: "assets[0].derive",
value: [
{ name: "重伤缠绷带", desc: "气血逆流后 · 胸口缠满绷带面色苍白 · 养伤期间外观" },
{ name: "废修白发", desc: "灵力尽失 · 黑发变白面容憔悴 · 修为被废后常态" }
]
})
// 苏晚卿(索引 1)— 无需衍生,跳过
// 青云令(索引 2)
set_flowData({
key: "assets[2].derive",
value: [
{ name: "灵纹暗淡", desc: "被篡改后 · 灵纹失去光泽隐现裂痕 · 感应功能被破坏" },
{ name: "令牌发光", desc: "被激活时 · 灵纹亮起青色光芒 · 正常使用状态" }
]
})
## 5. 工具调用顺序
1. `get_flowData("script")` — 获取剧本内容
2. `get_flowData("assets")` — 获取已有资产列表
3. 分析剧本,为每个资产识别在剧情中出现的不同视觉状态
4. 对每个有衍生状态的资产调用 `set_flowData({ key: "assets[N].derive", value: derive数组 })` 保存
5. 向用户汇报提取结果概要