oversized-cursor

โดย heygen-com

เทคนิคเคอร์เซอร์ macOS ขนาดใหญ่แบบสไตล์ประจำสตูดิโอสำหรับวิดีโอเปิดตัว HyperFrames โหลดใช้เมื่อใดก็ตามที่ฉากเกี่ยวข้องกับเคอร์เซอร์หรือการกระทำที่นำโดยพอยน์เตอร์ เมื่อเริ่มฉาก UI เมื่อเริ่มการเปลี่ยนภาพ/ทรานซิชัน/การพิมพ์ด้วยการคลิก หรือเมื่อฉากดูนิ่ง เฉื่อย หรือเก่าและต้องการแหล่งการเคลื่อนไหวที่ต้นทุนต่ำแต่ให้ผลสูงเพื่อดึงสายตาผู้ชมและพาพวกเขาออกจากสภาวะที่เฉื่อยนั้น ครอบคลุมขนาดและรูปลักษณ์ของเคอร์เซอร์ (รวมถึงเคอร์เซอร์แบบลวดลายแบรนด์) กฎการเข้าจากนอกจอ การเล็งเป้าที่ปลายเคอร์เซอร์ และการคลิก...

npx skills add https://github.com/heygen-com/hyperframes --skill oversized-cursor

Oversized Cursor — the eye-carrier

A deliberately oversized macOS-style pointer that travels the frame as a visible protagonist: it enters from off-screen, walks the viewer's eye to the next point of interest, clicks to cause the next thing that happens, and leaves. Production-proven across multiple launch films.

Why it exists. Big cursor movement is one of the cheapest high-yield motion sources in a launch video: one element, transform-only tweens, and it (1) brings the eye across the screen on scenes that would otherwise read as dead, (2) gives causal ignition to morphs/transitions ("the click did that"), and (3) segments the eye out of a stale state when kicking off a new scene or a complex animation sequence. Bigger is better — an actual-size cursor disappears at video scale.

Size & look (house convention)

  • Full-frame scenes: 7cqw (≈134px at 1920). In-mock / small-frame variants: 4.6–5.5cqw. Never smaller.
  • One SVG arrow geometry everywhere. Two proven fills — white body + black stroke, or black body (#1c1c1c) + white stroke (1.4px). Pick per scene contrast, keep it constant per film.
  • Brand-motif cursors (the power play). The macOS arrow is the DEFAULT, not a mandate. When the subject brand has a recognizable cursor identity — a collaborative design tool's colored multiplayer arrow with a name tag (Figma-style), a creative suite's precision crosshair, a distinctive product pointer — use THAT cursor instead: instantly legible brand language for anyone who knows the product. Same laws apply unchanged (oversized scale, physical entry/exit, tip-targeting, click-ignition), and a name-tag variant travels as one rigid unit (tag trailing the arrow). Reach for it only when the motif is genuinely referenceable; a cursor nobody recognizes is just a weird arrow — default back to macOS.
  • filter: drop-shadow(0 4px 6px rgba(0,0,0,.3)), pointer-events: none, z-index above all scene content, will-change: transform.
#root .cursor {
  position: absolute;
  left: 48%;
  top: 115%; /* off-screen below — the resting pose IS off-screen */
  width: 7cqw;
  height: 7cqw;
  z-index: 20;
  filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.3));
  pointer-events: none;
  will-change: transform;
}

Entry law — physical, never revealed

The cursor always enters from off-screen (canonical: from below, top:115–120%) and travels to its first target in one decelerating glide. It must feel like it entered the room. Never opacity-fade it in at a resting position, never mask-reveal it — that reads as a glitch (a real, repeatedly observed failure mode).

  • Default path: straight up the y-axis to the target — no fragmented diagonals. A diagonal is fine when it IS the story (entering toward an off-axis target), but it is one continuous vector either way.
  • duration: 0.4–0.92s, ease: power3.out, immediateRender: false on the fromTo.
tl.fromTo(
  cursor,
  { left: "48.6%", top: "115%" },
  { left: "48.6%", top: "55%", duration: 0.85, ease: "power3.out", immediateRender: false },
  0.25,
);

Tip-targeting & the click tap

The hot-spot is the arrow TIP, not the box center. Land the tip on the target's center, and pivot all press scaling on the tip: transformOrigin: '21% 14%' (for the house arrow path in a 24-unit viewBox).

Click = asymmetric compress/expand (1:2 ratio reads as a real tap):

