video-flow-toon/data/skills/references/derive-assets-extraction.md
2026-03-26 00:42:45 +08:00

6.2 KiB
Raw Blame History

衍生资产提取(从剧本 + 资产 → 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 来源优先级

  1. 剧本中明确描写 — 最高优先级,剧本中直接描写了资产的不同状态
  2. 角色描述暗示 — 中优先级desc中暗示存在状态变化但剧本未直接描写
  3. 合理推测 — 低优先级,根据剧情发展合理推测的状态变化

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. 向用户汇报提取结果概要