dsh-drawai 0.3.3 → 0.4.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 (533) hide show
  1. package/LICENSE +4142 -0
  2. package/README.md +43 -10
  3. package/lib/audio-media.js +147 -0
  4. package/lib/audio-service.js +66 -0
  5. package/lib/canvas-format.js +134 -0
  6. package/lib/client.js +5283 -223
  7. package/lib/comfyui-default-workflow.mjs +1825 -0
  8. package/lib/comfyui-workflow.mjs +426 -0
  9. package/lib/document-commands.js +12 -0
  10. package/lib/document-core.js +29 -0
  11. package/lib/drawing-tasks.js +26 -0
  12. package/lib/imagegen.mjs +596 -0
  13. package/lib/index.js +1758 -129
  14. package/lib/media.js +26 -13
  15. package/lib/mgstyle-core.js +75 -0
  16. package/lib/motion/apply.js +180 -0
  17. package/lib/motion/asset-pack-lock.js +10 -0
  18. package/lib/motion/asset-pack.js +335 -0
  19. package/lib/motion/assets.js +290 -0
  20. package/lib/motion/audio.js +103 -0
  21. package/lib/motion/audiolevel.js +63 -0
  22. package/lib/motion/audiomix.js +144 -0
  23. package/lib/motion/beats.js +337 -0
  24. package/lib/motion/builtin-assets.js +62 -0
  25. package/lib/motion/canvas-spec.js +442 -0
  26. package/lib/motion/capture.js +95 -0
  27. package/lib/motion/cards.js +80 -0
  28. package/lib/motion/collect.js +447 -0
  29. package/lib/motion/delivery.js +112 -0
  30. package/lib/motion/edge-speech.py +90 -0
  31. package/lib/motion/entry.jsx +73 -0
  32. package/lib/motion/export.js +200 -0
  33. package/lib/motion/ffmpeg.js +42 -0
  34. package/lib/motion/fonts.js +71 -0
  35. package/lib/motion/jobs.js +113 -0
  36. package/lib/motion/json.js +4 -0
  37. package/lib/motion/media-catalog.js +59 -0
  38. package/lib/motion/mgstyles/BRIEF-TEMPLATE.md +63 -0
  39. package/lib/motion/mgstyles/briefs/01-flat-vector.md +104 -0
  40. package/lib/motion/mgstyles/briefs/02-line-art.md +97 -0
  41. package/lib/motion/mgstyles/briefs/03-isometric.md +108 -0
  42. package/lib/motion/mgstyles/briefs/05-cel-boil.md +145 -0
  43. package/lib/motion/mgstyles/briefs/06-collage.md +149 -0
  44. package/lib/motion/mgstyles/briefs/07-liquid.md +106 -0
  45. package/lib/motion/mgstyles/briefs/08-morph.md +111 -0
  46. package/lib/motion/mgstyles/briefs/09-bauhaus.md +150 -0
  47. package/lib/motion/mgstyles/briefs/10-synthwave.md +151 -0
  48. package/lib/motion/mgstyles/briefs/12-aurora-glass.md +147 -0
  49. package/lib/motion/mgstyles/briefs/18-hanazi.md +140 -0
  50. package/lib/motion/mgstyles/briefs/19-paperclip.md +156 -0
  51. package/lib/motion/mgstyles/briefs/20-pixel.md +118 -0
  52. package/lib/motion/mgstyles/briefs/22-hud.md +118 -0
  53. package/lib/motion/mgstyles/catalog.d/01-flat-vector.json +34 -0
  54. package/lib/motion/mgstyles/catalog.d/02-line-art.json +34 -0
  55. package/lib/motion/mgstyles/catalog.d/03-isometric.json +35 -0
  56. package/lib/motion/mgstyles/catalog.d/05-cel-boil.json +28 -0
  57. package/lib/motion/mgstyles/catalog.d/06-collage.json +28 -0
  58. package/lib/motion/mgstyles/catalog.d/07-liquid.json +28 -0
  59. package/lib/motion/mgstyles/catalog.d/08-morph.json +28 -0
  60. package/lib/motion/mgstyles/catalog.d/09-bauhaus.json +28 -0
  61. package/lib/motion/mgstyles/catalog.d/10-synthwave.json +28 -0
  62. package/lib/motion/mgstyles/catalog.d/12-aurora-glass.json +28 -0
  63. package/lib/motion/mgstyles/catalog.d/18-hanazi.json +28 -0
  64. package/lib/motion/mgstyles/catalog.d/19-paperclip.json +28 -0
  65. package/lib/motion/mgstyles/catalog.d/20-pixel.json +28 -0
  66. package/lib/motion/mgstyles/catalog.d/22-hud.json +28 -0
  67. package/lib/motion/mgstyles/catalog.json +1356 -0
  68. package/lib/motion/mgstyles/upstream/README.md +147 -0
  69. package/lib/motion/mgstyles/upstream/README.zh-CN.md +147 -0
  70. package/lib/motion/mgstyles/upstream/demos/01-flat-vector/cues.json +1 -0
  71. package/lib/motion/mgstyles/upstream/demos/01-flat-vector/index.html +712 -0
  72. package/lib/motion/mgstyles/upstream/demos/02-line-art/cues.json +331 -0
  73. package/lib/motion/mgstyles/upstream/demos/02-line-art/film.js +676 -0
  74. package/lib/motion/mgstyles/upstream/demos/02-line-art/index.html +18 -0
  75. package/lib/motion/mgstyles/upstream/demos/02-line-art/tools/dump_timing.mjs +26 -0
  76. package/lib/motion/mgstyles/upstream/demos/03-isometric/cues.json +109 -0
  77. package/lib/motion/mgstyles/upstream/demos/03-isometric/index.html +25 -0
  78. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/anim.js +82 -0
  79. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/main.js +219 -0
  80. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/night5.js +180 -0
  81. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/render.js +202 -0
  82. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/title.js +167 -0
  83. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/title5.js +294 -0
  84. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/ui.js +141 -0
  85. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/world.js +1399 -0
  86. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/cues.json +157 -0
  87. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/index.html +34 -0
  88. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/js/engine.js +326 -0
  89. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/js/scene.js +2036 -0
  90. package/lib/motion/mgstyles/upstream/demos/06-collage/assets/gen/layout.json +157 -0
  91. package/lib/motion/mgstyles/upstream/demos/06-collage/cues.json +80 -0
  92. package/lib/motion/mgstyles/upstream/demos/06-collage/index.html +889 -0
  93. package/lib/motion/mgstyles/upstream/demos/07-liquid/cues.json +100 -0
  94. package/lib/motion/mgstyles/upstream/demos/07-liquid/index.html +108 -0
  95. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/engine.js +153 -0
  96. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/links.js +64 -0
  97. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/lookdev.js +46 -0
  98. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/scene.js +963 -0
  99. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/shaders.js +647 -0
  100. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/textsdf.js +114 -0
  101. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/type.js +50 -0
  102. package/lib/motion/mgstyles/upstream/demos/08-morph/cues.json +131 -0
  103. package/lib/motion/mgstyles/upstream/demos/08-morph/glyphs.json +1 -0
  104. package/lib/motion/mgstyles/upstream/demos/08-morph/index.html +901 -0
  105. package/lib/motion/mgstyles/upstream/demos/09-bauhaus/cues.json +270 -0
  106. package/lib/motion/mgstyles/upstream/demos/09-bauhaus/film.js +697 -0
  107. package/lib/motion/mgstyles/upstream/demos/09-bauhaus/index.html +12 -0
  108. package/lib/motion/mgstyles/upstream/demos/10-synthwave/cues.json +44 -0
  109. package/lib/motion/mgstyles/upstream/demos/10-synthwave/index.html +1028 -0
  110. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/cues.json +67 -0
  111. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/index.html +16 -0
  112. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/main.js +967 -0
  113. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/shaders.js +468 -0
  114. package/lib/motion/mgstyles/upstream/demos/18-hanazi/cues.json +117 -0
  115. package/lib/motion/mgstyles/upstream/demos/18-hanazi/index.html +541 -0
  116. package/lib/motion/mgstyles/upstream/demos/19-paperclip/assets/countries-110m.json +1 -0
  117. package/lib/motion/mgstyles/upstream/demos/19-paperclip/assets/stickers/meta.json +34 -0
  118. package/lib/motion/mgstyles/upstream/demos/19-paperclip/cues.json +285 -0
  119. package/lib/motion/mgstyles/upstream/demos/19-paperclip/index.html +599 -0
  120. package/lib/motion/mgstyles/upstream/demos/20-pixel/cues.json +42 -0
  121. package/lib/motion/mgstyles/upstream/demos/20-pixel/film.js +914 -0
  122. package/lib/motion/mgstyles/upstream/demos/20-pixel/index.html +18 -0
  123. package/lib/motion/mgstyles/upstream/demos/22-hud/cues.json +108 -0
  124. package/lib/motion/mgstyles/upstream/demos/22-hud/index.html +125 -0
  125. package/lib/motion/mgstyles/upstream/demos/22-hud/js/holo.js +275 -0
  126. package/lib/motion/mgstyles/upstream/demos/22-hud/js/hud.js +855 -0
  127. package/lib/motion/mgstyles/upstream/demos/22-hud/js/post.js +150 -0
  128. package/lib/motion/mgstyles/upstream/demos/22-hud/js/util.js +65 -0
  129. package/lib/motion/mgstyles/upstream/demos/22-hud/js/v5.js +142 -0
  130. package/lib/motion/mgstyles/upstream/harness/render.mjs +319 -0
  131. package/lib/motion/mgstyles/upstream/manifest.json +269 -0
  132. package/lib/motion/mgstyles/upstream/prompts/01-flat-vector.md +98 -0
  133. package/lib/motion/mgstyles/upstream/prompts/02-line-art.md +95 -0
  134. package/lib/motion/mgstyles/upstream/prompts/03-isometric.md +97 -0
  135. package/lib/motion/mgstyles/upstream/prompts/05-cel-boil.md +95 -0
  136. package/lib/motion/mgstyles/upstream/prompts/06-collage.md +95 -0
  137. package/lib/motion/mgstyles/upstream/prompts/07-liquid.md +98 -0
  138. package/lib/motion/mgstyles/upstream/prompts/08-morph.md +95 -0
  139. package/lib/motion/mgstyles/upstream/prompts/09-bauhaus.md +96 -0
  140. package/lib/motion/mgstyles/upstream/prompts/10-synthwave.md +95 -0
  141. package/lib/motion/mgstyles/upstream/prompts/12-aurora-glass.md +96 -0
  142. package/lib/motion/mgstyles/upstream/prompts/18-hanazi.md +95 -0
  143. package/lib/motion/mgstyles/upstream/prompts/19-paperclip.md +96 -0
  144. package/lib/motion/mgstyles/upstream/prompts/20-pixel.md +96 -0
  145. package/lib/motion/mgstyles/upstream/prompts/22-hud.md +95 -0
  146. package/lib/motion/mgstyles/upstream/rubric.md +51 -0
  147. package/lib/motion/mgstyles/upstream/template.md +36 -0
  148. package/lib/motion/pixelqa.js +198 -0
  149. package/lib/motion/preview.js +95 -0
  150. package/lib/motion/project.js +395 -0
  151. package/lib/motion/qa.js +290 -0
  152. package/lib/motion/reference-media.jsx +10 -0
  153. package/lib/motion/render-settings.js +112 -0
  154. package/lib/motion/render.js +159 -0
  155. package/lib/motion/scene-kit.js +183 -0
  156. package/lib/motion/sfx.js +232 -0
  157. package/lib/motion/shotcraft/ClipCard.tsx +204 -0
  158. package/lib/motion/shotcraft/catalog.json +2461 -0
  159. package/lib/motion/shotcraft/upstream/SKILL.md +286 -0
  160. package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -0
  161. package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -0
  162. package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -0
  163. package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -0
  164. package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -0
  165. package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -0
  166. package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -0
  167. package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -0
  168. package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -0
  169. package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -0
  170. package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -0
  171. package/lib/motion/shotcraft/upstream/assets/scripts/__pycache__/sfx-source.cpython-313.pyc +0 -0
  172. package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -0
  173. package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -0
  174. package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -0
  175. package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -0
  176. package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -0
  177. package/lib/motion/shotcraft/upstream/demos/README.md +120 -0
  178. package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -0
  179. package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -0
  180. package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -0
  181. package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -0
  182. package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -0
  183. package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -0
  184. package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +389 -0
  185. package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -0
  186. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -0
  187. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -0
  188. package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -0
  189. package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -0
  190. package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -0
  191. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -0
  192. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -0
  193. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -0
  194. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -0
  195. package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -0
  196. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -0
  197. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -0
  198. package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -0
  199. package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -0
  200. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -0
  201. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -0
  202. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -0
  203. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -0
  204. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -0
  205. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -0
  206. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -0
  207. package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -0
  208. package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -0
  209. package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -0
  210. package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -0
  211. package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -0
  212. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -0
  213. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -0
  214. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -0
  215. package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -0
  216. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -0
  217. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -0
  218. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -0
  219. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -0
  220. package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -0
  221. package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -0
  222. package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -0
  223. package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -0
  224. package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -0
  225. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -0
  226. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -0
  227. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -0
  228. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -0
  229. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -0
  230. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -0
  231. package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -0
  232. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -0
  233. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -0
  234. package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -0
  235. package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -0
  236. package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -0
  237. package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -0
  238. package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -0
  239. package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -0
  240. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -0
  241. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -0
  242. package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -0
  243. package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -0
  244. package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -0
  245. package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -0
  246. package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -0
  247. package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -0
  248. package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -0
  249. package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -0
  250. package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -0
  251. package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -0
  252. package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -0
  253. package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -0
  254. package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -0
  255. package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -0
  256. package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -0
  257. package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -0
  258. package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -0
  259. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -0
  260. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -0
  261. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -0
  262. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -0
  263. package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -0
  264. package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -0
  265. package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -0
  266. package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -0
  267. package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -0
  268. package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -0
  269. package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -0
  270. package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -0
  271. package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -0
  272. package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -0
  273. package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -0
  274. package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -0
  275. package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -0
  276. package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -0
  277. package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -0
  278. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -0
  279. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -0
  280. package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -0
  281. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -0
  282. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -0
  283. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -0
  284. package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -0
  285. package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -0
  286. package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -0
  287. package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -0
  288. package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -0
  289. package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -0
  290. package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -0
  291. package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -0
  292. package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -0
  293. package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -0
  294. package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -0
  295. package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -0
  296. package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -0
  297. package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -0
  298. package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -0
  299. package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -0
  300. package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -0
  301. package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -0
  302. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -0
  303. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -0
  304. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -0
  305. package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -0
  306. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -0
  307. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -0
  308. package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -0
  309. package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -0
  310. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -0
  311. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -0
  312. package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -0
  313. package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -0
  314. package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -0
  315. package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -0
  316. package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -0
  317. package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -0
  318. package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -0
  319. package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -0
  320. package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -0
  321. package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -0
  322. package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -0
  323. package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -0
  324. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -0
  325. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -0
  326. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -0
  327. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -0
  328. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -0
  329. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -0
  330. package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -0
  331. package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -0
  332. package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -0
  333. package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -0
  334. package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -0
  335. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -0
  336. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -0
  337. package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -0
  338. package/lib/motion/shotcraft/upstream/manifest.json +2715 -0
  339. package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -0
  340. package/lib/motion/shotcraft/upstream/references/final-review.md +121 -0
  341. package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -0
  342. package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -0
  343. package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -0
  344. package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -0
  345. package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -0
  346. package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -0
  347. package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -0
  348. package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -0
  349. package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -0
  350. package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -0
  351. package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -0
  352. package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -0
  353. package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -0
  354. package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -0
  355. package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -0
  356. package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -0
  357. package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -0
  358. package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -0
  359. package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -0
  360. package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -0
  361. package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -0
  362. package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -0
  363. package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -0
  364. package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -0
  365. package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -0
  366. package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -0
  367. package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -0
  368. package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -0
  369. package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -0
  370. package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -0
  371. package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -0
  372. package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -0
  373. package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -0
  374. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -0
  375. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -0
  376. package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -0
  377. package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -0
  378. package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -0
  379. package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -0
  380. package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -0
  381. package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -0
  382. package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -0
  383. package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -0
  384. package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -0
  385. package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -0
  386. package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -0
  387. package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -0
  388. package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -0
  389. package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -0
  390. package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -0
  391. package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -0
  392. package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -0
  393. package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -0
  394. package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -0
  395. package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -0
  396. package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -0
  397. package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -0
  398. package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -0
  399. package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -0
  400. package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -0
  401. package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -0
  402. package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -0
  403. package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -0
  404. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -0
  405. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -0
  406. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -0
  407. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -0
  408. package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -0
  409. package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -0
  410. package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -0
  411. package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -0
  412. package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -0
  413. package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -0
  414. package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -0
  415. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -0
  416. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -0
  417. package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -0
  418. package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -0
  419. package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -0
  420. package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -0
  421. package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -0
  422. package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -0
  423. package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -0
  424. package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -0
  425. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -0
  426. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -0
  427. package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -0
  428. package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -0
  429. package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -0
  430. package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -0
  431. package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -0
  432. package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -0
  433. package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -0
  434. package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -0
  435. package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -0
  436. package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -0
  437. package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -0
  438. package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -0
  439. package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -0
  440. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -0
  441. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -0
  442. package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -0
  443. package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -0
  444. package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -0
  445. package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -0
  446. package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -0
  447. package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -0
  448. package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -0
  449. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -0
  450. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -0
  451. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -0
  452. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -0
  453. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -0
  454. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -0
  455. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -0
  456. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -0
  457. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -0
  458. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -0
  459. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -0
  460. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -0
  461. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -0
  462. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -0
  463. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -0
  464. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -0
  465. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -0
  466. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -0
  467. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -0
  468. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -0
  469. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -0
  470. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -0
  471. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -0
  472. package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -0
  473. package/lib/motion/shotcraft/upstream/references/workbench.md +157 -0
  474. package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -0
  475. package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -0
  476. package/lib/motion/shotcraft/upstream/template/package.json +20 -0
  477. package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -0
  478. package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -0
  479. package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -0
  480. package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -0
  481. package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -0
  482. package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -0
  483. package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -0
  484. package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -0
  485. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -0
  486. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -0
  487. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -0
  488. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -0
  489. package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -0
  490. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -0
  491. package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +389 -0
  492. package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -0
  493. package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -0
  494. package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -0
  495. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -0
  496. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -0
  497. package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -0
  498. package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -0
  499. package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -0
  500. package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -0
  501. package/lib/motion/spec.js +113 -0
  502. package/lib/motion/style-engine.js +153 -0
  503. package/lib/motion/style-frames.js +268 -0
  504. package/lib/motion/sync.js +214 -0
  505. package/lib/motion/theme.js +121 -0
  506. package/lib/motion/voice.js +417 -0
  507. package/lib/motion-agent-files.js +82 -0
  508. package/lib/motion-agent-protocol.js +66 -0
  509. package/lib/motion-agent-tools.js +196 -0
  510. package/lib/motion-agent.js +171 -0
  511. package/lib/motion-capture.js +92 -0
  512. package/lib/motion-core.js +238 -0
  513. package/lib/motion-film-review.js +71 -0
  514. package/lib/motion-library.js +210 -0
  515. package/lib/motion-planner.js +254 -0
  516. package/lib/motion-project.js +80 -0
  517. package/lib/motion-render-worker.js +145 -0
  518. package/lib/motion-session.js +32 -0
  519. package/lib/motion-source.js +49 -0
  520. package/lib/motion-tasks.js +452 -0
  521. package/lib/motion-vision.js +43 -0
  522. package/lib/mxfile.js +27 -7
  523. package/lib/routing/node-runtime.js +14 -0
  524. package/lib/routing/router.js +211 -0
  525. package/lib/routing/vendor/README.md +96 -0
  526. package/lib/routing/vendor/libavoid-routing.js +753 -0
  527. package/lib/routing/vendor/libavoid.min.js +59 -0
  528. package/lib/shotcard-core.js +39 -0
  529. package/lib/shotcard-reference.js +56 -0
  530. package/lib/style-kernel.js +37 -3
  531. package/lib/task-patches.js +26 -2
  532. package/lib/video-export.js +17 -2
  533. package/package.json +29 -4
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: basic-3d-scene
3
+ 一句话: impress.js 式空间演示:卡片以不同位置/旋转/缩放散布 3D 空间,相机取各步姿态之逆依次飞行对齐,末步拉到 OVERVIEW 总览
4
+ 适用: 概念/路线图/三步法的空间化讲述;替代平面 slides 的"每一步都换个空间视角"
5
+ 时长: 约 7.5s(225f@30fps;四站,三段飞行 28/32/32f,每站停留 ≥30f)
6
+ 能量: 中(每次转场有空间惊喜,停留段安静读卡)
7
+ ---
8
+
9
+ ## 意图
10
+ 把"翻页"变成"在想法的空间里旅行":每张卡不仅有位置还有姿态(第二站世界左转 38°、第三站整个画框侧躺 90°),相机对齐它时观众的世界也跟着转——空间变化本身成为"进入新章节"的仪式感。
11
+
12
+ ## 动效核心
13
+ - 核心配方一行:**camera = stepTransform.inverse()**。每站只写卡片自己的 pose(x/y/z/rx/ry/rz/s),相机变换按 `scale(1/s) rotateZ(-rz) rotateY(-ry) rotateX(-rx) translate3d(-x,-y,-z)` 取逆,顺序严格相反
14
+ - demo 用 graphite 暗场(近单色 + 香槟金点缀),video-shotcraft 的三章节卡 Frame / Craft / Ship(品牌短句拆成三章,卡头右侧挂标志 + 字标):卡片 1240×700 **原生 1:1 排版**(对位时就是屏幕像素,不经设计坐标放大,字不糊),156px 标题 + 44px 说明 + 被卡边裁切的 560px 细体章节数字
15
+ - 四站姿态各有戏剧点:STEP01 原点正视 → STEP02 (1690,−260,−650) + ry−38° → STEP03 (2590,830,−850) + rz90°(画框侧躺,相机跟着转正它)→ OVERVIEW s=2.7(相机 1/2.7 拉远),总览站位置按"三卡落在右上、左下留给落版"反解
16
+ - 飞行链式插值:三段飞行 36–64 / 96–128 / 158–190(帧),不对称 in-out bezier(0.62,0,0.16,1);站间飞行途中相机额外拉远 30%(hop,sin 包络)让观众看见空间里的其他卡;飞行段做时间采样运动模糊(快门 0.5f,子帧 1–8 按相机位移自适应)
17
+ - 停留段不死:落位后相机极缓推近 1.5%(下一段起飞时同曲线还原),卡底金色进度线走满当前段;标题在落位前 8f 逐字从线下升起,每张卡只揭示一次
18
+ - 空间参照:70 颗真 3D 浮尘挂在世界坐标里(各有 z),视差全部来自相机;enter/exit 聚焦按"站距"`d = |af − i|` 给 `opacity 0.22–1 + blur 0–7px`,总览段全员回到 0.85
19
+ - OVERVIEW 落版挂在总览站姿态上(放大 2.7 倍排版,相机 1/2.7 看回来 = 屏幕 1:1):眉题是 video-shotcraft 标志 + 字标,"Craft the shot." 150px 衬线逐词升起,尾段 hold 推近 1.5%
20
+
21
+ ## 参数表
22
+ | 参数 | 典型值 | 调节手感 |
23
+ |------|--------|----------|
24
+ | 站点姿态 | 每站至少一个新变换维度 | 只挪 x/y 是平移幻灯片;rz 站(画框旋转)是记忆点,一支片用一次 |
25
+ | 飞行时长 | 28–32f | 有旋转的段别短于 28f,观众需要时间理解"世界在转" |
26
+ | 停留时长 | ≥30f | 读卡位;卡内文字多时优先加停留而不是减飞行 |
27
+ | hop 拉远 | 30% | 0 = 贴着卡面平移,看不到空间;>50% 每段都像总览 |
28
+ | OVERVIEW 缩放 | s=2.7 | 值越大总览越"高空";先定总览海报构图,再反解各站世界坐标 |
29
+ | 聚焦衰减 | opacity 0.22 底 + blur 7px 峰 | 底值别低于 0.2——离焦卡要"在场",纯黑会丢空间感 |
30
+ | perspective | 2600px | 与最大 |z|(850)比值约 3:1;更深的 z 需同步加大 persp 防畸变 |
31
+
32
+ ## 已知坑
33
+ - 逆变换的旋转顺序(Z→Y→X 反着正变换的 X→Y→Z)不能乱——乱序在单轴旋转时看不出来,多轴复合站会歪
34
+ - 卡片 pose 写在卡自身 transform 和相机公式两处消费,加站只改 POSES 表,两处 transform 字符串别动
35
+ - rz90° 站的卡内文字会跟着躺倒,相机转正后才可读——这是设计(转正瞬间"啊看懂了"),但该站文案要短
36
+ - 落版挂在世界里时,最后一段飞行中它是斜的:显影要晚(飞行过半再淡入),逐字揭示等落位前 6f 再开始
37
+ - OVERVIEW 后无返程,作段落收尾用;要循环回 STEP01 就在末尾加一段 fly back(cam 再 lerp 回 POSES[0])
38
+
39
+ ## 参考实现
40
+ demos/camera/basic-3d-scene/
41
+ (Basic3DScene.tsx)
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: crash-zoom-punch
3
+ 一句话: 全景一拍急推到目标特写(6f),落位二选一——过冲回弹(弹性)或撞停震屏(重量)
4
+ 适用: 功能段"点名"镜头——把观众视线一拍按到目标卡/模块上;强调级用撞停
5
+ 时长: 约 0.5s 动作 + 前后 hold(动作 6–11f,前 hold ≥30f 建立全景、后 hold ≥45f 读特写)
6
+ 能量: 高(瞬时冲击,非持续高能)
7
+ 标签: effects
8
+ ---
9
+
10
+ ## 意图
11
+ 慢推近(spotlight-hero-card)是"请看",急推是"看这个!"——一拍之内
12
+ 从全景砸到特写,视线没有选择余地。落位质感分两款:回弹是弹性
13
+ ("看这个"),撞停震屏是重量("就是它"),按强调级选。
14
+
15
+ ## 动效核心
16
+ - zoom 6f ease-in 急加速(如 1→2.6),cx/cy 同步 ease-in 收敛到目标中心
17
+ - 回弹款:zoom 过冲后 5f 回收 3–6%(2.6→2.45)
18
+ - 撞停款:到位帧起机位高频抖 + 指数衰减(amp 14px、τ≈1.8f、6f 收干),
19
+ 不回弹
20
+ - 运动模糊**只包急推段**(撞停震屏段保持清晰抖动):demo 用自写时间采样
21
+ (快门 ≈200°,子帧逐层 opacity 1/(i+1) 等权叠加,子帧数按本帧位移自适应、
22
+ 上限 40),采样按"回波间距 ≤ 字高"配(轮 A 判例);`<CameraMotionBlur>`
23
+ 亦可,但其半透明叠层在近静止帧会让底色发灰偏黄。CrashZoomReal 的页面小字只有 ~14px,
24
+ 回波间距压到 ≤6px(上限 44 层),高速帧再按间距给每层补 ≤4px 微模糊,把离散回波抹成连续拖影
25
+ - 急推前 6–8f 预备回拉 ~3–4%(先退后冲),全景 hold 段给 ~2–3% 的极缓 creep
26
+ - 回弹款 demo(CrashZoomReal)的舞台化:暖黑 ember 舞台上的浏览器窗口(后仰 11°、橙色背光 +
27
+ 地面反光),急推前四只橙色角标从外扩 150px 收拢锁定目标卡(先在全景里点名),急推同曲线把后仰
28
+ 拉正;到位帧一记暖色曝光闪(指数衰减 ~8f),周边压暗 86% + 目标卡轮廓光;回弹收干后相机平滑
29
+ 左移 320px 把卡让到左侧,右栏落一组大号读数(232px 数字 + 说明),尾帧是完整海报
30
+ - 撞停款 demo(CrashImpactReal)的舞台化:lime 暗场"战术 HUD"——真实页面裁成一块正视监视屏、舞台铺淡网格;
31
+ 荧光取景框在全景里扫描跳格(card1 → card5 → card4,各 8f snappy)、28f 收紧锁定并亮出 LOCK 标签后才急推
32
+ (0.76→2.35,子帧间距 ≤8px、上限 36);到位帧是"冲击帧"——卡外 1f 荧光 → 1f 余辉 → 近黑(全片唯一一处整画面冲击),
33
+ 两道荧光冲击波环从卡缘外扩;卡不浮起不发光(砸实)。震屏收干后一道扫描线扫过卡面一次,左右两栏 HUD 读数
34
+ (TARGET / OWNER / STATE 与 250px 等宽「P0」)错峰落位,126f 尾段 hold 42f
35
+
36
+ ## 参数表
37
+ | 参数 | 典型值 | 调节手感 |
38
+ |------|--------|----------|
39
+ | 急推时长 | 6f(4–8f) | >10f 读作普通推近,冲击感消失 |
40
+ | 目标 zoom | 2.4–2.8 | 终点构图以目标卡占画面 60–75% 为准 |
41
+ | 回弹幅度 | zoom 的 3–6% | 过大读作弹簧玩具 |
42
+ | 震屏包络 | 14px·e^(−t/1.8) | 幅度须过肉眼阈值(可感性判例),>20px 读作故障 |
43
+
44
+ ## 已知坑
45
+ - 终点必须是高清纹理槽位(card4-hires 级)——急推后全程特写它,
46
+ 低倍截图糊字(Q2);终点先按 Q2 的高分辨率栅格化技法处理
47
+ - 两款别混用:回弹后再震屏读作穿帮;一支片急推 ≤2 次(P4 手法去重精神)
48
+ - 参数经占位素材调校转正,非实战定稿,首次实战后回验
49
+
50
+ ## 参考实现
51
+ demos/camera/crash-zoom-punch/
52
+ (CrashImpactReal.tsx / CrashZoomReal.tsx)
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: cursor-flyover
3
+ 一句话: 整页俯瞰后,相机依次飞到四个功能区 zoom-in 特写,SVG 光标先一步到位指点、点击留下涟漪并触发界面响应,最后拉回俯瞰
4
+ 适用: 单页产品的功能巡览:一镜带观众看完四个功能区,光标当"导游手指"
5
+ 时长: 约 8.0s(240f@30fps;俯瞰 22f · 四站各 44f(飞行 20f + 停留 24f)· 拉回 24f · hold 18f)
6
+ 能量: 中(等距巡航,节奏靠点击涟漪打点)
7
+ ---
8
+
9
+ ## 意图
10
+ 替代"四个功能四段剪辑"的省镜方案:一个连续相机把四个角串成一条参观动线,光标是观众的注意力代理——它到哪、点哪,观众就看哪。空间连续让功能之间的位置关系也被顺带记住。
11
+
12
+ ## 动效核心
13
+ - demo 用 porcelain 亮场(冷白 + 钴蓝),video-shotcraft 工作台总览(顶栏标志 + 字标)按 1:1 原生排版画在 2400×1500 世界画布上:俯瞰 s=0.66 看全貌,特写 s=1.3(世界 32px 字 → 屏幕 42px,可读)
14
+ - 相机是查表步进:CAMS[0] 俯瞰 → 四个模块中心(左上 Frames rendered → 右上 Shot previews → 右下 Release flags → 左下 Top shots),`x/y/s` 三通道用不对称 in-out(bezier 0.55,0,0.18,1:起步干脆、落位很软)插值;站间飞行途中 s 额外拉远 ~8% 再推回(hop),并按屏幕速度加方向性运动模糊(SpeedBlur amount 0.09,封顶 8px)
15
+ - 变换公式 `translate(960 − x·s, 540 − y·s) scale(s)`——x/y 是"相机对准点"(世界 px),改表即换巡览路线
16
+ - **光标是手、相机是眼**:光标先走(swift 16f,一条与位移垂直的轻弧,起止弧度为 0),相机晚 2f 起步、20f 落定;光标在目标上"瞄"一拍后按下(clickAt = 起步 +22f),按下 3f 缩到 0.84 再过冲回弹;光标画在屏幕空间,屏幕上恒为 40px
17
+ - 四个落点各对准一个真实控件,点击即有界面响应:分段控件 30D→90D(滑块平移 + 大数字旧值上滑、新值从下升起 + 12 根柱错峰弹簧到新高度)/ 数据点 tooltip 过冲弹出 + 引导线下落 / 开关弹簧滑动 + 灰度进度条 0→25% / 表格行染色 + 强调条 + 对勾描线
18
+ - 每次点击触发 80px 圆环涟漪(18f,scale 0.3→1.5 淡出)
19
+ - 第 4 站后相机 smooth 24f 拉回俯瞰,四处状态同框("巡览结束"全家福),尾段极缓推近 1%
20
+
21
+ ## 参数表
22
+ | 参数 | 典型值 | 调节手感 |
23
+ |------|--------|----------|
24
+ | 特写倍率 | s=1.3(俯瞰 0.66) | 世界原生排版,倍率按"要读的字 ≥40px 屏幕字高"反推,>1.6 时模块出画 |
25
+ | 步进节奏 | 飞行 20f / 停留 24f | 停留是读功能位,短于 15f 变"扫过"没有"参观" |
26
+ | 光标领先 | 起步早 2f、到位早 6f | 0 = 光标被相机拖着走(像录屏);>10f 观众先看光标再找画面 |
27
+ | 点击涟漪 | 18f,scale 0.3→1.5 | 涟漪是节拍器,四次点击等距(每 44f)——配 SFX click 四连 |
28
+ | 巡览顺序 | 左上→右上→右下→左下 | 改 CAMS / TARGETS 表即换路线;保持相邻模块相邻访问,对角跳跃会晕 |
29
+ | 收尾拉回 | smooth 24f 回俯瞰 | 不拉回就停在最后一个模块;拉回让四处状态同框成海报 |
30
+
31
+ ## 已知坑
32
+ - 用真实产品截图时,TARGETS 落点要重新标到截图里控件的中心;截图要 ≥1.3 倍特写倍率的原生分辨率(Q2)
33
+ - 相机表的 x/y 是世界 px 坐标,世界画布宽高比变了(如换竖屏)需整表重标
34
+ - 光标与相机已解耦(各自一张表),但两者的起步/到位帧差要成对改,否则点击时相机还在动、界面响应会被运动模糊吃掉
35
+ - 运动模糊别给太多:亮场 UI 在 hop 末段仍高速时,amount > 0.12 会读作"失焦"而不是"运动"
36
+
37
+ ## 参考实现
38
+ demos/camera/cursor-flyover/
39
+ (CursorFlyover.tsx)
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: depth-layer-moves
3
+ 一句话: 分层深度运镜——多层视差滑轨:3 层速度梯度横移出纵深,滑轨落定时主角浮起
4
+ 适用: 平面截图要"有厚度"的段落:卡组 / 列表 / 整页的横向巡览
5
+ 时长: 4–5.5s 持续(demo 165f)
6
+ 能量: 中(质感型)
7
+ ---
8
+
9
+ ## 意图
10
+ 整页平移是"看页面",分层深度是"在页面的空间里"。视差滑轨给横移
11
+ 加纵深(迪士尼多平面摄影机原理,Linear 片同款质感)。
12
+
13
+ ## 动效核心
14
+ - **视差滑轨(3 层 + 0x 字层)**:同一条 drive 位移乘各层系数——远景整页(0.35x + 放大一档 + blur 5px +
15
+ 降饱和 0.7 + 上浓下淡的同色空气薄雾,退成环境)、中景真实卡组(0.7x,主阅读层,无 blur,两层软影落在
16
+ "桌面"上)、近景浮块(1.4x + blur 7px + 深远落影 + 按速度横向拖影,掠过镜头)。demo(MultiplaneReal)用
17
+ sand 暖米色:近景是 5 枚放大的赤陶 / 墨色标签胶囊(取自卡上的真实标签),画框上再钉一层不动的标题
18
+ (0x:video-shotcraft 标志 + 字标眉题,"Your page, in depth." 120px)——字不动、世界在动,视差反而更好读
19
+ - 滑轨有终点:drive 总量按"中景落定时 card4 恰在屏心"反算,不对称 in-out(bezier 0.45,0,0.18,1)130f;
20
+ 落定后主角浮起(elevation 6→26、1.035x、晚于位置收敛 ~8f)+ 赤陶描边 + 「In focus」角标,尾帧是海报;
21
+ 近景胶囊的世界坐标按"落定时只剩两枚压在画框下沿"排布
22
+ - 不拆真实页面排版:整页作为一体成层,独立元素用切片另起层——层间关系是"景深",不是"页面被撕开"
23
+
24
+ ## 参数表
25
+ | 参数 | 典型值 | 调节手感 |
26
+ |------|--------|----------|
27
+ | 视差层系数 | 0.35 / 0.7 / 1.4(+ 0x 字层) | 梯度 ≥2 倍层间才可辨;层数 ≤4 防过载 |
28
+ | 层次锚 | 前后景 blur + 背景降饱和 + 空气薄雾 | 没有 blur/饱和锚,读作"贴片乱飞" |
29
+ | 滑轨终点 | drive 反算到主角居中 | 没终点的匀速横移读作屏保;落定后给主角一拍浮起 |
30
+
31
+ ## 已知坑
32
+ - 主阅读层必须高清纹理且无 blur——观众在读它
33
+ - 整层全屏实时 `filter: blur()` 每帧变化很贵(实测可差 3 倍以上渲染时长):模糊挂在层内的小元素上,别挂在铺满画面的层容器上
34
+ - 视差与 PageCam rot 3D 的组合(斜拍视差)未验证,实战先渲 still 确认
35
+ - 参数经占位素材调校转正,非实战定稿,首次实战后回验
36
+
37
+ ## 参考实现
38
+ demos/camera/depth-layer-moves/
39
+ (MultiplaneReal.tsx)
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: graze-face-tour
3
+ 一句话: 大倾角贴面游走特写——镜头贴着 UI 表面低飞掠过(侧栏树/顶栏/列表当地形),页面文字初始悬浮在界面上空带同形软影,随镜头行进先后加速贴落回界面
4
+ 适用: 功能区巡礼(把 UI 当地景飞掠);配合暗场+霓虹缘光做产品"内部世界"段落;界面内容逐区登场
5
+ 时长: 单段 4–5s;可多段接力延长
6
+ 能量: 中高(运镜持续推进+元素连续落位,信息密度高)
7
+ 标签: ui-entrance
8
+ ---
9
+
10
+ ## 意图
11
+ 把 UI 拍成地形:大倾角特写让侧栏树、导航、列表行变成掠过的地貌,
12
+ 浅景深强化"贴面"。戏眼是**文字空中贴落**:文字/组件不是原地淡入,
13
+ 而是悬浮在界面上空(3D z 轴抬高),在空中时往界面投同形软影,
14
+ 随镜头行进先后加速贴落、影子随高度收敛消失——观众看见界面在
15
+ 镜头经过时"完成自己"。影子是可感命门:没有影子,悬浮读作
16
+ 普通位移入场;有影子,空间关系瞬间成立。
17
+
18
+ ## 动效核心
19
+ - 机位:CSS perspective + rotateX/rotateY 大倾角(面几乎侧掠),
20
+ 沿界面一条路径持续推进;浅景深=远处 blur 渐强
21
+ - 悬浮元素:初始悬浮高度 H≈120–180px(沿面法线方向抬起),
22
+ easeFall 加速下落+软着陆(落地不回弹或极微回弹)
23
+ - 同形软影:元素原位渲染模糊压暗投影,blur/offset/opacity 全部
24
+ 随当前悬浮高度变化(高=影大而糊而淡,落地=影与本体重合消失)
25
+ - 错峰贴落:各元素落地时刻按镜头行进方向排布(先经过的先落),
26
+ 界面在镜头前"依次完成"
27
+ - 长镜可拆段接力:段间用相邻段交叉淡化(判例:透明度窗口不重叠
28
+ 会产生黑闪帧)
29
+
30
+ ## 参数表
31
+ | 参数 | 典型值 | 调节手感 |
32
+ |------|--------|----------|
33
+ | 悬浮高度 | 120–180px | <80px 影子和位移都读不出;>250px 落地砸得太重 |
34
+ | 影子参数 | blur/offset/opacity 随高度线性收敛 | 影子恒定不随高度变=贴纸感;落地影必须归零 |
35
+ | 贴落错峰 | 按镜头行进方向 0.2→0.85 归一化排布 | 同帧齐落读作开关;乱序落读作 bug;**错峰=错开起点但下落过程重叠并行**,串行等待(一个落完另一个才开始)被裁 |
36
+ | 下落曲线 | easeFall 加速+软着陆 | ease-out 下落读作气球飘落,重力感靠加速 |
37
+ | 段间接力 | 相邻段交叉淡化 ≥8f | 透明度窗口不搭接会黑闪(返工判例 f100 纯黑帧) |
38
+ | 景深 | 远处 blur 渐强 | 全清晰读作平面滚动,浅景深才有"贴面"体感 |
39
+
40
+ ## 已知坑
41
+ - demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
42
+ 首次实战须以真实素材回验
43
+ - 悬空元素别被环境压黑带吞掉:空中元素
44
+ 需追光/提亮 ~1.3x,否则悬浮状态不可感等于没做
45
+ - 与 space-camera-moves/tension-camera-moves 分工:那两张是相机
46
+ 语言本身;本卡=贴面机位 **+ 元素贴落** 的组合签名,缺一半就
47
+ 改用相机卡
48
+ - **贴落节奏语义判例**(与 neon-frame-orbit-drop 互为反例):
49
+ 本卡巡礼镜=错峰并行;整体登场镜必须全体同帧齐落(那张卡的
50
+ 错峰版被裁)。选错语法两边都会被裁
51
+ - 原片(clickup-30)是一条连续上行长镜;复刻用三段接力,段落
52
+ 切换藏在交叉淡化里——实战若做真单长镜,路径规划成本高得多
53
+
54
+ ## 参考实现
55
+ demos/camera/graze-face-tour/
56
+ (GrazeFaceTour.tsx)
57
+ 原片出处:clickup-30.mp4
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: overhead-camera-moves
3
+ 一句话: 俯拍揭示两式——tilt-reveal 俯仰抬正揭示、overhead-tabletop-drop 桌面卡阵横滑骤降扎入
4
+ 适用: 用"俯仰角"讲故事的开场/转场:单页 establishing 用 A,多页巡视择一扎入用 B
5
+ 时长: A 120f(4s)/ B 140f(4.7s)
6
+ 能量: A 中 / B 中高
7
+ 标签: opening、transition
8
+ ---
9
+
10
+ ## 意图
11
+ 库内俯拍视角一直空缺——crane-rise 是"平移+缩放"的升起(俯仰角
12
+ 不动),space-camera C 式 drone-dive 是俯冲降落一镜到底;这两式让
13
+ **俯仰角本身讲故事**:A 是揭示——整页 rotateX 平躺、开场只见远端上缘
14
+ 一条发光的透视窄带(像天际线上的第一道光),机位"抬头"回正,内容一排排
15
+ 涌入视野,像掀开桌上的图纸;B 是选择——三张页面卡平躺成桌面卡阵,相机俯拍横向滑过依次
16
+ 掠过(韦斯·安德森 tabletop),滑到目标页猛地俯冲扎入、抬正成满屏,
17
+ "巡视一圈,就选这张"。选型:单页开场用 A,多页转场/开场用 B。
18
+
19
+ ## 两式选型
20
+ | 式 | 做法 | 适用 |
21
+ |----|------|------|
22
+ | A tilt-reveal | 整页绕下沿铰链 rotateX 86° 正面朝上平躺,40f 抬正(过冲 −2.2° 再软回),角度/缩放/铰链位置/透视/视点高度共用一条进度 | 开场 establishing;单主体 |
23
+ | B overhead-tabletop-drop | 卡阵平躺 rotateX 62°,pan 段只动 translateX 横滑掠过,drop 段角度/缩放/位移三通道同跑扎入落版 | 多页巡视后择一;转场/开场两用 |
24
+
25
+ ## 参数表
26
+ | 参数 | 典型值 | 调节手感 |
27
+ |------|--------|----------|
28
+ | A 俯角 | rotateX 86°(f0–20 极缓 creep 到 83°)→ −2.2°(f60,速度归零)→ 0°(f70),主段 EASE.swift 不对称 in-out、过冲回落 smooth,transformOrigin 50% 100%(下沿铰链) | 首版 −55° 太弱:f0 仍见半页,无"窄带"悬念(实渲判例);视点低于页面平面会看到背面(窄带里的字上下颠倒,实渲判例)——视点要在页面上方;分段各用 out-cubic 会在接缝处速度突变 |
29
+ | A 联动 | perspective 700→1500、视点 y 从铰链上方 300px → 画面中心;scale 2.5→0.84(落定留边看见舞台)、铰链 y 600→935;背景光池与浮尘反向视差下移 150px | perspective 不联动则俯角初始见不到"只露一条";背景不视差读作页面在转、不是相机抬头 |
30
+ | A 收尾 | 机位 f70 落定;38–82 面积图折线描出、80f 终点光点亮起;70–120 极缓推近 1→1.018 | 过冲幅度 ≤3°,再大读作弹簧不是机位;69f 纯静止太长(> 1s 死帧),hold 段要有极缓推近 |
31
+ | B pan 段 | 0–50f 只改 translateX +760→−360(smooth),角度不动;50–58 停 8f 选定(目标稿离桌 16px、它的顶灯亮、另两盏暗到 35%) | pan 段动角度 = 两段职责糊掉(判例:pan 巡视、drop 表态);没有选定那一拍,扎入读作随机 |
32
+ | B drop 段 | 58–86f 三通道同跑:rotateX 62→−1.6→0.5→0(零速起步的不对称曲线 + smooth 回落过冲)、scale 1→2.04→2.0(起步带 ~5% 预备回缩)、translateX −360→0 | 三通道必须同跑;分先后读作两个动作;pan 静止后直接 out-cubic 起跳是速度突变 |
33
+ | B 卡阵 | 卡片 996×560(16:9 精确比),落版 scale 2.0 恰满屏正视;transform 顺序 translateX→rotateX→scale | 顺序错了 pan 会带出弧线轨迹 |
34
+ | B 地板 | 深石墨台面 + 发丝网格 + 每张稿一盏顶灯光池/体积光束 + 稿下印刷标签(01 SHOTS…) | 无地板参照,横滑段读不出"相机在动";暗桌白稿的反差就是层次 |
35
+ | B 收尾 | 机位 f94 落版;98–118 页面内金色镜头块滑入分镜板空槽(一次过冲);94–140 极缓推近 1→1.012 | 落版后完全静止 47f 偏死;页面内给一个小动作收尾 |
36
+
37
+ ## 已知坑
38
+ - demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
39
+ 首次实战须以真实素材回验
40
+ - 大角度透视下卡片必须 backfaceVisibility hidden + translateZ(4px)
41
+ 兜底,否则个别帧背面/深度穿帮
42
+ - A 与 crane-rise-reveal 同片二选一——都是开场揭示,两个"揭示开场"
43
+ 等于没有揭示
44
+ - B pan 段角度锁死是命门(两段职责分离判例):巡视归巡视、扎入归
45
+ 扎入,混着动观众不知道相机想干嘛
46
+ - 两式都是"相机大动作",与 space-camera/crane-rise 同屏段落互斥,
47
+ 一个段落只能有一个持镜人
48
+
49
+ ## 参考实现
50
+ demos/camera/overhead-camera-moves/
51
+ (OverheadTabletopDrop.tsx / TiltReveal.tsx)
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: space-camera-moves
3
+ 一句话: 3D 空间化运镜两式——exploded-view 爆炸分解(构件沿 Z 炸开再合体)、drone-dive-landing 无人机俯冲降落
4
+ 适用: 把平面页面当 3D 实体拍的高光段落;两式都是"大动作",一支片合计 ≤2 次
5
+ 时长: A 170f(5.7s,炸开-悬停-合体-收尾标题全程);C 105f(3.5s,俯冲 69f + 落定 hold 36f)单向俯冲
6
+ 能量: 高
7
+ ---
8
+
9
+ ## 意图
10
+ depth-layer 卡是给平移加纵深——层在动、页面还是页面。这两式更进一步:
11
+ 整页被当成一个 3D 实体,相机(或世界)绕着它做实拍级机动。两式叙事
12
+ 语义各占一格:A 说"看看它由什么组成"(拆解展示,Apple 发布片语言);
13
+ C 说"从全局俯瞰砸到主角"(上帝视角一头扎进 hero 特写,全景→焦点)。
14
+
15
+ ## 两式选型
16
+
17
+ | 式 | 做法 | 适用段落 |
18
+ |----|------|----------|
19
+ | A exploded-view | 整页 3/4 轴测平躺,构件沿页面法线错峰炸开悬停(配编号标注),一拍后逆序合体落锤收口 | 架构/组成展示:"这个产品里有什么";模块总览段 |
20
+ | C drone-dive-landing | 近垂直俯角悬停 → 猛扎俯冲 → 气垫减速停在 hero 卡特写 | 开场定场→入题;全局地图砸进单点的章节启动 |
21
+
22
+ ## 参数表
23
+ | 参数 | 典型值 | 调节手感 |
24
+ |------|--------|----------|
25
+ | A 空间基座 | perspective 2400 + `translate·scale·rotateX(54°)·rotateZ(−34°)` 轴测 + preserve-3d;炸开时机位拉远 0.56→0.47 并下移给层堆留画面;悬停期环绕 rotateZ +10°、俯角收 4° | 正面微倾(18°/−12°)只读作"浮起",轴测平躺才像爆炸图;悬停环绕让层间视差读出深度 |
26
+ | A 炸开 | 5 层 translateZ 150/270/400/520/640,弹簧(damping 15、stiffness 120)错峰 5f | 页面上越靠远端(顶部)的层要越高,否则低处的层升起后挡住上方层;深度全同读作整页浮起 |
27
+ | A 合体 | 标注先撤(ease-in 8f),层逆序 ease-in 14f、错峰 3f;落座帧整组下沉 8px 阻尼回弹 + 台面接触影一紧,随后一道扫光掠过整页 | 落锤必须有——没有它合体读作软趴趴的淡入;但不用抖屏(Q3),下沉回弹 + 影子收紧同样有"咔" |
28
+ | A 深度锚 | 各层投到底板的影随高度下移变虚变淡 + 每层背后一片厚度边 + 底板露出构件虚线插槽 | 三个线索缺一层间关系就糊 |
29
+ | A 标注 | 锚点 = 层外缘中点的 3D 投影(与 CSS 同一套矩阵手算),左右两栏、水平引线到栏前一折;标题 44px + 说明 30px,描线 8f + 升起 12f,错峰 6f | 引线从层中间拉出会穿过别的层;标注字 <32px 读不清 |
30
+ | C 行程 | 同一条 p 驱动 rotateX 72°→0 + scale 0.42→1.35 + translate 收拢;origin 钉死 hero 卡中心(如 518,335);页面按终点倍率 1.35 布局 + CSS zoom 栅格化再缩回,特写文字不糊 | 一条 p = 一台相机一次机动;分开驱动读作三个动画打架 |
31
+ | C 速度曲线 | 0–24f 上帝视角建立 + 上提预备(行程倒退 2.5%)→ 主俯冲 25f Easing.in(cubic) 吃 82% 行程 → 气垫 20f Easing.out(poly(5)) 走 18% → 落定 hold 36f | 切换帧速度骤降 = 气垫顶住的体感;82/18 比例比帧数更关键 |
32
+ | C 氛围 | 场景包 CameraMotionBlur(shutterAngle 220, samples 12),背景与颗粒放在模糊之外;页面悬停在同一 3D 世界的点阵地面上方(起始 lift 150),俯冲时点阵向镜头涌来;地面同形接触影随降落收紧变实、触地前淡到 0;落定后 hero 外一圈轻压暗收焦 | 软影卖"悬空高度";blur 卖速度,缺一维就假;大面积渐变放进多重采样会量化出色环,背景留在模糊外 |
33
+
34
+ ## 已知坑
35
+ - demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
36
+ 首次实战须以真实素材回验
37
+ - 两式都吃真实截图分层/高清纹理:A 需页面按构件切块截图(顶栏/侧栏/
38
+ 卡各自独立成图,整页一张图炸不开);C 终点是特写,素材先按
39
+ 审美准则 Q2 的高分辨率栅格化技法处理
40
+ - C 式易错:Remotion 无 Easing.quint,写 Easing.poly(5)(本批实渲踩坑)
41
+ - A 式构件布局要绝对定位复刻原页面网格(demo 里 5 层:侧栏/图表/助手/指标/命令栏),
42
+ 流式布局做不了 per-构件 translateZ
43
+
44
+ ## 参考实现
45
+ demos/camera/space-camera-moves/
46
+ (DroneDiveLanding.tsx / ExplodedView.tsx)
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: steep-tilt-glide
3
+ 一句话: 固定镜头下直立页面以 60° 强透视侧立(右近左远),页面自身沿其 3D 横面方向滑移掠过镜头(物动镜不动),滑移带速度重影、文字组件悬空贴落、由暗揭亮
4
+ 适用: 长页面/多区块 UI 的炫技巡览(内容依次滑过固定机位);暗场霓虹调性;与贴面运镜卡互补的"侧掠"机位
5
+ 时长: 4s(120f)单镜;页面越宽越可拉长
6
+ 能量: 中高(透视炫技+持续运动,但节奏是匀的)
7
+ 标签: ui-entrance
8
+ ---
9
+
10
+ ## 意图
11
+ 把页面立成一堵斜墙:镜头钉死不动,60° 强透视让右缘贴脸、左缘
12
+ 消失在灭点,页面自己沿自身平面横向滑移——内容像列车车厢一样
13
+ 依次掠过。命门是**物动镜不动**:perspective/origin/rotY 全程常数,
14
+ 唯一动的量是页面局部 translateX——镜头一动语义就变成运镜炫技,
15
+ 这里的戏是"页面在自我展示"。角度经三轮收敛为精确 60°
16
+ (-45°"不对"→-53°"再大一点"→-60°选中)。
17
+
18
+ ## 动效核心
19
+ - 镜头常数:perspective 1100、origin 30% 58%、rotateY(-60°)+
20
+ rotateZ(-2°),transformOrigin left top,全程一个数不变
21
+ - 页面:超宽面板(6200×2400@内容坐标),沿局部 X 轴 +60→-4100
22
+ 滑移,bezier(0.3,0.12,0.72,0.9)——起步柔和后近匀速,尾段斜率
23
+ 不归零(不安定停死)
24
+ - 速度重影:拖尾层=过去时刻(f-1.6/-3.2/-4.8 三层,权重递减)的局部位置重投影,
25
+ 透明度 ∝ 滑移速度(快时重影浓)
26
+ - 悬空贴落:页面元素 FloatWrap 悬浮 230–280px 带同形软影,随
27
+ 滑移进程错峰贴落(巡礼语法)
28
+ - 揭亮:起始面板压暗 0.7,~1.4s 揭到全亮;左缘额外渐变阴影同退
29
+
30
+ ## 参数表
31
+ | 参数 | 典型值 | 调节手感 |
32
+ |------|--------|----------|
33
+ | 倾斜角 | rotateY **-60°**(用户精确定值) | -45° 被裁"角度不对"、-53°"再大一点";>-70° 内容读不清 |
34
+ | 运动模型 | 镜头全常数、页面自移 | **命门**——镜头横移版被裁"镜头是固定的,页面本身往其3d空间的横面方向移动" |
35
+ | 滑移曲线 | 尾段斜率不归零的 bezier | 中途停死被抓(v4 返工);全 linear 少了起步呼吸 |
36
+ | 重影 | 透明度∝速度,三层 f-1.6/-3.2/-4.8 | 恒定重影读作重像故障 |
37
+ | 页面宽度 | ≥3 屏内容 | 太窄滑两秒就完,撑不起一镜 |
38
+ | 悬空贴落 | 错峰(巡礼语法)+ 影随高度 | 语义判例见 graze-face-tour/orbit-drop 三卡族 |
39
+
40
+ ## 已知坑
41
+ - demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
42
+ 首次实战须以真实素材回验
43
+ - 角度判例:透视角是本卡身份,实战微调范围建议 55–65°,出这个
44
+ 区间等于换手法
45
+ - 与 graze-face-tour 分工:那张镜头动(贴面游走)、页面静;本卡
46
+ 镜头静、页面动。同段落二选一
47
+ - 超宽页面手绘成本高;实战可用真实长截图代替(滑移逻辑不变)
48
+
49
+ ## 参考实现
50
+ demos/camera/steep-tilt-glide/
51
+ (SteepTiltGlide.tsx)
52
+ 原片出处:clickup-30.mp4
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: tension-camera-moves
3
+ 一句话: 情绪运镜两式——bullet-time 冻结环绕、pull-back 拉远孤立,相机替观众"感受"而非"看"
4
+ 适用: 情绪节点(震撼/收束)的运镜语言;与 space-camera-moves 的"炫技大动作"互补——这两式动作小、情绪重
5
+ 时长: 单式 5–6s(150–170f);全片合计 ≤2 式(各 ≤1 次)
6
+ 能量: A 高 / B 低收
7
+ ---
8
+
9
+ ## 意图
10
+ space-camera-moves 三式是"把页面当 3D 实体拍"的高光炫技;这两式相反——
11
+ 动作本身克制,全部劲道在情绪语义上:A 说"这一刻值得停下时间看"
12
+ (运动中的元素被冻住、相机绕行审视);B 说"最后只剩这一件事"
13
+ (后拉中周围逐层熄灭,孤悬一点收束全片)。两式各占一个情绪格,
14
+ 是分镜阶段"这一段观众该感到什么"的直接词汇。
15
+
16
+ ## 两式选型
17
+ | 式 | 做法 | 适用 |
18
+ |----|------|------|
19
+ | A bullet-time-freeze-orbit 冻结环绕 | 图表生长到一半连同柱顶喷出的火花一起冻住(火花悬在半空、拖尾保留),相机在真 3D 场景里绕面板 rotateY 扫 52° 再回,时间恢复接着长完 | 核心数据/图表的加冕时刻;"值得停表看"的一格 |
20
+ | B pull-back-isolation 拉远孤立 | 从发光主卡特写后拉,8 张兄弟卡按距离错峰熄灭、背景沉黑,孤卡悬在暗场中央 | 结尾收束;"全片只为这一个数字"的谢幕 |
21
+
22
+ ## 参数表
23
+ | 参数 | 典型值 | 调节手感 |
24
+ |------|--------|----------|
25
+ | A 双时钟 | 内容动画吃 `eff`(速度坡道积分:8f smooth 刹停 → 冻结 52f → 8f 恢复),相机吃真实 f | 命门:冻结期内容必须肉眼可见地完全静止,相机却在动——两个时钟各管各的;硬停硬起没有子弹时间的变速感 |
26
+ | A 环绕 | perspective 1800 的 preserve-3d 场景(面板 / 带 z 深度的火花 / 网格地面 / 远处点阵墙):rotateY 0→-52°(26f smooth)→ 顶点慢漂 12f → 回 0(22f swift),同步 rotateX 抬 6°、推近 160px | 50–55° 是"绕到侧面看"的下限;>70° 面板变纸片穿帮;没有深度参照物(单面板 + 纯色底)读不出是相机在绕 |
27
+ | A 冻住的运动 | 火花拖尾长度、计数器滚动模糊都按内容时钟的速度算 | 冻结时它们保持"运动中"的形态——冻住的是瞬间,不是静物 |
28
+ | B 后拉 | scale 2.2→0.62 / 110f Easing.out(cubic),origin 锁主卡中心,按 2.2× CSS zoom 布局再缩小 | 前 20f 主卡仍占满画面,开场即特写不需要另加 hold;transform 放大的特写字会糊(Q2) |
29
+ | B 熄灭 | 兄弟卡按 hypot 距离排序,帧 30 起每 8f 一张,16f 内 opacity→0(EASE.out)+ brightness→0.3 + 失焦 5px + 下沉 0.97;背景 60–110f 从亮柔光底交叉沉入带色相深场 | 由近到远熄灭 = "世界向外塌暗";乱序熄灭读作故障 |
30
+ | B 光晕 | 主卡两层冷白 box-shadow 60–100f 淡入,受光上沿同步浮现 | 光晕是"只剩它"的视觉证词,与沉黑同步才成立 |
31
+ | 收尾 | 两式动作完毕 hold ≥30f(A 只留光的极缓呼吸;B 110–150f 真静止) | R1;B 式是全片句号,静止给足 40f+,可在屏幕空间加一句结语 |
32
+
33
+ ## 已知坑
34
+ - demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
35
+ 首次实战须以真实素材回验
36
+ - A 式与 speed-ramp-freeze/impact-feedback 同为时间操纵,同一镜头别叠用
37
+ (帧 remap 互相打架);A 的冻结是"停给你看"+相机动,speed-ramp-freeze 的
38
+ 定格是"停下来标注"——选语义不选形似
39
+ - B 式放结尾时后接 outro-group-photo-launch 会打架(一收一放),二选一
40
+
41
+ ## 参考实现
42
+ demos/camera/tension-camera-moves/
43
+ (BulletTimeFreezeOrbit.tsx / PullBackIsolation.tsx)
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: terminal-3d
3
+ 一句话: 三个终端窗散布 3D 空间,相机窗间飞行、途中正弦拉远,每到一窗打字机敲命令、结果逐行滑出——命令执行的空间叙事流
4
+ 适用: 开发者产品的 CLI/工作流演示:把"三步命令"拍成三站空间旅程
5
+ 时长: 约 8.2s(246f@30fps;三站各约 2–3s 停留 + 两段 30f 飞行)
6
+ 能量: 中(飞行给动感、打字给节奏,整体是沉稳的技术叙事;收在 ● READY 一记亮点)
7
+ ---
8
+
9
+ ## 意图
10
+ 终端输出天生是"平面滚动"的反电影语言,这张卡把它空间化:每条命令占据空间中一个实体窗口,相机像穿过机房一样逐窗拜访。飞行途中的拉远让观众瞥见"还有更多窗口"——工作流的全貌感。
11
+
12
+ ## 动效核心
13
+ - 三窗各持 pose(x/y/z/ry,世界坐标 px),相机走**逆变换**:`translateZ(-pull) rotateX(tilt) rotateY(view−ry) translate3d(-x,-y,-z)`——写窗口姿态表即得相机路径;每站留 8–10° 侧视角(VIEW 表),落定时窗口不完全正对,读得清且有体积
14
+ - 窗口按真实屏幕尺寸布局(1180×620,命令 52px / 输出 38px 等宽),相机落定时 1:1 栅格化——不靠外层放大,文字不糊(Q2)
15
+ - 两段飞行各 30f(swift 不对称 in-out),途中 `sin(π·u^0.85)×1250px` 拉远鼓包——峰值处画面缩到 ~0.6,三窗同框,"瞥见全貌";按相机屏速加横向方向性模糊(只在飞行段生效)
16
+ - 景深:每窗按与当前站点的距离算 focus → `blur 0–3px + brightness 0.62–1 + opacity 0.72–1`;拉远时景深整体变深(离焦量随 pull 收窄),全景里三窗都认得出是终端
17
+ - 空间锚点:地面是按与 world 完全同构的投影公式逐线画出的 SVG 透视网格(线宽恒定不闪);焦点窗背后一团背光、脚下一摊强调色反光(都按窗心投影到屏幕);每窗后方立一枚 560px 描边步骤号,飞行时与窗口产生视差
18
+ - 打字机三要素:命令逐字符(每字 0.75–1.65f 确定性抖动、空格多停 0.6f)、块光标紧贴字尾(打字中常亮 / 打完 8f 半周期闪)、敲完停 2f 再回车;输出是终端式快速打印(每行 6f snappy 淡入 + 左移 10px 收回,行距 4f),状态位先转 braille 小菊花 ~6f 再落成 ✓
19
+ - 打字起点 TYPE_AT `[8, 94, 184]` 均在到站后——飞行中不打字,注意力不分裂;全片唯一泛光给第三窗的 ● READY 成片名(Q4)
20
+
21
+ ## 参数表
22
+ | 参数 | 典型值 | 调节手感 |
23
+ |------|--------|----------|
24
+ | 拉远鼓包 | sin(π·u^0.85)×1250px | 砍掉后飞行是"平移"没有"起降";<800 时飞行中只看得见两窗,全貌感没了 |
25
+ | 飞行/停留 | 飞 30f,站内 ~60–90f | 停留必须容下打字 ~20f + 输出 ~20f + 读秒 ≥14f |
26
+ | 侧视角 | 8–10°(VIEW 表) | 0° 退化成平面截图;>18° 等宽字被透视压扁读不清(Q6) |
27
+ | 景深 | blur ≤3px,拉远时 ×(1−0.45) | 离焦太狠时飞行全程一片糊,空间关系读不出 |
28
+ | 打字节奏 | 0.75–1.65f/字 + 空格 +0.6f | 匀速逐字读作机器回放;>2.5f/字 观众等得不耐烦 |
29
+ | 输出打印 | 6f snappy、行距 4f | 终端是"吐"出来的,慢滑入(>12f)读作 PPT |
30
+ | 窗口姿态 | x 间距 ~1500px,z −220~+260,ry ±14–28° | 角度差与前后错落是"空间散布感"来源;全部朝正前会退化成平面轮播 |
31
+
32
+ ## 已知坑
33
+ - 相机是逆变换实现,**窗口 transform、world transform、地面/背光的 project() 三处必须同构**——改姿态只改 POSES / VIEW 数据,改相机链就三处一起改,否则地面网格和窗口会"滑"
34
+ - 命令/输出文案是示意的 video-shotcraft 出片流程(shotcraft init / render / export:搭分镜 → 渲染 → 混音导出),换项目真实命令时保持"命令短、输出 3–5 行"的信息结构
35
+ - 光标闪烁按帧取模(8f 半周期),改时长不影响;"打字中常亮、待机慢闪"的对比要保留
36
+ - 第三窗 READY 行在 ~220f 弹出,之后至少留 ~24f hold,否则尾帧没有落定
37
+ - 光标必须紧贴已打出的字符:未打出的字符不要用 opacity 0 占位(会把光标顶到行尾空处悬着)
38
+ - 整摞 SpeedBlur 是全屏 SVG 滤镜,只在飞行段速度 >0 时启用;静止段零开销,别改成常驻
39
+
40
+ ## 参考实现
41
+ demos/camera/terminal-3d/
42
+ (Terminal3D.tsx)
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: before-after-slider-scrub
3
+ 一句话: 前后对比拉杆——"处理前/后"两版叠放,分割杆先猛甩后慢扫,杆过处新版"显影"揭出
4
+ 适用: AI 增强/优化/重构类功能的效果对比段落("用前 vs 用后"一镜讲清)
5
+ 时长: 4–5s
6
+ 能量: 中(快甩是打击点,慢扫是阅读期)
7
+ 标签: interaction
8
+ ---
9
+
10
+ ## 意图
11
+ AI 图像产品发布片的标准对比语法:同一画面"处理前"(低对比灰蒙)
12
+ 与"处理后"(清晰版)叠放,带圆手柄的竖分割杆先从左端猛甩到 70%
13
+ (overshoot 回弹)、停一拍,再以约 1/5 的速度慢扫回来让观众看清
14
+ 差异——**快甩慢扫的速度对比就是节奏**:快甩宣告"变了",
15
+ 慢扫证明"变在哪"。
16
+
17
+ ## 动作阶段
18
+ | 阶段 | 帧段参考 | 内容 |
19
+ |------|------|------|
20
+ | 1 静置 | f0–14 | 杆停 8%,画面几乎全是"处理前";f10–14 先向左预备回拉到 6.5% |
21
+ | 2 快甩 | 12f | 8%→76%(out cubic)过冲 |
22
+ | 3 回弹 | 12f | 76%→70% |
23
+ | 4 停顿 | ~18f | 让观众看清 after |
24
+ | 5 慢扫 | ~48f | 70%→40% 二次展示差异 |
25
+ | 6 定格 | 末 ≥40f | 真静止 |
26
+
27
+ ## 参数表
28
+ | 参数 | 典型值 | 调节手感 |
29
+ |------|--------|----------|
30
+ | 速度比 | 快甩 12f vs 慢扫 48f,约 5:1 | 比例 <3:1 节奏对比不可感 |
31
+ | 揭示 | after 层 clip-path inset 右边界跟随杆 x | 杆和揭示边界错位即穿帮 |
32
+ | 手柄 | 圆形手柄 + 速度差分驱动 scaleX 微拉伸(峰值 1.18),静止自动归 1 | 拉伸给手柄"被甩"的重量感 |
33
+ | before 处理 | 低对比灰蒙版 | before 太难看是自黑,"差"要可信(真实旧版/未优化态) |
34
+ | 角标 | BEFORE/AFTER 角标放内容区 | demo 判例:初版压住侧栏/头像穿帮 |
35
+
36
+ ## 已知坑
37
+ - demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
38
+ 首次实战须以真实素材回验
39
+ - 两版必须同布局同机位——布局不同读作两个页面,对比失效
40
+ (theme-switch-moves 同款约束)
41
+ - 实战 before/after 都用真实截图(Q1):before 是注入旧数据/关闭
42
+ 功能的真实态,不手搓"故意丑"的假 before
43
+ - 慢扫终点停 40% 而非 0%——留一段 after 在画面上定格(结论可见)
44
+ - 声音:快甩一声 whoosh + 回弹轻 tick,慢扫无声或极轻摩擦音(S4)
45
+
46
+ ## 参考实现
47
+ demos/data/before-after-slider-scrub/
48
+ (BeforeAfterSliderScrub.tsx)
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: chart-live-moves
3
+ 一句话: 活体图表三式——oscilloscope-stream 示波流线(曲线右端实时写入+突发尖峰)、unit-dot-swarm-regroup 点阵重组(点群三幕迁徙聚成数字)、axis-rescale-shock 轴爆表重标(新值冲出画框逼 y 轴重标)
4
+ 适用: 数据叙事段落;分别讲"实时性"、"每个数字是一个人"、"增长装不下"
5
+ 时长: 各 165–192f(5.5–6.4s)
6
+ 能量: 中高(数据即剧情)
7
+ ---
8
+
9
+ ## 意图
10
+ 图表不是插图是剧情。三式共同前提(实测判例):**必须真图表语境**
11
+ ——真轴标/真数据/真文案,灰阶占位条测不出数据叙事的表达力。
12
+ A 示波流线:曲线写入点钉在右端上下起伏,旧数据左流出画,中途一次
13
+ 突发尖峰(振幅 2.2×、读数跳大变强调色)——"实时"不用说出口,还有事件;
14
+ B 点阵重组:320 个点(每点≈40 renders)散布→聚三簇(浮 Promo/Launch film/
15
+ Explainer 真标签)→列队成柱(真轴标)→聚成点阵大数字 "12,847"——
16
+ 同一批点,观众能跟着某一颗看它归队;
17
+ C 轴爆表:折线正常爬升,新值顶破图表天花板规线冲出 226px(强调色粗线
18
+ 插进标题区、撞进右上 KPI 数字),停半拍,y 轴"哗"地重标(旧刻度飞出/新刻度滑入/网格
19
+ 加密/旧线压扁成地平线),新值落回+弹真值标签——用"坐标轴装不下"演增长。
20
+
21
+ ## 三式选型
22
+ | 式 | 核心动作 | 适用 |
23
+ |----|----------|------|
24
+ | A oscilloscope-stream | 采样窗平移 8px/f + 高斯脉冲尖峰(带前兆/余震)+ 刹停真静止 + 刹停后缓推向尖峰 | 监控/实时类产品:"活着"的系统 |
25
+ | B unit-dot-swarm-regroup | 三幕 spring 错峰迁徙(stiffness 150、damping 13、错峰 8f),簇用向日葵螺旋紧排,终幕点阵拼数字 | 用户量/构成叙事:"每个点是一个人" |
26
+ | C axis-rescale-shock | 冲出天花板 226px(规线裂口 + 碎屑)+ 重标三联动(刻度换/网格密/旧线压扁)+ 震 10px | 增长曲线高光:"off the charts" 字面化 |
27
+
28
+ ## 参数表
29
+ | 参数 | 典型值 | 调节手感 |
30
+ |------|--------|----------|
31
+ | 真语境 | 真标题/真轴标/真单位/真读数 | **入库前提**:灰阶版三条全数被裁,换真语境后全过 |
32
+ | 主角色 | 强调色标事件/主角(demo:A 珊瑚红尖峰、B 钴蓝 Launch film 簇、C 赤陶爆表段) | 全灰读不出"哪里是重点" |
33
+ | A 流速 | 8px/f | 5.5 已可感,8 更明确;波形纯函数禁随机 |
34
+ | B 点数/点径 | 320 / 直径 20px(迁徙中按速度拉成胶囊,封顶 +20px) | 点太少拼不出数字,太小看不见个体;拉伸过长会糊成一片 |
35
+ | C 冲出幅度 | 天花板规线外 226px | 80px 版不够"爆";真的插进标题区才是事故感 |
36
+ | 收尾 | 三式都要 ≥36f 真静止 | 数据图表尾漂读作还没播完 |
37
+
38
+ ## 已知坑
39
+ - demo 以 video-shotcraft 的示意渲染数据调校(A 深蓝示波屏·渲染农场 fps、B 瓷白信息图·按片型分的渲染量、
40
+ C 沙色瑞士海报·月度渲染量),数值是示意——参数是调校起点非实战定稿,首次实战须以真实素材回验
41
+ - 三式的读数 / 刻度 / 标签都按成片字号做(≥32px,主读数 120–176px);图表撑满画面而不是缩在卡片里
42
+ - 三式是三种独立手法不是套餐——同片用两式以上时各 ≤1 次且错开段落
43
+ - A 的尖峰事件、C 的重标只能发生一次;重复即廉价
44
+ - B 终幕数字字形要预先手算(点数=位点数用满才整齐;参考实现用单线骨架等弧长采样、法向双排,恰好 320 颗无重叠)
45
+ - 与 dataviz-landscape-open(抽象数据地景开场)分工:那是开场氛围,
46
+ 这三式是段落内的具体数据论证
47
+ - 声音:A 尖峰一声警示 tick;B 每幕迁徙一声 whoosh;C 冲出框
48
+ 一声 riser、重标一声"哗啦"
49
+
50
+ ## 参考实现
51
+ demos/data/chart-live-moves/
52
+ (AxisRescaleShockV2.tsx / OscilloscopeStreamV2.tsx / UnitDotSwarmRegroupV2.tsx)