tl.to(cursor, { scale: 0.84, duration: 0.1, ease: "power2.in", transformOrigin: "21% 14%" }, t);
tl.to(
  cursor,
  { scale: 1, duration: 0.22, ease: "power2.out", transformOrigin: "21% 14%" },
  t + 0.1,
);

The target's reaction is a separate, parallel tween (button: scale: 0.94 + press color/shadow, starting at the same t). Cursor-only taps (e.g. focusing a text input) get NO target reaction. Pair with cursor-click-ripple / press-release-spring for the target side.

The click IGNITES the next beat

Never let a morph, typing run, window transform, or scene-defining animation simply start. Park the cursor on the trigger and let the click cause it, same-frame:

  • click ▸ menu/submenu cascade, toggle flip
  • click ▸ typing kickoff into an input
  • click ▸ composer morph-down / window shrink
  • click ▸ logo ignition / flight launch
  • click ▸ play-state flip + UI-life wake in a product mock

During long beats it doesn't own (typing, narration), the cursor drifts aside (0.5–0.9s, power2.out) — never sits frozen on top of the action, never wobbles idly.

Exit law & cross-scene handoff

Two sanctioned exits — both physical, never an opacity fade in place:

  1. Leave the frame: accelerate off the nearest edge with power2.in (left:'118%', left:'-12%', or top:'116%'), 0.5–0.7s.
  2. Cut-the-curve handoff: in the final ~0.3s before a hard cut, the cursor starts accelerating (power2.in) toward the NEXT scene's first click point, covering the first ~1/3 of that path; the next composition gsap.sets the cursor at the handoff pose and continues with power2.out at matched velocity. The cursor itself becomes the carrier element that stitches the seam:
// scene A, last 0.3s — start the journey:
tl.to(cursor, { left: "40.7%", top: "63.7%", duration: 0.3, ease: "power2.in" }, CUT - 0.3);
// scene B, t=0 — finish it at matched velocity:
gsap.set(cursorB, { left: "40.7%", top: "63.7%" });
tl.to(cursorB, { left: "22%", top: "45%", duration: 0.6, ease: "power2.out" }, 0);

Checklist

  • ≥ 7cqw full-frame (4.6–5.5cqw inside a mock) — when unsure, bigger
  • enters from off-screen on one continuous vector (no fade/mask reveal)
  • tip lands on the target center; press pivots on transformOrigin: '21% 14%'
  • every click causes something, same-frame
  • drifts aside during beats it doesn't own; zero idle wobble
  • exits physically (off-frame or cut-the-curve handoff) — no fade-in-place

Skills เพิ่มเติมจาก heygen-com

