词汇表
本仓用词按下面的表对齐:每个词各指一件事,同义词混用是错误的第一个来源—— 模型把「帧率」当「播放速度」、把「层」当「画布」,后面的代码就必然偏离。
时间与采样
| 词 | 含义 | 常用错说法 |
|---|---|---|
| 推演 | 引擎按采样网格逐帧求值一段剧本的过程;帧是算出来的 | 录制、播放、渲染成片 |
| 出片 | 把推演结果交给 Exporter 编码/封装成产物 | 导出视频、录制 |
| 剧本 | Scene 链:一串首尾相接的幕,由 start / cutTo / transitionTo 组成 | 时间轴、时间表、工程 |
| 幕 | 链上一段有窗口长度的 Scene;start 建首幕,cutTo 追加下一幕 | 场景(易与画布混淆)、段 |
| 段 | 幕内的登记单元(step / loop / wait / par 分支) | 幕(两者不是一回事) |
| 窗口 | 幕的时长(毫秒) | 时长表、总长 |
| 总毫秒池 | 编译期账本:整条链的毫秒总和(重叠窗按占两段算、总长减去重叠) | 全片总长 |
| 帧窗池 | 编译期账本:每段按「窗口 × 该段有效帧率」贡献的采样点数量 | 帧数表 |
| 游标 cursor | 登记期的写入位置;只被 step / wait / par 推进 | 播放头、进度 |
| 采样密度 | fps:每秒求值多少次。它只决定画面采样得多密,不等于播放快慢 | 播放帧率 |
| 采样网格 | 各活跃单元自身网格点的并集;采样点=网格点,空窗不产帧 | 定帧率、均匀帧 |
| 单元有效帧率 | 三级继承:单元 fps > spawn 链 fps > RenderOptions.fps | 全片帧率 |
| 本单元帧号 | 单元内从 0 起的序号;f(n) = n × (1000 / 单元有效帧率) | 全片第 n 帧 |
生命周期
| 词 | 含义 | 常用错说法 |
|---|---|---|
| 链 / spawn 链 | 用 spawn(scene, { key }) 开出的一条并行场景链 | 子时间轴、图层 |
| 链头 | start 返回的那个 Scene——只有它能被 render / compute | 根节点、主场景 |
| key | spawn 实例键:同 key 再次 spawn 即续接同一实例 | 实例 id、名字 |
| 消亡窗口 | kill({ fadeOut }) / dispose({ fadeOut }) 给的淡出区间;窗口内仍逐帧求值,回调可读 disposing / disposeProgress | 动画时长、退场时间 |
| 保活 | forever 的实例活到总时间线尾,内容播完就循环重放 | 无限循环、常驻 |
| 状态 | step 回调返回的 FrameState,按 key 合并成全片一份状态包 | 全局变量、store |
契约角色
| 词 | 含义 | 常用错说法 |
|---|---|---|
| 契约 / 端口 | packages/contracts 里的 interface:只声明能力与语义承诺,零实现 | 接口文件、类型定义 |
| 适配器 | packages/infra 里对端口的实现(WebCodecs、WebAudio、Canvas2D、mp4 封装) | 插件、驱动 |
| 组合根 | packages/core/src/index.ts:唯一装配处,把引擎与注入的能力拼起来 | 入口文件、main |
| 帧载体 | 一帧的呈现结果:FrameBitmap(CPU 位图)或 FrameHandle(设备句柄,不承诺 CPU 可读) | 截图、图像 |
FrameSink | 帧交出点:每帧从这里离开渲染端 | 输出、下游 |
FrameSource / FrameHost | 帧像素来源:纯函数来源,或带 begin/frame/close 生命周期、可持有跨帧状态的宿主 | 渲染器、画布 |
Painter | FrameSource | FrameHost 的联合名 | 绘制函数 |
| 透明度声明 | RenderOptions.alpha:本次推演要交出哪种画布,"opaque"(缺省)或 "alpha";随 FrameHostInfo.alpha 交给宿主 | 渲染开关、透明模式 |
| 回读宿主 | createReadbackHost(inner):把交句柄的帧来源包成交位图的那一层;回读发生在帧来源侧,不在导出器里 | 截图、导出兜底 |
Exporter | 编码 + 封装的出片端口;impl 区分 frames / webcodecs / webm / apng / ffmpeg | 输出器、muxer |
| 产物 alpha 能力 | Exporter.alpha:这个实例的产物装不装得下 alpha;格式只是必要条件,同一种封装可建实例时选带不带 | 透明格式、透明开关 |
| alpha 侧通道 | WebM 里与颜色轨并行的一条只含关键帧的编码流,容器里落在 BlockAdditions;文件探针看到的是普通 yuv 像素格式 | 独立透明轨、额外通道 |
| 能力即上下文 | 运行期能做的事都挂在 ctx 上(ctx.audio / ctx.bus / ctx.spawn / ctx.random),没有全局单例 | 全局 API、单例 |
音频
| 词 | 含义 | 常用错说法 |
|---|---|---|
| 声音实例 / voice | 一次发声记录(AudioVoice):素材、起点、增益、包络、变速、总线 | 音频轨、声道 |
音源 clip | clip() 构造的强类型音频片段;synth() 是程序化音源 | 素材、音频文件 |
| 组合子 | gain / pan / loop / rate / warp / curve / fadeIn / fadeOut / ramp:在构造期校验并产出强类型值 | 配置项、参数对象 |
包络 Envelope | 声音局部时间上的分段线性乘子;折点纯数据,导出与预览同源 | 关键帧、自动化曲线 |
| 变速即变调 | rate / warp 的斜率同时是播放速率与音高倍率(磁带式重采样),不支持倒放 | 变速不变调 |
总线 bus | 音频图节点:增益、声像、静音、独奏与效果链;顶层母线恒为 master | 声道、分组 |
| 发送 / 侧链 | send(分路送进目标总线)、duck(A 响时压低 B) | 混响、压缩 |
| 参数轨迹 | BusAutomation:逐帧采样的总线参数点;运行期句柄改的是同一套参数面 | 动画、曲线 |
| 双端同源 | 预览与导出跑同一个混音内核,同一程序两端逐样本相同 | 预览仅供参考 |
确定性
| 词 | 含义 | 常用错说法 |
|---|---|---|
| 确定性 | 同一剧本 + 同一注入(fps/尺寸/seed/输入表/资产)→ 同一帧序列 | 结果稳定 |
| 帧指纹 | 一帧像素的摘要(frameFingerprint);确定性的判据是指纹序列,不是容器字节 | 文件哈希 |
| 连续性 | continuityReport 用相邻帧差值找尖峰,度量画面是否突兀 | 流畅度 |
| 随机是数据 | ctx.random 的序列由种子与调用顺序决定,是剧本的一部分 | 真随机、熵 |
容易读偏的说法
下表是初学者最容易写出的几种说法,列出它们为什么读不通:
| 说法 | 为什么读不通 | 对应词 |
|---|---|---|
| 录像 / 录制 / 录下来 | 引擎没有可采样的外部原件,帧是算出来的,没有「录」这个动作 | 推演、出片 |
| 全片总长 | 总长是编译产物;写死总长意味着绕开链结构 | 链算出的总时长 |
| 进度百分比 | 全片没有统一进度;进度只存在于单元内 | ctx.progress(localT / duration) |
| 第 n 帧共 N 帧 | 帧数是交出端才知道的量;剧本按时刻与采样密度表达 | ctx.frameIndex、ctx.localT |
| 按时间反查该画哪一镜 | 画面由当前活跃单元逐帧算出,不是查表 | 段随链推进、localT 内插值 |
| 自建时间表 / 时间轴 | 时间只由 start/cutTo/transitionTo 的窗口构成,并行另立时间表与引擎语义打架 | 链上叠窗口、spawn 链 |
「渲染」一词只作为 API 名(render)与通用动词保留;描述引擎行为时用「推演」。