# 资产层与素材套 —— 一套素材只做一次的那部分

一套画面素材 + 它的一份 `配置.js` = 一个**素材套**，一次备齐、之后所有单元复用，单元管线里不碰可灵。基础素材资产由用户在制作前准备并导入；素材可来自**可灵（Kling）首尾帧**：片头视频 + 背景循环 + 锁定的人物参考图。

素材套放在 skill 内，结构统一为 **`SKILL/assets/<书名>/<素材id>/`**——一套素材一个 id 文件夹，画面素材和它的 `配置.js` 同住；一书一套就是书目录下只有一个 id 文件夹，多套就是多个（素材解析规则见 SKILL.md ⓪）。渲染管线按 `分镜.assets`（即 `书名/素材id`）来取材，与产物放哪无关——每个单元的分镜永久记着自己用的哪套，旧单元随时可按原素材重渲。素材套已齐就不用走本文件；空着或缺件时，agent 停止并报告缺少制作前置资产。备齐前 `render-video.sh` 查不到素材会直接报错。

## 一、素材套六件套（落在 `SKILL/assets/<书名>/<素材id>/`）

| 文件 | 是什么 | 怎么来 |
|---|---|---|
| `片头.mp4` | 开场视频：主讲人入场 → 落座 → 卷轴展开。不含章号、不含经文（章号靠 TTS 念、经文靠 renderer 填），全书复用 | 可灵首尾帧 |
| `底板.png` | 课件底板静帧 = 片头的最后一帧（卷轴留白、无字） | 取片头尾帧 |
| `背景循环.mp4` | 正文背景：整张底板「会呼吸」的循环（主体静、空气动） | 可灵首尾帧 |
| `配置.js` | 这套素材的参数单一来源：看板几何、配色、`scrollReadyMs`、`introVideoMs`、嗓音 | 配置台可视化生成，需用户 review 和微调（见「四」） |
| `片头首帧.png` | 片头第一帧（主讲人由远而来） | 可灵生成 |
| 人物参考图 `正/侧/背.png` | 锁定主讲人形象，喂可灵保持跨镜一致 | 可灵生成后锁定 |

文字配色由 renderer 定，资产层只管「画面气韵」、不画字。

## 二、片头 = 可灵首尾帧（把两头钉死，可灵只补中间）

- **尾帧 = 课件底板**：画面里留一块空白看板区（道德经的成例是中右一幅卷轴），看板留白无字、内容后期由 renderer 填；主讲人位置与整体构图**随素材设计自由**，不必照搬道德经。
- **看板几何是量出来的，不是规定出来的**：底板定稿后在初始化里把看板 bbox 写进 `配置.js`，renderer 按它布局——构图随素材自由。
- **首帧 = 主讲人由远入场**（给看板区留出生长空间）。
- **运动**：入场 → 落座 → 抬手、卷轴展开 → 定格尾帧。
- **关键：首尾帧是形变插值，不是导演调度**——首 / 尾差越小，可灵补得越干净，所以首帧背景要尽量贴尾帧。
- **接缝**：片头尾帧 ≈ 正文底板，播完淡出即无缝接上正文。

## 三、背景循环 = 整板呼吸感（首=尾，天然成环）

- **做法**：可灵首尾帧，首帧 = 尾帧 = 底板，逼运动「荡出去再回到原点」→ 首尾严丝合缝。
- **主体静、空气动**：主讲人入定、卷轴始终空白平整；只有天地气韵流转——雾气漫移、青烟轻卷、飞鸟盘旋、夕照明灭。
- **易碎细节**：定向运动（烟上升、鸟振翅）难回原点，写成「打卷即散 / 振翅又安歇」自收尾；飞鸟写「盘旋」别「横掠出框」。
- **三处接缝同帧**：循环首帧 = 片头尾帧 = 底板 → 全程无跳帧。
- **弃案**：让主讲人起手回应每镜内容——通用素材对不准、维护重，已废；指向交给卷轴点亮。

## 四、配置.js：跟素材绑定的参数都在这，用配置台可视化定

`SKILL/assets/<书名>/<素材id>/配置.js` 是这套素材参数的**单一来源**（一套素材一份配置），gen-tts（默认嗓 / 语速）、align（T0 校验线）、renderer（几何 / 配色 / 淡出）都读它。字段：

| 字段 | 是什么 |
|---|---|
| `scrollReadyMs` | 片头里看板就绪的时刻(ms)，T0 截止线 |
| `introVideoMs` | 片头时长(ms)，仅预览淡出用（渲染用 ffprobe 实测） |
| `voice` / `rate` | 这套素材的默认嗓与语速（作者第一人称 → 跟着主讲人形象走） |
| `board` | 看板 bbox `{left,top,width,height}`（% of 16:9 画面，按底板量定） |
| `titlePos` / `subtitle` | 章名小字位置 / 字幕带（左右内缩、离底） |
| `palette` | 配色：`paper/ink/ink2/accent/gold`，为看板材质上的对比度而设 |
| `tplVars` | 模板字体字号微调（CSS 变量覆盖，如 `"--jing-size":"2.5cqw"`） |

这些参数用配置台初始化：

```bash
node SKILL/dist/cli/init-studio.js <书名>/<素材id>   # 默认 http://localhost:8765
```

标准初始化流程：用户先导入基础素材，agent 预填 `配置.js` 初稿并启动配置台，用户在浏览器里 review 看板框、字幕带、标题位置、配色、模板字号和 `scrollReadyMs`，点「保存固化」后定稿。agent 不得跳过配置台自行定稿。完成 `配置.js` 后，后续单元视频制作由 agent 直接执行。

## 五、水印

原型阶段，可灵生成的素材自带水印，保留、不去除。成片因此带水印，是已知且接受的。

## 六、新素材套上线清单

0. 用户确定素材 id（描述这套素材的名字，如 `水墨卷轴`），建立 `SKILL/assets/<书名>/<素材id>/`。
1. 用户导入主讲人参考图（可灵）→ 三视图入库。
2. 用户导入 `片头.mp4` → agent 或脚本取尾帧存 `底板.png`、首帧存 `片头首帧.png`。
3. 用户导入 `背景循环.mp4`（首=尾=底板）。
4. 初始化：agent 看素材预填参数 → `node SKILL/dist/cli/init-studio.js <书名>/<素材id>` 起配置台 → 用户 review、微调并保存固化 `配置.js`（见「四」）。
5. 齐活（至少 片头 / 底板 / 背景循环 / 配置 四件）。之后每个单元只走单元管线（SKILL.md），不再碰可灵。
