hyper-animator-codex 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/README.md +51 -3
  2. package/bin/hyper-animator-codex.mjs +1 -1
  3. package/lib/minimax-config.mjs +3 -3
  4. package/package.json +1 -1
  5. package/skills/hyper-animator-codex/SKILL.md +58 -20
  6. package/skills/hyper-animator-codex/agents/openai.yaml +2 -2
  7. package/skills/hyper-animator-codex/contracts/shot-plan.schema.json +214 -0
  8. package/skills/hyper-animator-codex/contracts/workflow-policy.json +85 -0
  9. package/skills/hyper-animator-codex/references/HyperFrames-AI-Generation-Patterns-codex.md +788 -0
  10. package/skills/hyper-animator-codex/references/beat-sync-workflow.md +7 -0
  11. package/skills/hyper-animator-codex/references/examples/shot-plan-dual-catalog.json +69 -0
  12. package/skills/hyper-animator-codex/references/hyperframes-agent-pseudocode.ts +1 -1
  13. package/skills/hyper-animator-codex/references/hyperframes-catalog-map.json +97 -230
  14. package/skills/hyper-animator-codex/references/hyperframes-intent-workflow.md +23 -7
  15. package/skills/hyper-animator-codex/references/minimax-music-workflow.md +24 -4
  16. package/skills/hyper-animator-codex/references/narration-audio-workflow.md +31 -1
  17. package/skills/hyper-animator-codex/references/shotcraft/LICENSE +202 -0
  18. package/skills/hyper-animator-codex/references/shotcraft/cards/ai-stream-response/README.md +46 -0
  19. package/skills/hyper-animator-codex/references/shotcraft/cards/autolayout-gap-dial/README.md +53 -0
  20. package/skills/hyper-animator-codex/references/shotcraft/cards/beat-cut-moves/README.md +54 -0
  21. package/skills/hyper-animator-codex/references/shotcraft/cards/beat-step-list-theme-cycle/README.md +59 -0
  22. package/skills/hyper-animator-codex/references/shotcraft/cards/before-after-slider-scrub/README.md +47 -0
  23. package/skills/hyper-animator-codex/references/shotcraft/cards/bottom-push-stack-wipe/README.md +58 -0
  24. package/skills/hyper-animator-codex/references/shotcraft/cards/brand-frame-snap/README.md +51 -0
  25. package/skills/hyper-animator-codex/references/shotcraft/cards/brand-ink-open/README.md +35 -0
  26. package/skills/hyper-animator-codex/references/shotcraft/cards/bubble-swarm-takeover/README.md +62 -0
  27. package/skills/hyper-animator-codex/references/shotcraft/cards/canvas-materialize-moves/README.md +55 -0
  28. package/skills/hyper-animator-codex/references/shotcraft/cards/card-flip-reveal/README.md +50 -0
  29. package/skills/hyper-animator-codex/references/shotcraft/cards/card-flock-tumble/README.md +54 -0
  30. package/skills/hyper-animator-codex/references/shotcraft/cards/cel-flash-stomp/README.md +54 -0
  31. package/skills/hyper-animator-codex/references/shotcraft/cards/chart-live-moves/README.md +51 -0
  32. package/skills/hyper-animator-codex/references/shotcraft/cards/circle-match-iris/README.md +53 -0
  33. package/skills/hyper-animator-codex/references/shotcraft/cards/cloner-depth-echo/README.md +38 -0
  34. package/skills/hyper-animator-codex/references/shotcraft/cards/collab-cursor-moves/README.md +48 -0
  35. package/skills/hyper-animator-codex/references/shotcraft/cards/color-block-step-wipe/README.md +54 -0
  36. package/skills/hyper-animator-codex/references/shotcraft/cards/command-palette-summon/README.md +45 -0
  37. package/skills/hyper-animator-codex/references/shotcraft/cards/crane-rise-reveal/README.md +47 -0
  38. package/skills/hyper-animator-codex/references/shotcraft/cards/crash-zoom-punch/README.md +38 -0
  39. package/skills/hyper-animator-codex/references/shotcraft/cards/dataviz-landscape-open/README.md +54 -0
  40. package/skills/hyper-animator-codex/references/shotcraft/cards/deck-deal-flyin/README.md +45 -0
  41. package/skills/hyper-animator-codex/references/shotcraft/cards/depth-layer-moves/README.md +40 -0
  42. package/skills/hyper-animator-codex/references/shotcraft/cards/document-typewriter-reveal/README.md +40 -0
  43. package/skills/hyper-animator-codex/references/shotcraft/cards/draw-svg-trace/README.md +50 -0
  44. package/skills/hyper-animator-codex/references/shotcraft/cards/edit-hook-moves/README.md +38 -0
  45. package/skills/hyper-animator-codex/references/shotcraft/cards/element-body-moves/README.md +49 -0
  46. package/skills/hyper-animator-codex/references/shotcraft/cards/fui-hud-moves/README.md +44 -0
  47. package/skills/hyper-animator-codex/references/shotcraft/cards/gauge-readout-moves/README.md +45 -0
  48. package/skills/hyper-animator-codex/references/shotcraft/cards/glow-flyline-moves/README.md +51 -0
  49. package/skills/hyper-animator-codex/references/shotcraft/cards/gradient-word-sweep/README.md +49 -0
  50. package/skills/hyper-animator-codex/references/shotcraft/cards/graze-face-tour/README.md +56 -0
  51. package/skills/hyper-animator-codex/references/shotcraft/cards/hashtag-to-pill-materialize/README.md +57 -0
  52. package/skills/hyper-animator-codex/references/shotcraft/cards/hires-rasterize-3d-text/README.md +34 -0
  53. package/skills/hyper-animator-codex/references/shotcraft/cards/icon-field-colorize/README.md +53 -0
  54. package/skills/hyper-animator-codex/references/shotcraft/cards/icon-performance-moves/README.md +46 -0
  55. package/skills/hyper-animator-codex/references/shotcraft/cards/impact-feedback/README.md +50 -0
  56. package/skills/hyper-animator-codex/references/shotcraft/cards/input-trigger-moves/README.md +49 -0
  57. package/skills/hyper-animator-codex/references/shotcraft/cards/integration-hub-map/README.md +54 -0
  58. package/skills/hyper-animator-codex/references/shotcraft/cards/letterspace-materialize/README.md +52 -0
  59. package/skills/hyper-animator-codex/references/shotcraft/cards/light-play-moves/README.md +49 -0
  60. package/skills/hyper-animator-codex/references/shotcraft/cards/line-boil/README.md +52 -0
  61. package/skills/hyper-animator-codex/references/shotcraft/cards/line-carry-transition/README.md +52 -0
  62. package/skills/hyper-animator-codex/references/shotcraft/cards/list-stack-press/README.md +43 -0
  63. package/skills/hyper-animator-codex/references/shotcraft/cards/magician-card-flourish/README.md +63 -0
  64. package/skills/hyper-animator-codex/references/shotcraft/cards/marker-underline-title/README.md +48 -0
  65. package/skills/hyper-animator-codex/references/shotcraft/cards/montage-rhythm-moves/README.md +55 -0
  66. package/skills/hyper-animator-codex/references/shotcraft/cards/morph-from-primitive/README.md +51 -0
  67. package/skills/hyper-animator-codex/references/shotcraft/cards/neon-frame-forerun/README.md +50 -0
  68. package/skills/hyper-animator-codex/references/shotcraft/cards/neon-frame-orbit-drop/README.md +50 -0
  69. package/skills/hyper-animator-codex/references/shotcraft/cards/neon-triple-marquee/README.md +55 -0
  70. package/skills/hyper-animator-codex/references/shotcraft/cards/odometer-digit-roll/README.md +54 -0
  71. package/skills/hyper-animator-codex/references/shotcraft/cards/outro-group-photo-launch/README.md +39 -0
  72. package/skills/hyper-animator-codex/references/shotcraft/cards/overhead-camera-moves/README.md +50 -0
  73. package/skills/hyper-animator-codex/references/shotcraft/cards/page-turn-transitions/README.md +48 -0
  74. package/skills/hyper-animator-codex/references/shotcraft/cards/page-waterfall-wall/README.md +52 -0
  75. package/skills/hyper-animator-codex/references/shotcraft/cards/panel-grid-moves/README.md +52 -0
  76. package/skills/hyper-animator-codex/references/shotcraft/cards/paper-craft-moves/README.md +46 -0
  77. package/skills/hyper-animator-codex/references/shotcraft/cards/paper-plane-messenger/README.md +62 -0
  78. package/skills/hyper-animator-codex/references/shotcraft/cards/paper-title-card/README.md +36 -0
  79. package/skills/hyper-animator-codex/references/shotcraft/cards/particle-celebrate-hits/README.md +42 -0
  80. package/skills/hyper-animator-codex/references/shotcraft/cards/particle-sand-fill/README.md +39 -0
  81. package/skills/hyper-animator-codex/references/shotcraft/cards/pill-slot-cycle/README.md +57 -0
  82. package/skills/hyper-animator-codex/references/shotcraft/cards/print-texture-transitions/README.md +40 -0
  83. package/skills/hyper-animator-codex/references/shotcraft/cards/rhythm-interrupt-moves/README.md +44 -0
  84. package/skills/hyper-animator-codex/references/shotcraft/cards/riso-print-hits/README.md +54 -0
  85. package/skills/hyper-animator-codex/references/shotcraft/cards/row-embed/README.md +36 -0
  86. package/skills/hyper-animator-codex/references/shotcraft/cards/runway-ground-skim/README.md +52 -0
  87. package/skills/hyper-animator-codex/references/shotcraft/cards/sakuga-timing-shift/README.md +50 -0
  88. package/skills/hyper-animator-codex/references/shotcraft/cards/scene-locked-title/README.md +43 -0
  89. package/skills/hyper-animator-codex/references/shotcraft/cards/scroll-brake-moves/README.md +45 -0
  90. package/skills/hyper-animator-codex/references/shotcraft/cards/segmented-thumb-hero/README.md +57 -0
  91. package/skills/hyper-animator-codex/references/shotcraft/cards/shot-transitions/README.md +60 -0
  92. package/skills/hyper-animator-codex/references/shotcraft/cards/skeleton-reveal/README.md +54 -0
  93. package/skills/hyper-animator-codex/references/shotcraft/cards/slam-entrance-moves/README.md +53 -0
  94. package/skills/hyper-animator-codex/references/shotcraft/cards/smear-multiples/README.md +49 -0
  95. package/skills/hyper-animator-codex/references/shotcraft/cards/space-camera-moves/README.md +53 -0
  96. package/skills/hyper-animator-codex/references/shotcraft/cards/spectrum-morph-ui/README.md +50 -0
  97. package/skills/hyper-animator-codex/references/shotcraft/cards/speed-ramp-freeze/README.md +42 -0
  98. package/skills/hyper-animator-codex/references/shotcraft/cards/split-flap-title/README.md +52 -0
  99. package/skills/hyper-animator-codex/references/shotcraft/cards/spotlight-hero-card/README.md +39 -0
  100. package/skills/hyper-animator-codex/references/shotcraft/cards/spotlight-sweep-moves/README.md +51 -0
  101. package/skills/hyper-animator-codex/references/shotcraft/cards/steep-tilt-glide/README.md +53 -0
  102. package/skills/hyper-animator-codex/references/shotcraft/cards/stroke-segment-build/README.md +43 -0
  103. package/skills/hyper-animator-codex/references/shotcraft/cards/tear-streak-transitions/README.md +43 -0
  104. package/skills/hyper-animator-codex/references/shotcraft/cards/tension-camera-moves/README.md +55 -0
  105. package/skills/hyper-animator-codex/references/shotcraft/cards/text-as-mask/README.md +50 -0
  106. package/skills/hyper-animator-codex/references/shotcraft/cards/text-column-converge/README.md +55 -0
  107. package/skills/hyper-animator-codex/references/shotcraft/cards/theme-switch-moves/README.md +44 -0
  108. package/skills/hyper-animator-codex/references/shotcraft/cards/timeline-travel/README.md +43 -0
  109. package/skills/hyper-animator-codex/references/shotcraft/cards/title-demote-to-label/README.md +58 -0
  110. package/skills/hyper-animator-codex/references/shotcraft/cards/trailer-grammar-moves/README.md +51 -0
  111. package/skills/hyper-animator-codex/references/shotcraft/cards/transition-hidden-cut/README.md +52 -0
  112. package/skills/hyper-animator-codex/references/shotcraft/cards/transition-travel/README.md +48 -0
  113. package/skills/hyper-animator-codex/references/shotcraft/cards/type-and-filter/README.md +37 -0
  114. package/skills/hyper-animator-codex/references/shotcraft/cards/type-assembly-moves/README.md +50 -0
  115. package/skills/hyper-animator-codex/references/shotcraft/cards/type-entrance-moves/README.md +46 -0
  116. package/skills/hyper-animator-codex/references/shotcraft/cards/type-rhythm-sync/README.md +47 -0
  117. package/skills/hyper-animator-codex/references/shotcraft/cards/typewriter-moves/README.md +50 -0
  118. package/skills/hyper-animator-codex/references/shotcraft/cards/ui-strip-away-outro/README.md +63 -0
  119. package/skills/hyper-animator-codex/references/shotcraft/cards/ui-to-brand-morph/README.md +52 -0
  120. package/skills/hyper-animator-codex/references/shotcraft/cards/voice-waveform-live/README.md +52 -0
  121. package/skills/hyper-animator-codex/references/shotcraft/cards/wall-reveal-moves/README.md +53 -0
  122. package/skills/hyper-animator-codex/references/shotcraft/cards/wipe-transitions/README.md +47 -0
  123. package/skills/hyper-animator-codex/references/shotcraft/cards/word-relay-filmstrip/README.md +50 -0
  124. package/skills/hyper-animator-codex/references/shotcraft/catalog.json +3946 -0
  125. package/skills/hyper-animator-codex/references/shotcraft/references/aesthetic-rules.md +157 -0
  126. package/skills/hyper-animator-codex/references/shotcraft/references/final-review.md +107 -0
  127. package/skills/hyper-animator-codex/references/shotcraft/references/guided-free-creation.md +197 -0
  128. package/skills/hyper-animator-codex/references/shotcraft/references/music-beat-sync.md +125 -0
  129. package/skills/hyper-animator-codex/references/shotcraft/references/pipeline.md +357 -0
  130. package/skills/hyper-animator-codex/references/shotcraft/references/sound-design.md +126 -0
  131. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/Caption.tsx +50 -0
  132. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/DigitRoll.tsx +45 -0
  133. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/FlashCut.tsx +20 -0
  134. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/FlatPanel.tsx +65 -0
  135. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/PageCam.tsx +151 -0
  136. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/VerticalTicker.tsx +129 -0
  137. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/camera.tsx +75 -0
  138. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/motion.ts +40 -0
  139. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/rand.ts +11 -0
  140. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/shake.ts +10 -0
  141. package/skills/hyper-animator-codex/references/shotcraft/source/demos/_fixtures/Fixtures.tsx +83 -0
  142. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ai-stream-response/StreamResponse.tsx +146 -0
  143. package/skills/hyper-animator-codex/references/shotcraft/source/demos/autolayout-gap-dial/AutolayoutGapDial.tsx +174 -0
  144. package/skills/hyper-animator-codex/references/shotcraft/source/demos/beat-cut-moves/BeatCutAccelerando.tsx +77 -0
  145. package/skills/hyper-animator-codex/references/shotcraft/source/demos/beat-cut-moves/PaparazziFlash.tsx +115 -0
  146. package/skills/hyper-animator-codex/references/shotcraft/source/demos/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +98 -0
  147. package/skills/hyper-animator-codex/references/shotcraft/source/demos/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +99 -0
  148. package/skills/hyper-animator-codex/references/shotcraft/source/demos/bottom-push-stack-wipe/BottomPushStackWipe.tsx +79 -0
  149. package/skills/hyper-animator-codex/references/shotcraft/source/demos/brand-frame-snap/BrandFrameSnap.tsx +110 -0
  150. package/skills/hyper-animator-codex/references/shotcraft/source/demos/bubble-swarm-takeover/BubbleSwarmTakeover.tsx +189 -0
  151. package/skills/hyper-animator-codex/references/shotcraft/source/demos/canvas-materialize-moves/DiagramCascadeBuild.tsx +172 -0
  152. package/skills/hyper-animator-codex/references/shotcraft/source/demos/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +254 -0
  153. package/skills/hyper-animator-codex/references/shotcraft/source/demos/card-flip-reveal/CardFlipReveal.tsx +139 -0
  154. package/skills/hyper-animator-codex/references/shotcraft/source/demos/card-flock-tumble/CardFlockTumble.tsx +382 -0
  155. package/skills/hyper-animator-codex/references/shotcraft/source/demos/cel-flash-stomp/CelFlashStomp.tsx +111 -0
  156. package/skills/hyper-animator-codex/references/shotcraft/source/demos/chart-live-moves/AxisRescaleShockV2.tsx +282 -0
  157. package/skills/hyper-animator-codex/references/shotcraft/source/demos/chart-live-moves/OscilloscopeStreamV2.tsx +227 -0
  158. package/skills/hyper-animator-codex/references/shotcraft/source/demos/chart-live-moves/UnitDotSwarmRegroupV2.tsx +248 -0
  159. package/skills/hyper-animator-codex/references/shotcraft/source/demos/circle-match-iris/CircleMatchIris.tsx +124 -0
  160. package/skills/hyper-animator-codex/references/shotcraft/source/demos/cloner-depth-echo/ClonerDepthEcho.tsx +90 -0
  161. package/skills/hyper-animator-codex/references/shotcraft/source/demos/collab-cursor-moves/CursorCastEnsemble.tsx +136 -0
  162. package/skills/hyper-animator-codex/references/shotcraft/source/demos/collab-cursor-moves/CursorDialogueDuet.tsx +145 -0
  163. package/skills/hyper-animator-codex/references/shotcraft/source/demos/color-block-step-wipe/ColorBlockStepWipe.tsx +157 -0
  164. package/skills/hyper-animator-codex/references/shotcraft/source/demos/command-palette-summon/CommandPaletteSummon.tsx +173 -0
  165. package/skills/hyper-animator-codex/references/shotcraft/source/demos/crane-rise-reveal/CraneRiseReveal.tsx +91 -0
  166. package/skills/hyper-animator-codex/references/shotcraft/source/demos/crash-zoom-punch/CrashImpactReal.tsx +63 -0
  167. package/skills/hyper-animator-codex/references/shotcraft/source/demos/crash-zoom-punch/CrashZoomReal.tsx +60 -0
  168. package/skills/hyper-animator-codex/references/shotcraft/source/demos/dataviz-landscape-open/DatavizLandscapeOpen.tsx +401 -0
  169. package/skills/hyper-animator-codex/references/shotcraft/source/demos/depth-layer-moves/DollyZoomReal.tsx +55 -0
  170. package/skills/hyper-animator-codex/references/shotcraft/source/demos/depth-layer-moves/MultiplaneReal.tsx +45 -0
  171. package/skills/hyper-animator-codex/references/shotcraft/source/demos/draw-svg-trace/DrawSvgTrace.tsx +199 -0
  172. package/skills/hyper-animator-codex/references/shotcraft/source/demos/edit-hook-moves/LogoStingButton.tsx +106 -0
  173. package/skills/hyper-animator-codex/references/shotcraft/source/demos/element-body-moves/AxialStretch.tsx +112 -0
  174. package/skills/hyper-animator-codex/references/shotcraft/source/demos/element-body-moves/ContactShadowLift.tsx +117 -0
  175. package/skills/hyper-animator-codex/references/shotcraft/source/demos/fui-hud-moves/LineUnfoldPanel.tsx +125 -0
  176. package/skills/hyper-animator-codex/references/shotcraft/source/demos/fui-hud-moves/ReticleLockOn.tsx +139 -0
  177. package/skills/hyper-animator-codex/references/shotcraft/source/demos/gauge-readout-moves/NeedleSweepSelftest.tsx +146 -0
  178. package/skills/hyper-animator-codex/references/shotcraft/source/demos/gauge-readout-moves/TapeScrollFixedPointer.tsx +120 -0
  179. package/skills/hyper-animator-codex/references/shotcraft/source/demos/glow-flyline-moves/FlylineArc.tsx +158 -0
  180. package/skills/hyper-animator-codex/references/shotcraft/source/demos/glow-flyline-moves/GlowOrbAmbient.tsx +131 -0
  181. package/skills/hyper-animator-codex/references/shotcraft/source/demos/glow-flyline-moves/OrbFlylineRelay.tsx +268 -0
  182. package/skills/hyper-animator-codex/references/shotcraft/source/demos/gradient-word-sweep/GradientWordSweep.tsx +307 -0
  183. package/skills/hyper-animator-codex/references/shotcraft/source/demos/graze-face-tour/GrazeFaceTour.tsx +469 -0
  184. package/skills/hyper-animator-codex/references/shotcraft/source/demos/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +166 -0
  185. package/skills/hyper-animator-codex/references/shotcraft/source/demos/icon-field-colorize/IconFieldColorize.tsx +93 -0
  186. package/skills/hyper-animator-codex/references/shotcraft/source/demos/icon-performance-moves/AttentionBounce.tsx +193 -0
  187. package/skills/hyper-animator-codex/references/shotcraft/source/demos/icon-performance-moves/PopBurstConfirm.tsx +162 -0
  188. package/skills/hyper-animator-codex/references/shotcraft/source/demos/impact-feedback/AnimeImpact.tsx +149 -0
  189. package/skills/hyper-animator-codex/references/shotcraft/source/demos/impact-feedback/HitCounter.tsx +147 -0
  190. package/skills/hyper-animator-codex/references/shotcraft/source/demos/input-trigger-moves/CursorPerformancePunchIn.tsx +154 -0
  191. package/skills/hyper-animator-codex/references/shotcraft/source/demos/input-trigger-moves/KeycapSmashCut.tsx +217 -0
  192. package/skills/hyper-animator-codex/references/shotcraft/source/demos/integration-hub-map/IntegrationHubMap.tsx +554 -0
  193. package/skills/hyper-animator-codex/references/shotcraft/source/demos/letterspace-materialize/LetterspaceMaterialize.tsx +85 -0
  194. package/skills/hyper-animator-codex/references/shotcraft/source/demos/light-play-moves/HalationBloom.tsx +139 -0
  195. package/skills/hyper-animator-codex/references/shotcraft/source/demos/light-play-moves/SheenSweepRetry.tsx +85 -0
  196. package/skills/hyper-animator-codex/references/shotcraft/source/demos/light-play-moves/SpotlightSweepReveal.tsx +102 -0
  197. package/skills/hyper-animator-codex/references/shotcraft/source/demos/line-boil/LineBoil.tsx +140 -0
  198. package/skills/hyper-animator-codex/references/shotcraft/source/demos/line-carry-transition/LineCarryTransition.tsx +151 -0
  199. package/skills/hyper-animator-codex/references/shotcraft/source/demos/magician-card-flourish/MagicianCardFlourish.tsx +294 -0
  200. package/skills/hyper-animator-codex/references/shotcraft/source/demos/marker-underline-title/MarkerUnderlineTitle.tsx +87 -0
  201. package/skills/hyper-animator-codex/references/shotcraft/source/demos/montage-rhythm-moves/DominoCascade.tsx +125 -0
  202. package/skills/hyper-animator-codex/references/shotcraft/source/demos/montage-rhythm-moves/DropBlackoutSlam.tsx +135 -0
  203. package/skills/hyper-animator-codex/references/shotcraft/source/demos/montage-rhythm-moves/WrightTripleCut.tsx +175 -0
  204. package/skills/hyper-animator-codex/references/shotcraft/source/demos/morph-from-primitive/MorphFromPrimitive.tsx +190 -0
  205. package/skills/hyper-animator-codex/references/shotcraft/source/demos/neon-frame-forerun/NeonFrameForerun.tsx +279 -0
  206. package/skills/hyper-animator-codex/references/shotcraft/source/demos/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +273 -0
  207. package/skills/hyper-animator-codex/references/shotcraft/source/demos/neon-triple-marquee/NeonTripleMarquee.tsx +111 -0
  208. package/skills/hyper-animator-codex/references/shotcraft/source/demos/odometer-digit-roll/OdometerDigitRoll.tsx +178 -0
  209. package/skills/hyper-animator-codex/references/shotcraft/source/demos/overhead-camera-moves/OverheadTabletopDrop.tsx +129 -0
  210. package/skills/hyper-animator-codex/references/shotcraft/source/demos/overhead-camera-moves/TiltReveal.tsx +55 -0
  211. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-turn-transitions/BarnDoorSplit.tsx +138 -0
  212. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-turn-transitions/CubeRotate.tsx +114 -0
  213. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-waterfall-wall/PageWaterfallWall.tsx +76 -0
  214. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-waterfall-wall/VerticalTicker.tsx +129 -0
  215. package/skills/hyper-animator-codex/references/shotcraft/source/demos/panel-grid-moves/ComicPanelSplit.tsx +171 -0
  216. package/skills/hyper-animator-codex/references/shotcraft/source/demos/panel-grid-moves/FlipGridReflow.tsx +121 -0
  217. package/skills/hyper-animator-codex/references/shotcraft/source/demos/panel-grid-moves/GridFlashMosaic.tsx +182 -0
  218. package/skills/hyper-animator-codex/references/shotcraft/source/demos/paper-craft-moves/MaskingTapeSlap.tsx +163 -0
  219. package/skills/hyper-animator-codex/references/shotcraft/source/demos/paper-craft-moves/PopupBookRise.tsx +134 -0
  220. package/skills/hyper-animator-codex/references/shotcraft/source/demos/paper-plane-messenger/PaperPlaneMessenger.tsx +183 -0
  221. package/skills/hyper-animator-codex/references/shotcraft/source/demos/particle-celebrate-hits/ConfettiCrossfire.tsx +115 -0
  222. package/skills/hyper-animator-codex/references/shotcraft/source/demos/particle-celebrate-hits/CounterTickSparks.tsx +103 -0
  223. package/skills/hyper-animator-codex/references/shotcraft/source/demos/particle-sand-fill/ParticleSandFill.tsx +119 -0
  224. package/skills/hyper-animator-codex/references/shotcraft/source/demos/pill-slot-cycle/PillSlotCycle.tsx +220 -0
  225. package/skills/hyper-animator-codex/references/shotcraft/source/demos/print-texture-transitions/InkBleedReveal.tsx +81 -0
  226. package/skills/hyper-animator-codex/references/shotcraft/source/demos/rhythm-interrupt-moves/JumpCutPunchIn.tsx +72 -0
  227. package/skills/hyper-animator-codex/references/shotcraft/source/demos/rhythm-interrupt-moves/StrobeBlackFrames.tsx +99 -0
  228. package/skills/hyper-animator-codex/references/shotcraft/source/demos/riso-print-hits/RisoBeatPump.tsx +155 -0
  229. package/skills/hyper-animator-codex/references/shotcraft/source/demos/riso-print-hits/RisoMisregistrationHit.tsx +120 -0
  230. package/skills/hyper-animator-codex/references/shotcraft/source/demos/runway-ground-skim/RunwayGroundSkim.tsx +258 -0
  231. package/skills/hyper-animator-codex/references/shotcraft/source/demos/sakuga-timing-shift/SakugaTimingShift.tsx +178 -0
  232. package/skills/hyper-animator-codex/references/shotcraft/source/demos/scene-locked-title/SceneLockedTitle.tsx +98 -0
  233. package/skills/hyper-animator-codex/references/shotcraft/source/demos/scroll-brake-moves/BrakeReticleLock.tsx +171 -0
  234. package/skills/hyper-animator-codex/references/shotcraft/source/demos/scroll-brake-moves/ChangelogScrollBrake.tsx +117 -0
  235. package/skills/hyper-animator-codex/references/shotcraft/source/demos/segmented-thumb-hero/SegmentedThumbHero.tsx +213 -0
  236. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/MaskWipeReal.tsx +67 -0
  237. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/PortalWipeV2.tsx +128 -0
  238. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/WhipBrakeReal.tsx +60 -0
  239. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/WhipPanReal.tsx +45 -0
  240. package/skills/hyper-animator-codex/references/shotcraft/source/demos/skeleton-reveal/SkeletonReveal.tsx +283 -0
  241. package/skills/hyper-animator-codex/references/shotcraft/source/demos/slam-entrance-moves/ImpactBurstKit.tsx +185 -0
  242. package/skills/hyper-animator-codex/references/shotcraft/source/demos/slam-entrance-moves/KanadaPerspectiveSnap.tsx +91 -0
  243. package/skills/hyper-animator-codex/references/shotcraft/source/demos/slam-entrance-moves/ScoreSlam.tsx +225 -0
  244. package/skills/hyper-animator-codex/references/shotcraft/source/demos/smear-multiples/SmearMultiples.tsx +88 -0
  245. package/skills/hyper-animator-codex/references/shotcraft/source/demos/space-camera-moves/DroneDiveLanding.tsx +91 -0
  246. package/skills/hyper-animator-codex/references/shotcraft/source/demos/space-camera-moves/ExplodedView.tsx +178 -0
  247. package/skills/hyper-animator-codex/references/shotcraft/source/demos/space-camera-moves/SnorricamLock.tsx +130 -0
  248. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spectrum-morph-ui/SpectrumMorphUi.tsx +129 -0
  249. package/skills/hyper-animator-codex/references/shotcraft/source/demos/speed-ramp-freeze/FreezeAnnotateReal.tsx +70 -0
  250. package/skills/hyper-animator-codex/references/shotcraft/source/demos/speed-ramp-freeze/SpeedRampReal.tsx +58 -0
  251. package/skills/hyper-animator-codex/references/shotcraft/source/demos/split-flap-title/SplitFlapFlip.tsx +189 -0
  252. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spotlight-sweep-moves/CornerSpotlightReveal.tsx +121 -0
  253. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +183 -0
  254. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spotlight-sweep-moves/SlideSpotlightPan.tsx +171 -0
  255. package/skills/hyper-animator-codex/references/shotcraft/source/demos/steep-tilt-glide/SteepTiltGlide.tsx +315 -0
  256. package/skills/hyper-animator-codex/references/shotcraft/source/demos/stroke-segment-build/StrokeSegmentBuild.tsx +126 -0
  257. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tear-streak-transitions/GlitchDisplace.tsx +107 -0
  258. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/BulletTimeFreezeOrbit.tsx +219 -0
  259. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/DutchRollToLevel.tsx +110 -0
  260. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/PullBackIsolation.tsx +120 -0
  261. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/SlowPushIn.tsx +96 -0
  262. package/skills/hyper-animator-codex/references/shotcraft/source/demos/text-as-mask/TextAsMask.tsx +94 -0
  263. package/skills/hyper-animator-codex/references/shotcraft/source/demos/text-column-converge/TextColumnConverge.tsx +122 -0
  264. package/skills/hyper-animator-codex/references/shotcraft/source/demos/theme-switch-moves/PaletteThemeRipple.tsx +207 -0
  265. package/skills/hyper-animator-codex/references/shotcraft/source/demos/theme-switch-moves/ThemeSweepToggle.tsx +123 -0
  266. package/skills/hyper-animator-codex/references/shotcraft/source/demos/timeline-travel/TimelineTravel.tsx +123 -0
  267. package/skills/hyper-animator-codex/references/shotcraft/source/demos/title-demote-to-label/TitleDemoteToLabel.tsx +174 -0
  268. package/skills/hyper-animator-codex/references/shotcraft/source/demos/trailer-grammar-moves/CardFootageCadence.tsx +118 -0
  269. package/skills/hyper-animator-codex/references/shotcraft/source/demos/trailer-grammar-moves/SmashCut.tsx +105 -0
  270. package/skills/hyper-animator-codex/references/shotcraft/source/demos/trailer-grammar-moves/TrailerBumper.tsx +103 -0
  271. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-hidden-cut/InvisibleCut.tsx +93 -0
  272. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-hidden-cut/LightLeakBurn.tsx +122 -0
  273. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-hidden-cut/VersusSlam.tsx +104 -0
  274. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-travel/LetterformZoom.tsx +141 -0
  275. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-travel/SharedElementMorph.tsx +101 -0
  276. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/LetterformDriftAssembly.tsx +107 -0
  277. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/SplitTextStagger.tsx +101 -0
  278. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/TextOnPath.tsx +92 -0
  279. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/TrackingExpandReveal.tsx +109 -0
  280. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-entrance-moves/LetterDropPhysics.tsx +100 -0
  281. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-entrance-moves/ScrambleDecode.tsx +90 -0
  282. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-rhythm-sync/FontWeightPump.tsx +124 -0
  283. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-rhythm-sync/KaraokeFillSync.tsx +93 -0
  284. package/skills/hyper-animator-codex/references/shotcraft/source/demos/typewriter-moves/TerminalTypewriter.tsx +122 -0
  285. package/skills/hyper-animator-codex/references/shotcraft/source/demos/typewriter-moves/TypewriterErrorRetype.tsx +109 -0
  286. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ui-strip-away-outro/UiStripAwayOutro.tsx +218 -0
  287. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ui-to-brand-morph/IconFlipBloomLogo.tsx +199 -0
  288. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ui-to-brand-morph/InputMorphsIntoLogo.tsx +215 -0
  289. package/skills/hyper-animator-codex/references/shotcraft/source/demos/voice-waveform-live/VoiceWaveformLive.tsx +171 -0
  290. package/skills/hyper-animator-codex/references/shotcraft/source/demos/wall-reveal-moves/BentoLightUp.tsx +135 -0
  291. package/skills/hyper-animator-codex/references/shotcraft/source/demos/wipe-transitions/BlindsSlice.tsx +107 -0
  292. package/skills/hyper-animator-codex/references/shotcraft/source/demos/wipe-transitions/ClockWipe.tsx +83 -0
  293. package/skills/hyper-animator-codex/references/shotcraft/source/demos/word-relay-filmstrip/WordRelayFilmstrip.tsx +300 -0
  294. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/Root.tsx +15 -0
  295. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/Caption.tsx +49 -0
  296. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/DigitRoll.tsx +44 -0
  297. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/FlashCut.tsx +19 -0
  298. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/Main.tsx +163 -0
  299. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/PaperTitleCard.tsx +89 -0
  300. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/PageCam.tsx +145 -0
  301. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneDetail.tsx +146 -0
  302. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneFlyIn.tsx +447 -0
  303. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneOpen.tsx +532 -0
  304. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneOutroLive.tsx +394 -0
  305. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/ScenePapers.tsx +185 -0
  306. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneWbr.tsx +299 -0
  307. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/index.ts +4 -0
  308. package/skills/hyper-animator-codex/references/shotcraft/source-notes.md +10 -0
  309. package/skills/hyper-animator-codex/scripts/generate_minimax_music.mjs +27 -10
  310. package/skills/hyper-animator-codex/scripts/generate_minimax_tts.mjs +142 -13
  311. package/skills/hyper-animator-codex/scripts/generate_subtitles.mjs +42 -3
  312. package/skills/hyper-animator-codex/scripts/minimax_runtime_config.mjs +3 -3
  313. package/skills/hyper-animator-codex/scripts/query_shotcraft.mjs +140 -0
  314. package/skills/hyper-animator-codex/scripts/validate_hyperframes_html.py +22 -0
  315. package/skills/hyper-animator-codex/scripts/validate_provider_policy.mjs +108 -0
  316. package/skills/hyper-animator-codex/scripts/validate_shot_plan.mjs +193 -0
  317. package/skills/hyper-animator-codex/vendor/music-beat-detector/beat_detector/analyzer.py +3 -1
  318. package/skills/hyper-animator-codex/vendor/music-beat-detector/beat_detector/beat.py +37 -1
