Home / All Skills / Content & Media Creation / orbit-card
Content & Media Creation · heygen-com/hyperframes

orbit-card

A single feature card orbits a dot sphere on approved Blender camera motion. HyperFrames block, 1920×1080, 10s, 4 variables.

L4 High-Privilege · Graded auth & full auditV1 Commit-PinnedExecute CommandDual-pass Audit
Author heygen-comGitHub heygen-com/hyperframes ↗Stars 44283License Apache-2.0(仓库根 LICENSE = Apache License Version 2.0;块内随带第三方许可文本:three.js MIT、GSAP 标准许可、Geist/Archivo/Cormorant Garamond OFL 等)Commit d2f0bc7f34
Control levels describe skill capabilities and suggested control measures; they do not represent quality or safety certifications, nor do they dictate usability. Usage decisions rest entirely with users and administrators. Different agent hosts apply varying constraints; do not assume hosts provide automatic protection. Third-party skill copyrights belong to their original authors. Use at your own risk.

1How It Works & Mechanism

Output shot: A centered feature card (with a circular cutout framing the dot sphere) enters from the right (0.25–1.80s) → a hold segment with subtle vertical floating and depth drift → a full orbit around the sphere center (4.97–5.97s, using smoothstep) → exits to the left (7.35–8.55s).

registry/blocks/orbit-card/SKILL.md
One centred feature card with a circular cut-out framing a dot sphere. The card enters from the right (0.25–1.80 s), holds with a subtle bob and depth drift, orbits a full turn around the sphere's centre (smoothstep between 4.97 and 5.97 s), and exits left (7.35–8.55 s).
What is happening here: This is a "feature reveal" shot—the card is the subject being introduced, and the sphere serves as the background anchor.

The motion is not designed on the fly, but exported from an approved Blender rig and interpolated within the block: camera path and card F-curves are baked into constant tables at 30fps, with source file provenance recorded in the data.

registry/blocks/orbit-card/assets/orbit-motion.js
// Approved Blender motion, frame 1 = 0 seconds; generated from the existing saved-rig export. … fps: 30, … orbitFrames: [150, 180], … source: "orbit-card-motion-rig.blend",
What is happening here: Motion approved by art direction in Blender is frozen into data assets, and the code only handles interpolation—hence, motion in this block cannot be modified arbitrarily on the page.

Therefore, there are only 4 variables (title, description, accent color, orbit angle), and the orbit angle can be set to 180°/720° without touching keyframes.

registry/blocks/orbit-card/SKILL.md
Title, description, accent and the orbit angle are variables; 180° and 720° work without touching keys.
What is happening here: In contrast to other high-freedom blocks in this batch, this block intentionally locks down the motion, exposing only copy and brand color.

Structurally divided into three layers: composition (109 lines) handles only mounting and timeline; scene logic resides in assets/orbit-scene.js (WebGLRenderer and geometry); motion constants reside in assets/orbit-motion.js (59 KB); and the module receives variables as parameters because imported modules cannot access __hyperframes in this composition.

registry/blocks/orbit-card/assets/orbit-scene.js
// Built per call from the variables the mounting module passes in: an imported // module only sees the page's __hyperframes, not its composition's.
What is happening here: Clarifies HF scope details—variables are passed into createOrbitScene(V) by the mounting side, rather than the module reading globals on its own.

Explicit coordinate conversion is applied: Blender X/Y/Z → Three X/Z/−Y, with 100 raw CSS pixels = 1 rig unit, ensuring alignment between 2D typography and the 3D scene.

registry/blocks/orbit-card/assets/orbit-scene.js
// Blender X/Y/Z -> Three X/Z/-Y. 100 original CSS pixels = one rig unit.
What is happening here: The card is 2D DOM/CSS layout while the sphere is WebGL—unit conversion is the prerequisite for keeping both aligned in the same frame.

Input sanitization: orbit angle is validated as a finite number, accent color is checked against a 6-digit hex regex with fallback to default, and title/description are guarded with String fallbacks.

registry/blocks/orbit-card/assets/orbit-scene.js
const number = (v, fallback) => (Number.isFinite(Number(v)) ? Number(v) : fallback); … const accent = /^#[0-9a-f]{6}$/i.test(V.feature1Accent) ? V.feature1Accent : "#4cc9ff";
What is happening here: Out of the 4 variables, two are text and one is color; all undergo type and range sanitization before entering the scene.

seek is clamped within [0,10]; standalone preview uses ?play (and ?loop) query parameters to drive the timeline.

