关于 seam-craft
seam-craft 说明 PLV 场景转场的渲染前提和主时间线机制,面向使用片段包装器转场的实现者,涵盖合成行为及避免白闪的方法。
主要功能
- 01舞台不透明背景要求
- 02转场注入器的时间线行为
- 03片段包装器的重叠与轨道分配
- 04模板占位符参考
- 05渲染与 lint 指引
适用场景
- 01避免场景剪辑处出现白闪
- 02了解转场如何注入时间线
- 03为重叠转场准备片段包装器
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ heygen-com/ hyperframes --skill seam-craft安装后在 Claude Code 中输入/seam-craft确认已加载。
详细介绍
Seam Craft — 场景间转场的渲染前提
这是 PLV 场景间衔接的渲染正确性准则:让任何转场都能正确合成的前提条件和主时间轴机制,与选择了哪种具体转场无关。各转场的目录(交叉淡化、推入滑动、穿越缩放、曲线裁切等)位于转场注册表中;本页是所有转场共同遵循的底层准则。
本准则所管辖的转场均为Tier-B-ready:只对两个场景的剪辑包装器(#el-<sid>)应用纯变换/不透明度/滤镜,不注入叠加层 DOM,也不要求场景间相互配合。叠加层类别(交错方块、百叶窗、漏光、网格溶解、烧页效果)和着色器转场将在后续阶段处理。
舞台渲染前提(防白闪)
一些模板会出现两个包装器的不透明度之和小于 1 的时间窗口(曲线裁切的中间窗口切换、穿越缩放的 0.15 下限、普通交叉淡化的幂曲线凹陷)。在此窗口期间,包装器后方的任何内容都会透出。如果组装后的 index.html 中 #root 没有不透明背景,渲染器就会将不透明度凹陷部分合成到默认的白色页面上,从而在每个接缝处产生白闪,在暗色影片中尤为刺眼(修复前在两次 Spotify 运行中观察到此问题)。
组装器必须为舞台绘制背景: #root { background: var(--canvas-deep, var(--canvas, #000)) } — assemble-index.mjs 现在会输出此设置;其他任何使用这些模板的程序也必须保证这一点。
注入器如何应用转场
在场景 i(from)与场景 i+1(to)之间的 break 边界处,注入器会:
- 将
#el-<from>包装器的data-duration延长duration_s(保持其最后一帧 — 已验证:core/src/runtime/init.ts:1393-1410的 external-slot 分支)。 - 将
#el-<to>包装器的data-start提前duration_s(创建重叠窗口)。 - 将所有剪辑的
data-track-index重新分配为 0/1 乒乓序列,使两个重叠的包装器不会共用同一轨道(同轨道重叠不合法 —core/src/lint/rules/composition.ts)。较高轨道会合成在上方。 - 在
T = overlap-start处将gsap_template写入window.__timelines["main"]。
原型渲染已验证(2026-05-31):主时间轴上的包装器补间会被定位并渲染(不会与子合成自身暂停的时间轴重复定位 — 运行时会分别驱动两者);延长后的包装器会保持场景 i 的最后一帧;轨道较高的入场包装器会合成在出场包装器上方并与之混合。
模板占位符
注入器会替换每行 gsap_template 中的以下标记:
| 标记 | 含义 |
|---|---|
__OLD__ | "#el-<from>" — 出场剪辑包装器选择器(带引号) |
__NEW__ | "#el-<to>" — 入场剪辑包装器选择器(带引号) |
__T__ | 重叠开始时间,单位为秒(主时钟) |
__DUR__ | 此边界的 duration_s |
__DX__ | 方向类型的水平位移:-1920(LEFT)/1920(RIGHT) |
__DY__ | 垂直位移:-1080(UP)/1080(DOWN) |
__ORIGIN_OUT__ / __ORIGIN_IN__ | squeeze 的 transformOrigin 配对 |
主时间轴上的 filter / scaleX / transformOrigin 符合 lint 规则(已验证:core/src/lint/rules/gsap.ts 没有按属性设置白名单,其检查范围限定于 data-composition-id 区间;x/y/scale/rotation/opacity 白名单仅是一个 scene-worker 提示词规则 — 不适用于 index.html)。