@@ -0,0 +1,65 @@
1
+ // origin: 模板片源仓库(本库模板未包含 3D 版,需 three + @react-three/fiber + @remotion/three)
2
+ import * as THREE from 'three';
3
+ import { useMemo } from 'react';
4
+
5
+ /** Radial-gradient contact shadow texture, generated once. */
6
+ const useShadowTexture = () => {
7
+ return useMemo(() => {
8
+ const c = document.createElement('canvas');
9
+ c.width = c.height = 128;
10
+ const ctx = c.getContext('2d')!;
11
+ const g = ctx.createRadialGradient(64, 64, 8, 64, 64, 64);
12
+ g.addColorStop(0, 'rgba(58,51,42,0.32)');
13
+ g.addColorStop(1, 'rgba(58,51,42,0)');
14
+ ctx.fillStyle = g;
15
+ ctx.fillRect(0, 0, 128, 128);
16
+ const tex = new THREE.CanvasTexture(c);
17
+ return tex;
18
+ }, []);
19
+ };
20
+
21
+ /**
22
+ * A paper card lying flat on the desk. Plane with the UI texture facing up
23
+ * (texture top edge points toward world -z), soft contact shadow beneath.
24
+ */
25
+ export const FlatPanel: React.FC<{
26
+ texture: THREE.Texture | null;
27
+ width: number;
28
+ height: number;
29
+ position?: [number, number, number];
30
+ yaw?: number;
31
+ opacity?: number;
32
+ glow?: number;
33
+ shadow?: boolean;
34
+ }> = ({ texture, width, height, position = [0, 0.02, 0], yaw = 0, opacity = 1, glow = 0.3, shadow = true }) => {
35
+ const shadowTex = useShadowTexture();
36
+ const mat = useMemo(() => {
37
+ const m = new THREE.MeshStandardMaterial({
38
+ color: '#fdfcfa',
39
+ roughness: 0.62,
40
+ metalness: 0,
41
+ transparent: true,
42
+ });
43
+ return m;
44
+ }, []);
45
+ mat.map = texture ?? null;
46
+ mat.emissive = new THREE.Color('#ffffff');
47
+ mat.emissiveMap = texture ?? null;
48
+ mat.emissiveIntensity = glow;
49
+ mat.opacity = opacity;
50
+ mat.needsUpdate = true;
51
+
52
+ return (
53
+ <group position={position} rotation={[0, yaw, 0]}>
54
+ {shadow ? (
55
+ <mesh rotation={[-Math.PI / 2, 0, 0]} position={[0.05, -0.012, 0.06]}>
56
+ <planeGeometry args={[width * 1.3, height * 1.3]} />
57
+ <meshBasicMaterial map={shadowTex} transparent opacity={0.85 * opacity} depthWrite={false} />
58
+ </mesh>
59
+ ) : null}
60
+ <mesh rotation={[-Math.PI / 2, 0, 0]} material={mat}>
61
+ <planeGeometry args={[width, height]} />
62
+ </mesh>
63
+ </group>
64
+ );
65
+ };
@@ -0,0 +1,151 @@
1
+ // origin: template/src/aifl/live/PageCam.tsx(模板片同源组件)
2
+ import { AbsoluteFill, Img, interpolate, staticFile, useCurrentFrame, Easing } from 'remotion';
3
+
4
+ export type CamKey = {
5
+ frame: number;
6
+ cx: number;
7
+ cy: number;
8
+ zoom: number;
9
+ rotX?: number; // deg, tilt about the horizontal axis (positive = top leans away, like looking at a table)
10
+ rotY?: number; // deg, tilt about the vertical axis (positive = right edge recedes, i.e. seen from the LEFT)
11
+ rotZ?: number; // deg, in-plane roll
12
+ persp?: number; // px, perspective strength (default 1400; smaller = stronger)
13
+ };
14
+
15
+ const lerp = (a: number, b: number, t: number) => a + (b - a) * t;
16
+
17
+ /**
18
+ * 2.5D camera over a full-page screenshot. (cx, cy) is the page-space CSS
19
+ * point centered in the 1920x1080 viewport; zoom is scale (1 = 1 CSS px
20
+ * -> 1 output px). Page textures are 2x, rendered at CSS size via width.
21
+ *
22
+ * Optional 3D: keys may carry rotX/rotZ/persp to tilt the page like a plane
23
+ * seen from an oblique camera. When NO key declares any 3D field, the markup
24
+ * degrades to the original flat pan/zoom and renders pixel-identical.
25
+ *
26
+ * Optional DOF: a screen-space gradient-blur band approximating a focal plane
27
+ * near `focusY` (blurring the far/top part of a tilted page).
28
+ */
29
+ export const PageCam: React.FC<{
30
+ src: string; // staticFile path under textures/live/
31
+ pageH: number; // CSS page height
32
+ keys: CamKey[];
33
+ children?: React.ReactNode; // page-space overlays (positioned in CSS px)
34
+ blur?: number;
35
+ saturate?: number;
36
+ ease?: (t: number) => number;
37
+ dof?: { focusY: number; strength: number };
38
+ // Optional absolute-frame override: when PageCam is rendered inside a
39
+ // <Sequence> (which rebases useCurrentFrame), the parent can pass the
40
+ // restored absolute comp frame so CAM_KEYS keep their absolute frame refs.
41
+ frame?: number;
42
+ }> = ({ src, pageH, keys, children, blur = 0, saturate = 1, ease = Easing.bezier(0.33, 0, 0.15, 1), dof, frame: frameProp }) => {
43
+ const ownFrame = useCurrentFrame();
44
+ const frame = frameProp ?? ownFrame;
45
+ // find segment
46
+ let a = keys[0], b = keys[keys.length - 1];
47
+ for (let i = 0; i < keys.length - 1; i++) {
48
+ if (frame >= keys[i].frame && frame <= keys[i + 1].frame) { a = keys[i]; b = keys[i + 1]; break; }
49
+ }
50
+ const t = a.frame === b.frame ? 1 : interpolate(frame, [a.frame, b.frame], [0, 1], {
51
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp', easing: ease,
52
+ });
53
+ const cx = lerp(a.cx, b.cx, t);
54
+ const cy = lerp(a.cy, b.cy, t);
55
+ const zoom = lerp(a.zoom, b.zoom, t);
56
+
57
+ const filters: string[] = [];
58
+ if (blur > 0) filters.push(`blur(${blur}px)`);
59
+ if (saturate !== 1) filters.push(`saturate(${saturate})`);
60
+
61
+ // Does any key request 3D? If not, keep the original flat markup exactly.
62
+ const has3D = keys.some((k) => k.rotX !== undefined || k.rotY !== undefined || k.rotZ !== undefined || k.persp !== undefined);
63
+
64
+ if (!has3D) {
65
+ return (
66
+ <AbsoluteFill style={{ overflow: 'hidden', backgroundColor: '#faf7f2' }}>
67
+ <div
68
+ style={{
69
+ position: 'absolute', width: 1920, height: pageH,
70
+ transform: `translate(${960 - cx * zoom}px, ${540 - cy * zoom}px) scale(${zoom})`,
71
+ transformOrigin: '0 0',
72
+ filter: filters.length ? filters.join(' ') : undefined,
73
+ }}
74
+ >
75
+ <Img src={staticFile(src)} style={{ position: 'absolute', width: 1920, height: pageH }} />
76
+ {children}
77
+ </div>
78
+ </AbsoluteFill>
79
+ );
80
+ }
81
+
82
+ // 3D mode: pivot rotation/scale about the focal page-point (cx, cy) so it
83
+ // stays centered in the viewport. With rotX=rotZ=0 this reduces to the flat
84
+ // transform (proven identical: (960,540) + zoom*(p - (cx,cy))).
85
+ const rotX = lerp(a.rotX ?? 0, b.rotX ?? 0, t);
86
+ const rotY = lerp(a.rotY ?? 0, b.rotY ?? 0, t);
87
+ const rotZ = lerp(a.rotZ ?? 0, b.rotZ ?? 0, t);
88
+ const persp = lerp(a.persp ?? 1400, b.persp ?? 1400, t);
89
+
90
+ return (
91
+ <AbsoluteFill style={{ overflow: 'hidden', backgroundColor: '#faf7f2' }}>
92
+ <div
93
+ style={{
94
+ position: 'absolute', inset: 0,
95
+ perspective: `${persp * zoom}px`,
96
+ perspectiveOrigin: '960px 540px',
97
+ }}
98
+ >
99
+ {/* LAYOUT-SCALE zoom: instead of scale(zoom) in the transform chain (which
100
+ makes Chromium rasterize the 3D-composited layer at 1920-wide LAYOUT
101
+ size and then GPU-upscale by zoom — everything inside gets downsampled
102
+ before magnification, hence blurry text), we apply the magnification as
103
+ the CSS `zoom` property. `zoom` enlarges the layout box itself, so the
104
+ page + card textures rasterize at the ENLARGED device size and sample
105
+ down from their hi-res sources → sharp glyph edges under perspective.
106
+
107
+ Coordinate math: `zoom` scales this element's local coordinate space by
108
+ `zoom`, so a page point (cx,cy) renders at (cx*zoom, cy*zoom) device px
109
+ from the box origin, and a `translate(Tx px)` renders as Tx*zoom device
110
+ px. To land the focal point (cx,cy) at viewport centre (960,540):
111
+ cx*zoom + Tx*zoom = 960 ⟹ Tx = 960/zoom - cx (likewise Ty).
112
+ Rotations pivot about transform-origin (cx,cy) = the focal point, so
113
+ they leave its screen position unchanged. With rot=0 this reduces to
114
+ translate(960/zoom - cx, 540/zoom - cy) under zoom — identical framing
115
+ to the old scale-based transform, just rasterized at layout scale. */}
116
+ <div
117
+ style={{
118
+ position: 'absolute', width: 1920, height: pageH,
119
+ zoom,
120
+ transform: `translate(${960 / zoom - cx}px, ${540 / zoom - cy}px) rotateY(${rotY}deg) rotateX(${rotX}deg) rotateZ(${rotZ}deg)`,
121
+ transformOrigin: `${cx}px ${cy}px`,
122
+ transformStyle: 'preserve-3d',
123
+ filter: filters.length ? filters.join(' ') : undefined,
124
+ }}
125
+ >
126
+ <Img src={staticFile(src)} style={{ position: 'absolute', width: 1920, height: pageH }} />
127
+ {children}
128
+ </div>
129
+ </div>
130
+
131
+ {/* Depth-of-field approximation: a top-band gradient blur (far part of a
132
+ tilted page reads soft). Screen-space, over the page. */}
133
+ {dof ? (
134
+ <div
135
+ style={{
136
+ position: 'absolute',
137
+ left: 0,
138
+ right: 0,
139
+ top: 0,
140
+ height: Math.max(0, dof.focusY),
141
+ backdropFilter: `blur(${dof.strength}px)`,
142
+ WebkitBackdropFilter: `blur(${dof.strength}px)`,
143
+ maskImage: 'linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,1) 45%, rgba(0,0,0,0) 100%)',
144
+ WebkitMaskImage: 'linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,1) 45%, rgba(0,0,0,0) 100%)',
145
+ pointerEvents: 'none',
146
+ }}
147
+ />
148
+ ) : null}
149
+ </AbsoluteFill>
150
+ );
151
+ };
@@ -0,0 +1,129 @@
1
+ // origin: vibe-motion/skills remotion-3d-ticker assets/VerticalTicker.tsx
2
+ // (2026-07-13 扫描,2026-07-15 吸收;改动:items 泛化为 ReactNode、
3
+ // 遮罩高度/透视角/scale/列宽/间距提为 props)
4
+ import React from 'react';
5
+ import { AbsoluteFill, useCurrentFrame, useVideoConfig } from 'remotion';
6
+
7
+ export interface TickerColumn {
8
+ /** Column content — any ReactNode (screenshot-slice divs, <Img>, text cards…) */
9
+ items: React.ReactNode[];
10
+ /** Seconds for one full loop (one copy of items scrolling its own height) */
11
+ durationInSeconds: number;
12
+ /** -1 scrolls up, 1 scrolls down */
13
+ direction: -1 | 1;
14
+ }
15
+
16
+ export interface VerticalTickerProps {
17
+ columns: TickerColumn[];
18
+ /** Background color, also used by the top/bottom fade masks */
19
+ backgroundColor?: string;
20
+ /** Height of each fade mask in px */
21
+ maskHeight?: number;
22
+ /** rotateX tilt of the whole wall, degrees */
23
+ tiltDeg?: number;
24
+ /** CSS perspective distance in px */
25
+ perspective?: number;
26
+ /** Overall scale of the tilted wall (compensates perspective shrink) */
27
+ scale?: number;
28
+ /** Column width in px */
29
+ columnWidth?: number;
30
+ /** Gap between columns and between items within a column, px */
31
+ gap?: number;
32
+ }
33
+
34
+ /**
35
+ * 3D 透视多列无限纵向滚动墙。每列 [...items, ...items] 翻倍 +
36
+ * progress 取模 translateY 0→-50%:前半段恰好滚出视口时归零,
37
+ * 后半段与前半段像素级一致,循环点不可见。
38
+ * 接缝无痕的前提:-50% 必须恰等于单副本周期(内容高 + n 个 gap)。
39
+ * 源实现用 flex gap(翻倍后只有 2n-1 个 gap)会差 gap/2 px 跳一下,
40
+ * 这里改为每项 marginBottom = gap,容器高恰为周期两倍。
41
+ */
42
+ export const VerticalTicker: React.FC<VerticalTickerProps> = ({
43
+ columns,
44
+ backgroundColor = '#000',
45
+ maskHeight = 200,
46
+ tiltDeg = 20,
47
+ perspective = 1000,
48
+ scale = 1.2,
49
+ columnWidth = 400,
50
+ gap = 30,
51
+ }) => {
52
+ return (
53
+ <AbsoluteFill style={{ backgroundColor, overflow: 'hidden' }}>
54
+ <div
55
+ style={{
56
+ width: '100%',
57
+ height: '100%',
58
+ display: 'flex',
59
+ justifyContent: 'center',
60
+ gap,
61
+ transform: `perspective(${perspective}px) rotateX(${tiltDeg}deg) scale(${scale})`,
62
+ transformOrigin: 'center center',
63
+ }}
64
+ >
65
+ {columns.map((col, idx) => (
66
+ <Column key={idx} {...col} width={columnWidth} gap={gap} />
67
+ ))}
68
+ </div>
69
+ {/* Fade masks sit above the wall so rows enter/exit softly */}
70
+ <div
71
+ style={{
72
+ position: 'absolute',
73
+ top: 0,
74
+ left: 0,
75
+ right: 0,
76
+ height: maskHeight,
77
+ background: `linear-gradient(to bottom, ${backgroundColor} 0%, transparent 100%)`,
78
+ zIndex: 10,
79
+ }}
80
+ />
81
+ <div
82
+ style={{
83
+ position: 'absolute',
84
+ bottom: 0,
85
+ left: 0,
86
+ right: 0,
87
+ height: maskHeight,
88
+ background: `linear-gradient(to top, ${backgroundColor} 0%, transparent 100%)`,
89
+ zIndex: 10,
90
+ }}
91
+ />
92
+ </AbsoluteFill>
93
+ );
94
+ };
95
+
96
+ const Column: React.FC<TickerColumn & { width: number; gap: number }> = ({
97
+ items,
98
+ durationInSeconds,
99
+ direction,
100
+ width,
101
+ gap,
102
+ }) => {
103
+ const frame = useCurrentFrame();
104
+ const { fps } = useVideoConfig();
105
+
106
+ const loopFrames = durationInSeconds * fps;
107
+ const progress = (frame % loopFrames) / loopFrames;
108
+ // up: 0 → -50%; down: -50% → 0(起点即偏移半程,首帧无空白)
109
+ const translateY = direction === -1 ? progress * -50 : -50 + progress * 50;
110
+
111
+ return (
112
+ <div style={{ width, height: '100%', display: 'flex', flexDirection: 'column' }}>
113
+ <div
114
+ style={{
115
+ display: 'flex',
116
+ flexDirection: 'column',
117
+ transform: `translateY(${translateY}%)`,
118
+ willChange: 'transform',
119
+ }}
120
+ >
121
+ {[...items, ...items].map((node, i) => (
122
+ <div key={i} style={{ marginBottom: gap }}>
123
+ {node}
124
+ </div>
125
+ ))}
126
+ </div>
127
+ </div>
128
+ );
129
+ };
@@ -0,0 +1,75 @@
1
+ // origin: 模板片源仓库 helpers
2
+ import { useThree, useFrame } from '@react-three/fiber';
3
+ import { useCurrentFrame, interpolate, Easing } from 'remotion';
4
+ import * as THREE from 'three';
5
+ import { handheld } from './shake';
6
+
7
+ export type CamKeyframe = {
8
+ frame: number;
9
+ pos: [number, number, number];
10
+ look: [number, number, number];
11
+ fov?: number;
12
+ };
13
+
14
+ const easeInOut = Easing.bezier(0.4, 0.0, 0.2, 1.0);
15
+
16
+ /**
17
+ * Animates the default camera through keyframes (frames relative to the
18
+ * enclosing Sequence). Position/look are eased segment by segment.
19
+ * `shake` adds deterministic hand-held drift (world units).
20
+ */
21
+ export const Rig: React.FC<{
22
+ keyframes: CamKeyframe[];
23
+ easing?: (t: number) => number;
24
+ shake?: number;
25
+ }> = ({ keyframes, easing = easeInOut, shake = 0 }) => {
26
+ const frame = useCurrentFrame();
27
+ const { camera } = useThree();
28
+
29
+ let a = keyframes[0];
30
+ let b = keyframes[keyframes.length - 1];
31
+ for (let i = 0; i < keyframes.length - 1; i++) {
32
+ if (frame >= keyframes[i].frame && frame <= keyframes[i + 1].frame) {
33
+ a = keyframes[i];
34
+ b = keyframes[i + 1];
35
+ break;
36
+ }
37
+ }
38
+ const t =
39
+ a.frame === b.frame
40
+ ? 1
41
+ : interpolate(frame, [a.frame, b.frame], [0, 1], {
42
+ extrapolateLeft: 'clamp',
43
+ extrapolateRight: 'clamp',
44
+ easing,
45
+ });
46
+
47
+ const lerp3 = (p: [number, number, number], q: [number, number, number]): THREE.Vector3 =>
48
+ new THREE.Vector3(
49
+ p[0] + (q[0] - p[0]) * t,
50
+ p[1] + (q[1] - p[1]) * t,
51
+ p[2] + (q[2] - p[2]) * t
52
+ );
53
+
54
+ const pos = lerp3(a.pos, b.pos);
55
+ const look = lerp3(a.look, b.look);
56
+ const fov = (a.fov ?? 36) + ((b.fov ?? 36) - (a.fov ?? 36)) * t;
57
+
58
+ useFrame(() => {
59
+ if (shake > 0) {
60
+ const [dx, dy] = handheld(frame, shake);
61
+ pos.x += dx;
62
+ pos.y += dy;
63
+ look.x += dx * 0.6;
64
+ look.y += dy * 0.6;
65
+ }
66
+ camera.position.copy(pos);
67
+ camera.lookAt(look);
68
+ if (camera instanceof THREE.PerspectiveCamera) {
69
+ camera.fov = fov;
70
+ camera.updateProjectionMatrix();
71
+ }
72
+ });
73
+
74
+ return null;
75
+ };
@@ -0,0 +1,40 @@
1
+ // origin: disney-animation-rule-skill implementation-patterns (scanned 2026-07-13, absorbed 2026-07-15)
2
+
3
+ /**
4
+ * Motion-derived signal: sample a pure trajectory at frame±dt (central
5
+ * difference) to get velocity, speed and heading. Drive stretch, smear,
6
+ * blur or shake intensity from `speed`; normalize amplitude by subject
7
+ * size. Works on any pure `posAt` — no per-frame state.
8
+ */
9
+ export const velocityAt = (
10
+ posAt: (f: number) => { x: number; y: number },
11
+ frame: number,
12
+ dt = 0.5,
13
+ ): { vx: number; vy: number; speed: number; direction: number } => {
14
+ const before = posAt(frame - dt);
15
+ const after = posAt(frame + dt);
16
+ const vx = (after.x - before.x) / (2 * dt);
17
+ const vy = (after.y - before.y) / (2 * dt);
18
+ return { vx, vy, speed: Math.hypot(vx, vy), direction: Math.atan2(vy, vx) };
19
+ };
20
+
21
+ /**
22
+ * Follow-through without stateful simulation: a trailing layer is just the
23
+ * primary state sampled at `frame − delayFrames`. Build drag hierarchies by
24
+ * giving each attachment a larger delay and a smaller amplitude (shadow 2f,
25
+ * ghost 4f, …). Never accumulate state across rendered frames — every layer
26
+ * stays a pure function of the frame number.
27
+ */
28
+ export const lagged = <T>(
29
+ stateAt: (f: number) => T,
30
+ frame: number,
31
+ delayFrames: number,
32
+ ): T => stateAt(frame - delayFrames);
33
+
34
+ /**
35
+ * Closed-form damped oscillation for recoil/settle tails, t in frames from
36
+ * impact. Returns a signed offset factor decaying to 0; scale by the desired
37
+ * peak amplitude. freq in cycles/frame (~0.1), damping per frame (~0.15).
38
+ */
39
+ export const dampedSettle = (t: number, freq: number, damping: number): number =>
40
+ t <= 0 ? 0 : Math.exp(-damping * t) * Math.sin(2 * Math.PI * freq * t);
@@ -0,0 +1,11 @@
1
+ // origin: 模板片源仓库 helpers
2
+ /** Deterministic PRNG — same seed always yields the same sequence. */
3
+ export const mulberry32 = (seed: number) => {
4
+ let a = seed | 0;
5
+ return () => {
6
+ a = (a + 0x6d2b79f5) | 0;
7
+ let t = Math.imul(a ^ (a >>> 15), 1 | a);
8
+ t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
9
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
10
+ };
11
+ };
@@ -0,0 +1,10 @@
1
+ // origin: 模板片源仓库 helpers
2
+ /**
3
+ * Deterministic hand-held camera noise. Layered sines at incommensurate
4
+ * frequencies read as organic drift; amplitude in world units.
5
+ */
6
+ export const handheld = (frame: number, amp = 0.012): [number, number, number] => [
7
+ amp * (Math.sin(frame * 0.31) + 0.6 * Math.sin(frame * 0.83 + 1.7)),
8
+ amp * (Math.sin(frame * 0.47 + 0.9) + 0.5 * Math.sin(frame * 1.13 + 3.1)),
9
+ 0,
10
+ ];
@@ -0,0 +1,83 @@
1
+ // 标准占位素材包(孵化轮 PLAYBOOK ③)——灰阶卡片组 + 假 dashboard 面板 +
2
+ // 标题字块。首轮孵化建一次,之后终身复用。demo 只求把运动演清楚,
3
+ // 不求页面质感,全部灰阶。
4
+ import React from 'react';
5
+
6
+ export const G = {
7
+ bg: '#ececea',
8
+ panel: '#f7f7f6',
9
+ line: '#dcdcda',
10
+ bar: '#c2c2c0',
11
+ ink: '#2f2f2f',
12
+ mid: '#8f8f8d',
13
+ card: '#ffffff',
14
+ border: '#d8d8d6',
15
+ side: '#3a3a3a',
16
+ sideBar: '#5a5a58',
17
+ };
18
+
19
+ export const Card: React.FC<{
20
+ w: number; h: number; seed?: number; style?: React.CSSProperties;
21
+ }> = ({ w, h, seed = 0, style }) => {
22
+ const titleW = 45 + ((seed * 37) % 40); // 45–85%
23
+ const lines = 2 + (seed % 3);
24
+ return (
25
+ <div style={{
26
+ width: w, height: h, background: G.card, border: `2px solid ${G.border}`,
27
+ borderRadius: 14, padding: 18, boxSizing: 'border-box',
28
+ display: 'flex', flexDirection: 'column', gap: 10,
29
+ boxShadow: '0 2px 8px rgba(0,0,0,0.06)', ...style,
30
+ }}>
31
+ <div style={{ height: 16, width: `${titleW}%`, background: G.bar, borderRadius: 8 }} />
32
+ {Array.from({ length: lines }).map((_, i) => (
33
+ <div key={i} style={{ height: 10, width: `${88 - i * 14 - (seed % 5) * 3}%`, background: G.line, borderRadius: 5 }} />
34
+ ))}
35
+ <div style={{ marginTop: 'auto', display: 'flex', gap: 8, alignItems: 'center' }}>
36
+ <div style={{ width: 26, height: 26, borderRadius: 13, background: G.mid }} />
37
+ <div style={{ height: 10, width: 64, background: G.line, borderRadius: 5 }} />
38
+ </div>
39
+ </div>
40
+ );
41
+ };
42
+
43
+ // 假 dashboard 面板:A = 3×2 卡片网格,B = 列表行。1920×1080。
44
+ export const FakeDashboard: React.FC<{ variant?: 'A' | 'B' }> = ({ variant = 'A' }) => (
45
+ <div style={{ width: 1920, height: 1080, background: G.bg, display: 'flex' }}>
46
+ <div style={{ width: 220, background: G.side, padding: '28px 22px', boxSizing: 'border-box', display: 'flex', flexDirection: 'column', gap: 18 }}>
47
+ <div style={{ width: 40, height: 40, borderRadius: 10, background: '#777775' }} />
48
+ {Array.from({ length: 7 }).map((_, i) => (
49
+ <div key={i} style={{ height: 12, width: `${60 + ((i * 29) % 35)}%`, background: G.sideBar, borderRadius: 6 }} />
50
+ ))}
51
+ </div>
52
+ <div style={{ flex: 1, display: 'flex', flexDirection: 'column' }}>
53
+ <div style={{ height: 72, background: G.panel, borderBottom: `2px solid ${G.line}`, display: 'flex', alignItems: 'center', padding: '0 32px', gap: 20, boxSizing: 'border-box' }}>
54
+ <div style={{ height: 18, width: 180, background: G.bar, borderRadius: 9 }} />
55
+ <div style={{ marginLeft: 'auto', height: 36, width: 320, background: '#fff', border: `2px solid ${G.line}`, borderRadius: 18, boxSizing: 'border-box' }} />
56
+ <div style={{ width: 36, height: 36, borderRadius: 18, background: G.mid }} />
57
+ </div>
58
+ {variant === 'A' ? (
59
+ <div style={{ flex: 1, padding: 36, display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gridAutoRows: '1fr', gap: 28, boxSizing: 'border-box' }}>
60
+ {Array.from({ length: 6 }).map((_, i) => (
61
+ <Card key={i} w={0} h={0} seed={i + 1} style={{ width: '100%', height: '100%' }} />
62
+ ))}
63
+ </div>
64
+ ) : (
65
+ <div style={{ flex: 1, padding: 36, display: 'flex', flexDirection: 'column', gap: 20, boxSizing: 'border-box' }}>
66
+ {Array.from({ length: 5 }).map((_, i) => (
67
+ <div key={i} style={{ flex: 1, background: G.card, border: `2px solid ${G.border}`, borderRadius: 14, display: 'flex', alignItems: 'center', gap: 24, padding: '0 28px', boxSizing: 'border-box' }}>
68
+ <div style={{ width: 44, height: 44, borderRadius: 10, background: G.mid }} />
69
+ <div style={{ height: 14, width: `${30 + ((i * 23) % 25)}%`, background: G.bar, borderRadius: 7 }} />
70
+ <div style={{ marginLeft: 'auto', height: 12, width: 120, background: G.line, borderRadius: 6 }} />
71
+ </div>
72
+ ))}
73
+ </div>
74
+ )}
75
+ </div>
76
+ </div>
77
+ );
78
+
79
+ export const TitleBlock: React.FC<{ text: string; size?: number }> = ({ text, size = 88 }) => (
80
+ <div style={{ fontFamily: 'Helvetica, Arial, sans-serif', fontWeight: 800, fontSize: size, color: G.ink, letterSpacing: -1 }}>
81
+ {text}
82
+ </div>
83
+ );