frost-sequence-camera-orbit
An orbiting camera follows an ice logo as it breaks apart, reforms into two text moments, and fades. HyperFrames block, 1920×1080, 22.5s, 216 variables.
1How It Works & Mechanism
Output footage: A complete 22.5s "ice sequence"—logo → first text segment → second text segment → shatter → fade out; the camera orbits around a stationary subject, easing into slower frontal passes for readability; the same particle field drives every transition.
A complete 22.5-second ice sequence: logo, first text, second text, breakup, and fade. The camera orbits the fixed objects with slower front-facing passes for reading. The same particle field carries each transition.
Parameter surface of 216 variables, the highest in this batch (including material IOR/thickness/absorption/backlight, particle flight gravity and turbulence, text mesh details, etc.).
HyperFrames block, 1920×1080, 22.5s, 216 variables. … | `textMeshDetail` | number | `4` | Type · Text mesh detail (1-4; higher = smoother deformation) 1–4 step 1 |
The composition id differs from the directory name: the directory/entry name is frost-sequence-camera-orbit, whereas the composition id is frost-sequence-rig (the timeline is also registered under this id); do not guess the id from the directory name when mounting and rendering.
data-composition-id="frost-sequence-rig" … One paused GSAP timeline registered as `window.__timelines["frost-sequence-rig"]`.
Renders via WebGPU/TSL instead of WebGL: assets/frost.js is an approximately 1.5 MB IIFE bundle (exposing window.Frost), built from src/frost.ts + WebGPU/TSL from three@0.185.1 and three-mesh-bvh.
// Bundle src/frost.ts (+ three@0.185.1 WebGPU/TSL, three-mesh-bvh) into one … classic IIFE at assets/frost.js exposing `window.Frost`.
Two pre-build self-checks: source-level TypeScript preflight, plus a "GPU-free WGSL shader compilation probe" used to catch shader flaws exposed only at compile time.
`build.mjs` runs two checks before bundling: a source-only TypeScript pass (`tools/compile-preflight.mjs`) and a headless shader-compile probe (`tools/run-shard-compile.mjs`) that generates the WGSL for one shard without a GPU, to catch a class of shader bug that only shows up at compile time.
WebGPU is a hard requirement: throws an error immediately if navigator.gpu or an adapter cannot be acquired.
if (!nav.gpu) throw new Error("Frost: navigator.gpu is unavailable (WebGPU required)"); … const adapter = await nav.gpu.requestAdapter().catch(() => null);
The logo can only come from project assets: the URL allowlist rejects any scheme or protocol-relative host, allowing only relative/root-relative paths and inline SVG data URIs, throwing an error immediately on violation.
A relative or root-relative path, or an inline SVG data URI: never a scheme or protocol-relative host. … if (!isProjectAssetUrl(url)) throw new Error("The logo must be a project asset path, not " + url);
Two binary assets (fragment atlas and ice inclusion texture) must be fetched during installation—registry-item includes static.heygen.ai URLs, and SKILL.md explicitly states "fetched from the CDN at install".
"url": "https://static.heygen.ai/hyperframes-oss/registry-assets/122961c82d240e47.png" … "url": "https://static.heygen.ai/hyperframes-oss/registry-assets/4bea3a8ab90c9527.png"
2Core Capabilities
3External Dependencies
| Kind | Dependency / Endpoint |
|---|---|
| cli | HyperFrames 官方 CLI(add / render;安装时按 registry-item 的 url 拉资产) |
| network | 装机期资产下载(官方 CDN,两个二进制 registry-assets) |
| package | three@0.185.1(WebGPU/TSL)+ three-mesh-bvh@0.9.14,已打进 assets/frost.js(均 MIT) |
| package | 源码重建依赖(仅改 source/ 时需要):esbuild、opentype.js、three 0.185.1、three-mesh-bvh、typescript |
| package | 随块字体(Geist Regular/SemiBold/Bold,OFL)与噪声/冰内含物贴图 |
4Recommended Governance & Evidence
- scripts/: Execute local scripts or commands: assets/frost.js (loaded and executed via <script src> in composition: WebGPU/TSL ice sequence runtime, exposes window.Frost)
- 网络端点: Declare external network access: Install time (executed by host CLI npx hyperframes add): static.heygen.ai/hyperframes-oss/regist
- 本地工作目录: File I/O and artifact output: Runtime (composition): no disk writes; canvas and WebGPU resources are allocated in memory and released upon dispose.
5Second-Pass Verification
- [ok] 变量数与声明一致性(frontmatter 自称 216 variables) — 脚本实测:SKILL.md 变量表 216 行、html data-composition-variables 解析出 216 项、frontmatter 写 216 —— 一致(本批最大变量表)。
- [ok] composition id 与目录名不一致 — SKILL.md 挂载片段与 Runtime contract 都写 frost-sequence-rig,html data-composition-id 亦为 frost-sequence-rig;目录/条目名是 frost-sequence-camera-orbit。非缺陷,但挂载时不可按目录名猜 id。
- [discrepancy] source/README 声称与分发内容的差异 — README 说 build.mjs 会产出 ../assets/frost.js 与 ../assets/motion.js,但 registry-item.json 的分发清单只含 frost.js,盘上 assets/ 也没有 motion.js —— 安装后那份「轻量 WebGL 编辑辅助」并不随块提供。
- [ok] localStorage 出现位置 — 仅见于 source/src/motion/editor.ts(getItem/setItem 包在 try/catch 里);该模块的产物 motion.js 未随块分发(见上一条),因此不构成安装后的实际接触面。
- [ok] 装机期 CDN 资产声称 — registry-item.json 中 shards-atlas.png 与 textures/ice-inclusions-generated.png 两项带 static.heygen.ai 的 url,盘上确实缺失,与 SKILL.md 的 fetched from the CDN at install 一致。
- [ok] WebGPU 硬门槛与构建自检 — src/frost.ts 中 navigator.gpu 缺失即 throw(并附 requestAdapter 的 null 分支);source/README.md 描述的两道构建前自检对应 tools/compile-preflight.mjs 与 tools/run-shard-compile.mjs(后者 import node:child_process 的 spawnSync)。
- [ok] 凭证扫描 — 对 SKILL.md / html / registry-item.json / source/ 扫描 process.env、secret、token、api_key、cookie、sudo、sandbox:无真实命中(仅 curl noise 之类注释文字误配)。
6Verdict & Scenarios
d873fafcf97f3f6b…