Orbit Card
하나의 중앙 기능 카드가 원형 컷아웃으로 도트 구체를 프레이밍합니다. 카드는 오른쪽에서 진입하여(0.25–1.80초) 미세한 바운스와 깊이 드리프트를 유지하며, 구체 중심을 기준으로 한 바퀴 공전한 후(smoothstep, 4.97–5.97초) 왼쪽으로 퇴장합니다(7.35–8.55초). 카메라 경로와 카드 F-커브는 승인된 Blender 리그에서 30fps로 내보내져 보간되며, 구체는 자체 이동과 일정한 회전을 유지합니다. 제목, 설명, 강조 색상 및 공전 각도는 변수로 설정 가능합니다. 180°와 720°도 키를 건드리지 않고 작동합니다.
구성 ID: orbit-card. 길이 10초, 30fps, 1920×1080.
파일
orbit-card.html(3 KB)assets/Archivo-LICENSE.txt(4 KB)assets/Three-LICENSE.txt(1 KB)assets/archivo-regular.ttf(108 KB)assets/archivo-semibold.ttf(109 KB)assets/gsap-3.14.2.min.js(128 KB)assets/GSAP-NOTICE.txt(1 KB)assets/orbit-motion.js(59 KB)assets/orbit-scene.js(8 KB)assets/three.core.min.js(554 KB)assets/three.module.min.js(468 KB)
설치
npx hyperframes add orbit-card 명령어로 설치하며, 기본적으로 위 파일들은 compositions/orbit-card/ 디렉터리에 저장됩니다. 그런 다음 호스트 index.html에서 블록을 마운트합니다:
<div
data-composition-id="orbit-card"
data-composition-src="compositions/orbit-card/orbit-card.html"
data-start="0"
data-duration="10"
data-track-index="1"
data-width="1920"
data-height="1080"
></div>
커스텀 값으로 렌더링하려면 구성 파일을 직접 대상으로 지정합니다:
npx --yes [email protected] render 'compositions/orbit-card/orbit-card.html' --variables '{"feature1Title":"Always in sync","feature1Desc":"Changes reach every screen the moment they happen."}'
변수
런타임 시 window.__hyperframes.getVariables()를 통해 읽습니다. 구성 루트에 data-composition-variables 속성(작은따옴표 속성, 일반 JSON)으로 선언됩니다.
| id | 타입 | 기본값 | 레이블 / 범위 |
|---|---|---|---|
feature1Title | string | "Always in sync" | 카드 제목 최대 28자 |
feature1Desc | string | "Changes reach every screen the moment they happen." | 카드 설명 최대 110자 |
feature1Accent | color | "#4cc9ff" | 카드 강조 색상 |
cardOrbitDegrees | number | 360 | 카드 공전 각도 -36000~36000 단계 1 |
런타임 계약
window.__timelines["orbit-card"]에 등록된 하나의 일시정지된 GSAP 타임라인.hf-seekCustomEvent에 재동기화됨. 모든 프레임은 시간의 닫힌 함수입니다(시드된 PRNG만 사용, rAF 루프 없음, Date.now 없음).- 렌더러: GSAP.
- 외부 런타임 종속성: 없음(로컬에서 제공).
- 로컬 폰트: assets/archivo-regular.ttf, assets/archivo-semibold.ttf.
편집 규칙 (소스 프로젝트 기준)
data-composition-variables는 작은따옴표 속성으로 유지하고 일반"JSON을 사용합니다. Studio의 디자인 패널을 통해 저장하지 마십시오.- 정적 마크업에
<canvas>를 두지 마십시오. 런타임에 생성하십시오. - 모든 시각적 상태를 t의 함수로 유지하십시오. seek 안전성은 블록을 렌더링 가능하게 만드는 핵심입니다.