
seam-craft
热门场景间拼接的渲染正确性准则,适用于 HyperFrames 发布视频中的场景过渡——确保过渡在主时间线上正确合成的先决条件。在组装主时间线 / index.html 时加载;当剪切或交叉淡入淡出拼接处出现白色闪光(尤其在暗色影片上)时加载;在推理过渡不透明度下降为何透出时加载;或在验证重叠场景包装器如何混合的渲染端机制时加载。涵盖不透明舞台背景(#root 背景)白色闪光防护,以及注入器如何重叠包装器、保持最终帧、乒乓轨道、并将无 lint 错误的模板代码印刻到主时间线上。不包含每个过渡的目录——请参阅过渡注册表以获取单个过渡条目。
Render-correctness doctrine for scene-to-scene seams in HyperFrames launch videos — the prerequisites that make transitions composite correctly on the master timeline. Load when assembling the master timeline / index.html, when a white flash appears at a cut or crossfade seam (especially on dark films), when reasoning about why a transition opacity dip shows through, or when verifying the render-side mechanics of how overlapping scene wrappers blend. Covers the opaque stage-ground (#root background) white-flash guard and how the injector overlaps wrappers, holds final frames, ping-pongs tracks, and stamps lint-clean template code onto the master timeline. Does NOT contain the per-transition catalog — see the transition registry for individual transition entries.
Seam Craft — 场景间过渡的渲染先决条件
这是 PLV 场景间拼接的渲染正确性准则:使任何过渡正确合成的先决条件和主时间线机制,与具体选择哪个过渡无关。每个过渡的目录(交叉淡入淡出、推拉滑动、缩放穿越、切曲线等)位于过渡注册表中——本页面是支撑所有这些过渡的准则。
本准则管理的过渡是Tier-B-ready:在两个场景剪辑包装器(#el-<sid>)上使用纯 transform / opacity / filter,无需注入覆盖 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外部插槽分支)。 - 将
#el-<to>包装器的data-start提前duration_s(创建重叠窗口)。 - 将所有剪辑的
data-track-index重新分配为 0/1 乒乓,使两个重叠的包装器永远不会共享一个轨道(相同轨道重叠是非法的——core/src/lint/rules/composition.ts)。较高轨道合成在顶部。 - 将
gsap_template印刻到window.__timelines["main"]中,位置为T = overlap-start。
通过原型渲染验证(2026-05-31):主时间线包装器补间被寻址并渲染(不会与子合成自己的暂停时间线双重寻址——运行时独立驱动它们),扩展的包装器保持场景 i 的最终帧,较高轨道的传入包装器合成在传出包装器之上并与之混合。
模板占位符
注入器在每个 gsap_template 行中替换以下标记:
| 标记 | 含义 |
|---|---|
__OLD__ |
"#el-<from>" — 传出剪辑包装器选择器(带引号) |
__NEW__ |
"#el-<to>" — 传入剪辑包装器选择器(带引号) |
__T__ |
重叠开始时间(秒,主时钟) |
__DUR__ |
此边界的 duration_s |
__DX__ |
方向类型的水平移动:-1920(左)/ 1920(右) |
__DY__ |
垂直移动:-1080(上)/ 1080(下) |
__ORIGIN_OUT__ / __ORIGIN_IN__ |
squeeze 的 transformOrigin 对 |
filter / scaleX / transformOrigin 在主时间线上无 lint 错误(已验证:core/src/lint/rules/gsap.ts 没有按属性白名单,并将其检查范围限定到 data-composition-id 范围;x/y/scale/rotation/opacity 白名单仅是_场景工作器_提示规则——它不绑定 index.html)。