registry/blocks/orbit-card/orbit-card.html
timeline.totalTime(Math.max(0, Math.min(10, event.detail.time)), true); … if (query.has("play")) { timeline.repeat(query.has("loop") ? 999 : 0);
What is happening here: The block can be frame-by-frame seeked by a renderer or self-played in a standalone page for quick human inspection.

Fully local: three and gsap are bundled copies, and the Archivo font points to local ttf files via @font-face (regular/semibold, OFL); no http(s) references exist within this block directory.

registry/blocks/orbit-card/orbit-card.html
font-family: Archivo; font-weight: 400; src: url("assets/archivo-regular.ttf");
What is happening here: An offline-renderable block—even fonts bypass Google Fonts; three points to ./assets/ via importmap.

2Core Capabilities

01Single-card + dot sphere "feature reveal" shot (1920×1080, 10s)
02Blender-authorized baked motion data (30fps camera pose arrays + card F-curves, orbitFrames [150,180])
03Minimal copy interface with 4 variables (feature1Title ≤28 chars, feature1Desc ≤110 chars, feature1Accent, cardOrbitDegrees ±36000)
04Full orbit without keyframe modification (180°/720° reachable via variables)
05Local font typography (Archivo regular/semibold @font-face, OFL text bundled)
06Standalone preview: ?play autoplay, ?loop looping
07Studio-free rendering: render directly and override card copy

3External Dependencies

KindDependency / Endpoint
cliHyperFrames 官方 CLI(add / render)
packageGSAP 3.14.2(随块本地副本)
packagethree.js(随块本地副本)与场景模块
packageArchivo 字体(regular/semibold,OFL)

4Recommended Governance & Evidence

Suggested Controls for Safe Operation
For Agent Runtime
Graded/per-use authorization, sandbox recommended
For Administrators
Approval workflow, rollback support, full audit
Evidence & Triggers (File Paths & Excerpts)
  • scripts/: Executes local script or command: orbit-card.html (browser/renderer execution: mounts scene, registers paused timeline, hf-seek resync, ?play preview)
Audit Notes: Evaluation target = this block directory (SKILL.md + composition + scene module + motion data + bundled three/gsap + fonts): zero http(s) external links across the entire directory (even fonts are local), zero credential/env access, zero shell scripts, zero disk writes, and zero external data egress. The sole execution surface is the in-browser WebGL scene and ES modules, categorized as self-contained local executable content. Installation and rendering follow official CLI ecosystem. Graded blue accordingly.

5Second-Pass Verification

  • [ok] 变量数与声明一致性(frontmatter 自称 4 variables) — 脚本实测:SKILL.md 变量表 4 行、html data-composition-variables 解析出 4 项、frontmatter 写 4 —— 一致,为本批最小变量面。
  • [ok] 「approved Blender motion」声称的真实性 — assets/orbit-motion.js 首行注释与字段(fps: 30、frameStart: 1、orbitFrames: [150,180]、source: "orbit-card-motion-rig.blend")逐字命中;运动确为烘焙数据而非现场函数。
  • [ok] 零外链声称 — 对 orbit-card.html / orbit-scene.js / orbit-motion.js 做 http(s):// grep:零命中;脚本与字体全为 ./assets/ 相对路径。
  • [ok] registry-item 文件清单 vs 盘上文件 — 声明 12 个文件(含两份许可与两枚字体)全部存在于盘上,无远端 url 兜底。
  • [ok] 无随机/时钟依赖 — 本目录 grep Math.random / Date.now / requestAnimationFrame:零命中;运动全部来自常量表插值。
  • [ok] 时长一致性 — registry-item duration 10、html data-duration 10、MOTION.duration 10、SKILL.md 标题行 10s —— 四处一致。

6Verdict & Scenarios

  • Art-approved, reproducible motion
  • Zero external links, offline renderable
  • Extremely minimal interface, fast onboarding
  • Explicit conversion for 2D/3D alignment
  • Best for: Product feature reveal shots (10s, single card, finalized brand motion) where the goal is to produce video simply by swapping copy and accent color for product/marketing promos.
    Not for: Scenarios requiring custom choreography or multiple side-by-side cards; lightweight pipelines requiring all runtime assets served via CDN without bundling three.
    Install Agent-Ready
    ① Verified Mirror 2026-09-28
    Option A · Direct DownloadDownload orbit-card.tar.gz
    sha256: affb86a2ddee4335…
    Option B · Copy Guide for Agent
    install.json
    Agents automatically download and verify mirrors from this JSON guide.
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit d2f0bc7f34.