cuboid-carousel
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCuboid Carousel
长方体轮播
Rounded, bevelled cuboids carrying card content fly in from the right as one rigid group, cruise with a per-cuboid rotation stagger, decelerate to a hero hold, then exit left. Spacing is derived from the cuboid dimensions and the largest reachable X half-extent, so cuboids can never overlap. Forty variables carry the original DialKit schema: geometry, materials, lights, shadows, backdrop, camera and every segment duration and easing. Cards come from the built-in list or a JSON variable.
Composition id: . Duration 6.666666666666667 s at 30 fps, 1920×1080.
cuboid-carousel携带卡片内容的圆角斜边长方体作为一个刚性整体从右侧飞入,以每个长方体错开旋转的方式巡航,减速到主卡片停留,然后从左侧退出。间距由长方体尺寸和最大可达到的 X 半范围推导而来,因此长方体永远不会重叠。四十个变量承载了原始 DialKit 模式:几何体、材质、灯光、阴影、背景、相机以及每个片段的持续时间和缓动。卡片来自内置列表或 JSON 变量。
合成 ID:。时长 6.666666666666667 秒,30 fps,1920×1080。
cuboid-carouselFiles
文件
- (38 KB)
cuboid-carousel.html - (1 KB)
assets/Three-LICENSE.txt - (5 KB)
assets/addons/environments/RoomEnvironment.js - (36 KB)
assets/addons/utils/BufferGeometryUtils.js - (593 KB)
assets/cuboid-motion.js - (128 KB)
assets/gsap-3.14.2.min.js - (1 KB)
assets/GSAP-NOTICE.txt - (554 KB)
assets/three.core.min.js - (468 KB)
assets/three.module.min.js
- (38 KB)
cuboid-carousel.html - (1 KB)
assets/Three-LICENSE.txt - (5 KB)
assets/addons/environments/RoomEnvironment.js - (36 KB)
assets/addons/utils/BufferGeometryUtils.js - (593 KB)
assets/cuboid-motion.js - (128 KB)
assets/gsap-3.14.2.min.js - (1 KB)
assets/GSAP-NOTICE.txt - (554 KB)
assets/three.core.min.js - (468 KB)
assets/three.module.min.js
Install
安装
Install with ; by default the files above land under . Then mount the block from the host :
npx hyperframes add cuboid-carouselcompositions/cuboid-carousel/index.htmlhtml
<div
data-composition-id="cuboid-carousel"
data-composition-src="compositions/cuboid-carousel/cuboid-carousel.html"
data-start="0"
data-duration="6.666666666666667"
data-track-index="1"
data-width="1920"
data-height="1080"
></div>Render with custom values by targeting the composition file directly:
sh
npx --yes hyperframes@0.8.12 render 'compositions/cuboid-carousel/cuboid-carousel.html' --variables '{"cardsJson":"","heroCard":4}'使用 安装;默认情况下上述文件会放置在 下。然后从宿主 挂载该块:
npx hyperframes add cuboid-carouselcompositions/cuboid-carousel/index.htmlhtml
<div
data-composition-id="cuboid-carousel"
data-composition-src="compositions/cuboid-carousel/cuboid-carousel.html"
data-start="0"
data-duration="6.666666666666667"
data-track-index="1"
data-width="1920"
data-height="1080"
></div>通过直接指定合成文件,使用自定义值渲染:
sh
npx --yes hyperframes@0.8.12 render 'compositions/cuboid-carousel/cuboid-carousel.html' --variables '{"cardsJson":"","heroCard":4}'Variables
变量
Read at runtime via ; declared on the composition root as (single-quoted attribute, plain JSON).
window.__hyperframes.getVariables()data-composition-variables| id | type | default | label / range |
|---|---|---|---|
| string | | Content · Cards JSON (optional, see CARDS in source) |
| number | | Content · Hero card (1-based) 1–12 step 1 |
| number | | Content · Repeating card count 1–12 step 1 |
| number | | Layout · Extra gap between cuboids 0–1.5 step 0.005 |
| number | | Cuboid · Width 0.3–5 step 0.01 |
| number | | Cuboid · Height 0.3–6 step 0.01 |
| number | | Cuboid · Thickness (depth) 0.02–2 step 0.01 |
| number | | Cuboid · Corner radius 0–0.6 step 0.005 |
| number | | Cuboid · Bevel size (edge chamfer) 0–0.3 step 0.001 |
| number | | Cuboid · Bevel thickness 0–0.3 step 0.001 |
| number | | Cuboid · Smoothness (segments) 1–32 step 1 |
| color | | Cuboid · Body colour |
| number | | Cuboid · Roughness 0–1 step 0.01 |
| number | | Cuboid · Metalness 0–1 step 0.01 |
| number | | Hero · Isolated scale 1–1.6 step 0.01 |
| number | | Hero · Face light intensity 0–2 step 0.05 |
| number | | Hero · Exit X rotation degrees -720–720 step 1 |
| number | | Hero · Exit Y rotation degrees -720–720 step 1 |
| number | | Hero · Exit Z rotation degrees -720–720 step 1 |
| number | | Lights · Ambient intensity 0–4 step 0.01 |
| color | | Lights · Ambient colour |
| number | | Lights · Top rig intensity 0–12 step 0.05 |
| color | | Lights · Top rig colour |
| number | | Lights · Bottom rig intensity 0–12 step 0.05 |
| color | | Lights · Bottom rig colour |
| number | | Lights · Key rig intensity 0–12 step 0.05 |
| color | | Lights · Key rig colour |
| number | | Shadows · Softness at map size 2048 0–50 step 0.5 |
| number | | Shadows · Map size 512–4096 step 256 |
| color | | Background · Colour |
| number | | Camera · Initial Field of view 10–90 step 0.5 |
| number | | Camera · Initial X -20–20 step 0.05 |
| number | | Camera · Initial Y -20–20 step 0.05 |
| number | | Camera · Initial Z (distance) -20–50 step 0.1 |
| number | | Camera · Settle frame (30 fps) 20–90 step 1 |
| number | | Camera · Handheld hold strength 0–1 step 0.05 |
| number | | Camera target · Field of view 10–90 step 0.5 |
| number | | Camera target · X -20–20 step 0.05 |
| number | | Camera target · Y -20–20 step 0.05 |
| number | | Camera target · Z 2–50 step 0.1 |
在运行时通过 读取;在合成根元素上以 属性声明(单引号属性,纯 JSON)。
window.__hyperframes.getVariables()data-composition-variables| id | 类型 | 默认值 | 标签 / 范围 |
|---|---|---|---|
| string | | 内容 · 卡片 JSON(可选,见源码中的 CARDS) |
| number | | 内容 · 主卡片(1基)1–12 步长 1 |
| number | | 内容 · 重复卡片数量 1–12 步长 1 |
| number | | 布局 · 长方体间额外间隙 0–1.5 步长 0.005 |
| number | | 长方体 · 宽度 0.3–5 步长 0.01 |
| number | | 长方体 · 高度 0.3–6 步长 0.01 |
| number | | 长方体 · 厚度(深度)0.02–2 步长 0.01 |
| number | | 长方体 · 圆角半径 0–0.6 步长 0.005 |
| number | | 长方体 · 斜边大小(边缘倒角)0–0.3 步长 0.001 |
| number | | 长方体 · 斜边厚度 0–0.3 步长 0.001 |
| number | | 长方体 · 平滑度(分段数)1–32 步长 1 |
| color | | 长方体 · 主体颜色 |
| number | | 长方体 · 粗糙度 0–1 步长 0.01 |
| number | | 长方体 · 金属度 0–1 步长 0.01 |
| number | | 主卡片 · 单独缩放 1–1.6 步长 0.01 |
| number | | 主卡片 · 正面光强度 0–2 步长 0.05 |
| number | | 主卡片 · 退出 X 旋转角度 -720–720 步长 1 |
| number | | 主卡片 · 退出 Y 旋转角度 -720–720 步长 1 |
| number | | 主卡片 · 退出 Z 旋转角度 -720–720 步长 1 |
| number | | 灯光 · 环境光强度 0–4 步长 0.01 |
| color | | 灯光 · 环境光颜色 |
| number | | 灯光 · 顶部装置强度 0–12 步长 0.05 |
| color | | 灯光 · 顶部装置颜色 |
| number | | 灯光 · 底部装置强度 0–12 步长 0.05 |
| color | | 灯光 · 底部装置颜色 |
| number | | 灯光 · 主光装置强度 0–12 步长 0.05 |
| color | | 灯光 · 主光装置颜色 |
| number | | 阴影 · 柔化度(地图尺寸 2048)0–50 步长 0.5 |
| number | | 阴影 · 地图尺寸 512–4096 步长 256 |
| color | | 背景 · 颜色 |
| number | | 相机 · 初始视野 10–90 步长 0.5 |
| number | | 相机 · 初始 X -20–20 步长 0.05 |
| number | | 相机 · 初始 Y -20–20 步长 0.05 |
| number | | 相机 · 初始 Z(距离)-20–50 步长 0.1 |
| number | | 相机 · 稳定帧(30 fps)20–90 步长 1 |
| number | | 相机 · 手持稳定强度 0–1 步长 0.05 |
| number | | 相机目标 · 视野 10–90 步长 0.5 |
| number | | 相机目标 · X -20–20 步长 0.05 |
| number | | 相机目标 · Y -20–20 步长 0.05 |
| number | | 相机目标 · Z 2–50 步长 0.1 |
Runtime contract
运行时约定
- One paused GSAP timeline registered as .
window.__timelines["cuboid-carousel"] - Re-syncs on the CustomEvent; every frame is a closed-form function of time (seeded PRNG only, no rAF loops, no Date.now).
hf-seek - Renderer: WebGL, GSAP, Canvas 2D, PMREM, Shadow maps. Budget roughly 350 MB per live instance; run one at a time.
- External runtime dependencies: ,
./assets/three.module.min.js../assets/addons/ - Web fonts from Google Fonts: Inter.
- 一个暂停的 GSAP 时间轴注册为 。
window.__timelines["cuboid-carousel"] - 在 自定义事件上重新同步;每一帧都是时间的闭式函数(仅使用种子化 PRNG,无 rAF 循环,无 Date.now)。
hf-seek - 渲染器:WebGL、GSAP、Canvas 2D、PMREM、阴影贴图。每个实时实例预算约 350 MB;请一次运行一个。
- 外部运行时依赖:、
./assets/three.module.min.js。./assets/addons/ - 来自 Google Fonts 的 Web 字体:Inter。
Editing rules (from the source project)
编辑规则(来自源项目)
- Keep a single-quoted attribute with plain
data-composition-variablesJSON. Never save it through Studio's Design panel." - Do not put in static markup; create it at runtime.
<canvas> - Keep every visual state a function of t; seek-safety is what makes the block renderable.
- 保持 为单引号属性,使用纯
data-composition-variablesJSON。永远不要通过 Studio 的设计面板保存它。" - 不要将 放在静态标记中;在运行时创建它。
<canvas> - 保持每个视觉状态都是 t 的函数;可寻址安全性是该块可渲染的关键。