hyperframes-audio
heygen-com
Use when audio already placed in a HyperFrames composition needs to be mixed: a music bed that fights a voiceover (voiceover carve), effects on a track (EQ, compressor, limiter, gate, saturation, delay, reverb, chorus, phaser, bitcrush), or automation envelopes drawn on a track's volume or any effect parameter. Don't use for sourcing or generating audio — finding BGM, SFX, or making a voiceover is `/media-use`. Don't use for clip timing or track layout, which is `/hyperframes-core`.
hyperframes-cli
heygen-com
HyperFrames CLI dev loop — `npx hyperframes` for scaffolding (init), validation (lint, inspect), preview, render, and environment troubleshooting (doctor, browser, info, upgrade). Use when running any of these commands or troubleshooting the HyperFrames build/render environment. For asset preprocessing commands (`tts`, `transcribe`, `remove-background`), invoke the `hyperframes-media` skill instead.
developmenttestingapi
hyperframes-animation
heygen-com
ความรู้ด้านแอนิเมชันทั้งหมดสำหรับ HyperFrames — กฎการเคลื่อนไหวระดับอะตอม, บลูพริ้นท์ฉากแบบหลายเฟส, การเปลี่ยนฉาก, เทคนิคการออกแบบการเคลื่อนไหวในวงกว้าง และอะแดปเตอร์รันไทม์ทั้งเจ็ดตัว (GSAP เริ่มต้น, รวมถึง Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU) ใช้สำหรับงานเคลื่อนไหวหรือแอนิเมชันใดๆ: เลือก 2-4 กฎแล้วประกอบ, หรือโหลดบลูพริ้นท์, หรือค้นหา API เฉพาะรันไทม์ (เช่น GSAP eases / Lottie player / Three.js mixer) HyperFrames-native: ไทม์ไลน์ที่หยุดชั่วคราวเส้นเดียว, ปลอดภัยต่อการค้นหา,...
creativedevelopmentdesign
hyperframes-core
heygen-com
สัญญาการประกอบ HyperFrames HTML ใช้สำหรับโครงสร้างการประกอบ, แอตทริบิวต์ข้อมูล, คลิป, แทร็ก, การประกอบย่อย, ตัวแปร, การเล่นสื่อ, กฎการเรนเดอร์ที่กำหนดได้, และการตรวจสอบโปรเจกต์ที่เรนเดอร์ได้ขั้นต่ำ
developmentmediacreative
hyperframes-media
heygen-com
การประมวลผลสินทรัพย์ล่วงหน้าสำหรับองค์ประกอบ HyperFrames — TTS หลายผู้ให้บริการ (HeyGen / ElevenLabs / Kokoro ในเครื่อง), BGM หลายผู้ให้บริการ (Google Lyria / MusicGen ในเครื่อง), การถอดเสียง Whisper, การลบพื้นหลัง, และการเขียนคำบรรยาย ใช้สำหรับ npx hyperframes tts, bgm, transcribe, remove-background, การเลือกเสียง/ผู้ให้บริการ, การกระตุ้นอารมณ์ดนตรี, คำบรรยาย / คำอธิบายใต้ภาพ / เนื้อเพลง / คาราโอเกะ / การจัดรูปแบบต่อคำ
mediaaudiovideo
hyperframes-registry
heygen-com
ติดตั้งและเชื่อมต่อบล็อกและคอมโพเนนต์ของ registry เข้ากับองค์ประกอบ HyperFrames ใช้เมื่อรันคำสั่ง hyperframes add, ติดตั้งบล็อกหรือคอมโพเนนต์, เชื่อมต่อรายการที่ติดตั้งแล้วเข้ากับ index.html, หรือทำงานกับ hyperframes.json ครอบคลุมคำสั่ง add, ตำแหน่งการติดตั้ง, การเชื่อมต่อบล็อกย่อย, การรวมคอมโพเนนต์ snippet, การค้นพบ registry, และการสร้างบล็อกหรือคอมโพเนนต์ใหม่เพื่อส่งกลับต้นทาง (แนวคิด → โครงร่าง → ตรวจสอบ → PR)
developmentapicode-review
general-video
heygen-com
ใช้เป็นตัวเลือกสำรองสำหรับการเขียนวิดีโอประกอบ HyperFrames HTML แบบกำหนดเอง เมื่อไม่มีเวิร์กโฟลว์เฉพาะที่เหมาะสม ครอบคลุมผลงานแบบยาวหรือหลายฉาก แบรนด์/ซิซเซิลรีล มอนเทจ การ์ดไตเติ้ล โมชันโปสเตอร์แบบยาว ลูปนิ่ง และองค์ประกอบอิสระในทุกความยาวหรือรูปแบบ ไม่ใช่สำหรับโปรโมตผลิตภัณฑ์ที่วางตลาด (product-launch-video) การจับภาพจากเว็บไซต์ทั่วไปเป็นวิดีโอ (website-to-video) วิดีโออธิบายหัวข้อ (faceless-explainer) วิดีโอ GitHub PR (pr-to-video) การใส่คำบรรยายในฟุตเทจที่มีอยู่...
videocreativemedia
motion-graphics
heygen-com
ใช้เมื่อผู้ใช้ต้องการโมชั่นกราฟิกที่เน้นการออกแบบและให้การเคลื่อนไหวเป็นสาระสำคัญ เช่น kinetic typography, การนับตัวเลขหรือสถิติ, การแสดงข้อมูล/แผนภูมิ, logo sting, brand lockup, lower-third, callout, social overlay, หัวข้อ/ทวีต/ข่าวแบบเคลื่อนไหว, โปสเตอร์เคลื่อนไหว, หรือการเน้นส่วนของหน้าที่จับภาพอย่างรวดเร็ว โดยทั่วไปมีความยาวต่ำกว่า 10 วินาทีถึงประมาณ 30 วินาที ไม่มีโครงสร้างการเล่าเรื่อง เสียงพากย์ หรือตัวแสดงจริง สามารถเรนเดอร์เป็น MP4 หรือโอเวอร์เลย์โปร่งใส ไม่เหมาะสำหรับชิ้นงานที่ยาว มีหลายฉาก มีการเล่าเรื่อง หรือเป็นรีลของแบรนด์...
creativevideodesign