각진 상자들이 파동의 높낮이를 따라 이동하며 차례로 앞에 서는 순환 구조Angular boxes travel along a wave and each takes its turn at the front.
상자 8개가 주기 6초로 진폭 80px의 파동을 따라 흐르고, 앞에 온 상자의 면이 정면을 향하며 위상차 45도씩 이어진다
진폭이 너무 커서 뒤 상자가 앞 상자를 가리거나, 정면에 온 상자의 텍스트가 기울어져 읽히지 않는다
기본값은 클립에 쓴 값Defaults are the values used in the clip
| 항목PARAM | 기본DEFAULT | 범위RANGE | 메모NOTE |
|---|---|---|---|
| 주기 | 6s | 4~9s | 한 바퀴 시간 |
| 상자 수 | 8 | 6~10 | 위상차 360/N |
| 파동 진폭 | 80px | 40~120px | y 변위 |
| 위상차 | 45deg | 36~60deg | 인덱스 기준 |
| 이징 | linear | linear | 일정 속도 순환 |
const N = 8, T = 6;
boxes.forEach((b, i) => {
const ph = (i / N) * Math.PI * 2;
tl.to(b, { duration: T, ease: 'none', onUpdate() {
const a = ph + this.progress() * Math.PI * 2;
gsap.set(b, { x: Math.sin(a) * 520, z: Math.cos(a) * 260, y: Math.sin(a * 2) * 80, rotationY: -Math.sin(a) * 40 });
} }, 0);
});그대로 붙여 넣는다Paste as is
WebGL이나 CSS 3D로 <항목 8개>를 상자 8개에 붙인 웨이브 캐러셀을 만들어 줘. 주기는 6초 linear, 진폭 80px, 인덱스 위상차 45도, 정면에 온 상자는 rotationY 0으로 읽히게 해. 위치는 진행률의 순수 함수로 계산하고 paused 타임라인 하나로 seek 가능하게 해.
Build a wave carousel in WebGL or CSS 3D with <8 items> mapped to 8 boxes. Period 6 seconds linear, amplitude 80px, 45-degree phase step per index, and the front box at rotationY 0 so its text is readable. Compute positions as a pure function of progress and use one paused, seekable timeline.
<파일>에 wave-carousel을 적용해. 상자 8개의 위치를 a=phase_i+progress*2π로 계산해 x=sin(a)*520, z=cos(a)*260, y=sin(2a)*80, rotationY=-sin(a)*40을 준다. duration 6, ease none. 0초, 0.75초, 3초 캡처로 정면 상자의 텍스트가 읽히고 상자 위상이 45도씩 어긋나는지 확인해.
Apply wave-carousel in <file>. For each of 8 boxes compute a=phase_i+progress*2*PI and set x=sin(a)*520, z=cos(a)*260, y=sin(2a)*80, rotationY=-sin(a)*40. duration 6, ease none. Capture 0s, 0.75s and 3s: the front box text is readable and box phases differ by 45 degrees.
HyperFrames · ReelForge · Scrolline
개념 출처와 라이선스. 구현은 이 레포에서 새로 씀Concept sources and licenses. Implementations are original to this repo