dsh-drawai 0.4.2 → 0.4.4

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 (379) hide show
  1. package/README.md +7 -5
  2. package/lib/client.js +142 -16
  3. package/lib/index.js +7945 -7719
  4. package/lib/motion/asset-pack.js +394 -394
  5. package/lib/motion/assets.js +291 -291
  6. package/lib/motion/demo-assets-lock.js +10 -10
  7. package/lib/motion/mgstyles/briefs/23-ink-wash.md +147 -0
  8. package/lib/motion/mgstyles/catalog.d/23-ink-wash.json +28 -0
  9. package/lib/motion/mgstyles/catalog.json +127 -14
  10. package/lib/motion/mgstyles/upstream/demos/23-ink-wash/brush.js +149 -0
  11. package/lib/motion/mgstyles/upstream/demos/23-ink-wash/film.js +202 -0
  12. package/lib/motion/mgstyles/upstream/manifest.json +28 -3
  13. package/lib/motion/mgstyles/upstream/prompts/23-ink-wash.md +59 -0
  14. package/lib/motion/mgstyles/vendor/README.md +28 -28
  15. package/lib/motion/mgstyles/vendor/modules/d3/LICENSE +13 -13
  16. package/lib/motion/mgstyles/vendor/modules/d3/dist/d3.min.js +2 -2
  17. package/lib/motion/mgstyles/vendor/modules/opentype.js/LICENSE +20 -20
  18. package/lib/motion/mgstyles/vendor/modules/opentype.js/dist/opentype.mjs +14460 -14460
  19. package/lib/motion/mgstyles/vendor/modules/simplex-noise/LICENSE +21 -21
  20. package/lib/motion/mgstyles/vendor/modules/simplex-noise/dist/esm/simplex-noise.js +465 -465
  21. package/lib/motion/mgstyles/vendor/modules/topojson-client/LICENSE +13 -13
  22. package/lib/motion/mgstyles/vendor/modules/topojson-client/dist/topojson-client.min.js +2 -2
  23. package/lib/motion/project.js +5 -1
  24. package/lib/motion/qa.js +116 -6
  25. package/lib/motion/render.js +179 -179
  26. package/lib/motion/scene-kit.js +1 -1
  27. package/lib/motion/shotcraft/upstream/SKILL.md +286 -286
  28. package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -54
  29. package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -200
  30. package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -45
  31. package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -20
  32. package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -65
  33. package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -151
  34. package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -129
  35. package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -75
  36. package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -40
  37. package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -11
  38. package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -10
  39. package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -49
  40. package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -210
  41. package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -423
  42. package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -170
  43. package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -157
  44. package/lib/motion/shotcraft/upstream/demos/README.md +120 -120
  45. package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -112
  46. package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -647
  47. package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -316
  48. package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -82
  49. package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -115
  50. package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -243
  51. package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +388 -388
  52. package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -250
  53. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -305
  54. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -246
  55. package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -390
  56. package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -138
  57. package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -542
  58. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -315
  59. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -299
  60. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -173
  61. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -348
  62. package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -366
  63. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -279
  64. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -184
  65. package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -390
  66. package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -155
  67. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -303
  68. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -290
  69. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -278
  70. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -307
  71. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -215
  72. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -299
  73. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -232
  74. package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -290
  75. package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -273
  76. package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -167
  77. package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -536
  78. package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -164
  79. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -175
  80. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -197
  81. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -241
  82. package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -279
  83. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -230
  84. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -345
  85. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -275
  86. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -229
  87. package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -312
  88. package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -222
  89. package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -295
  90. package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -329
  91. package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -315
  92. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -264
  93. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -260
  94. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -263
  95. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -123
  96. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -187
  97. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -175
  98. package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -305
  99. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -350
  100. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -352
  101. package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -218
  102. package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -297
  103. package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -157
  104. package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -218
  105. package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -202
  106. package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -265
  107. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -457
  108. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -446
  109. package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -249
  110. package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -278
  111. package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -332
  112. package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -358
  113. package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -201
  114. package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -200
  115. package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -208
  116. package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -341
  117. package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -389
  118. package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -293
  119. package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -183
  120. package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -245
  121. package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -222
  122. package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -223
  123. package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -217
  124. package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -343
  125. package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -357
  126. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -187
  127. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -333
  128. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -274
  129. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -270
  130. package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -430
  131. package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -252
  132. package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -106
  133. package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -288
  134. package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -362
  135. package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -168
  136. package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -310
  137. package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -261
  138. package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -459
  139. package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -294
  140. package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -161
  141. package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -248
  142. package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -359
  143. package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -227
  144. package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -162
  145. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -248
  146. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -186
  147. package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -355
  148. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -272
  149. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -262
  150. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -217
  151. package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -285
  152. package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -205
  153. package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -178
  154. package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -147
  155. package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -143
  156. package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -134
  157. package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -217
  158. package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -198
  159. package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -221
  160. package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -312
  161. package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -261
  162. package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -121
  163. package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -153
  164. package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -179
  165. package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -140
  166. package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -309
  167. package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -191
  168. package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -292
  169. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -135
  170. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -124
  171. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -255
  172. package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -173
  173. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -225
  174. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -141
  175. package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -137
  176. package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -147
  177. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -409
  178. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -280
  179. package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -271
  180. package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -385
  181. package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -312
  182. package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -303
  183. package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -77
  184. package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -311
  185. package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -307
  186. package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -349
  187. package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -255
  188. package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -244
  189. package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -217
  190. package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -652
  191. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -153
  192. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -238
  193. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -324
  194. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -354
  195. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -101
  196. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -129
  197. package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -297
  198. package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -57
  199. package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -155
  200. package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -175
  201. package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -153
  202. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -146
  203. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -226
  204. package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -1
  205. package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -193
  206. package/lib/motion/shotcraft/upstream/references/final-review.md +121 -121
  207. package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -199
  208. package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -183
  209. package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -257
  210. package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -382
  211. package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -111
  212. package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -50
  213. package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -95
  214. package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -41
  215. package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -52
  216. package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -39
  217. package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -39
  218. package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -57
  219. package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -51
  220. package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -46
  221. package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -52
  222. package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -43
  223. package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -42
  224. package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -48
  225. package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -52
  226. package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -45
  227. package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -46
  228. package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -44
  229. package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -63
  230. package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -54
  231. package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -58
  232. package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -35
  233. package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -53
  234. package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -42
  235. package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -50
  236. package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -46
  237. package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -56
  238. package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -49
  239. package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -50
  240. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -53
  241. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -53
  242. package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -55
  243. package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -52
  244. package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -60
  245. package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -57
  246. package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -51
  247. package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -41
  248. package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -53
  249. package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -60
  250. package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -55
  251. package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -57
  252. package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -47
  253. package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -37
  254. package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -54
  255. package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -36
  256. package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -56
  257. package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -56
  258. package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -40
  259. package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -60
  260. package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -57
  261. package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -73
  262. package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -87
  263. package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -55
  264. package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -50
  265. package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -59
  266. package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -38
  267. package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -38
  268. package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -59
  269. package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -39
  270. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -61
  271. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -52
  272. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -50
  273. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -66
  274. package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -43
  275. package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -38
  276. package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -38
  277. package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -56
  278. package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -44
  279. package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -38
  280. package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -63
  281. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -57
  282. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -63
  283. package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -58
  284. package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -45
  285. package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -55
  286. package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -49
  287. package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -42
  288. package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -42
  289. package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -45
  290. package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -48
  291. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -55
  292. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -43
  293. package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -41
  294. package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -42
  295. package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -59
  296. package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -55
  297. package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -65
  298. package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -42
  299. package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -64
  300. package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -64
  301. package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -54
  302. package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -91
  303. package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -51
  304. package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -66
  305. package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -38
  306. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -66
  307. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -58
  308. package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -61
  309. package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -64
  310. package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -45
  311. package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -41
  312. package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -51
  313. package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -42
  314. package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -63
  315. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -57
  316. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -75
  317. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -59
  318. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -67
  319. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -60
  320. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -66
  321. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -40
  322. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -45
  323. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -62
  324. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -55
  325. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -37
  326. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -55
  327. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -50
  328. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -43
  329. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -55
  330. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -51
  331. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -51
  332. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -56
  333. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -49
  334. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -57
  335. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -36
  336. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -64
  337. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -47
  338. package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -170
  339. package/lib/motion/shotcraft/upstream/references/workbench.md +157 -157
  340. package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -103
  341. package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -44
  342. package/lib/motion/shotcraft/upstream/template/package.json +20 -20
  343. package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -6
  344. package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -17
  345. package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -65
  346. package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -48
  347. package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -24
  348. package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -192
  349. package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -111
  350. package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -150
  351. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -158
  352. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -468
  353. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -552
  354. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -411
  355. package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -200
  356. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -324
  357. package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +388 -388
  358. package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -4
  359. package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -7
  360. package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -68
  361. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -1
  362. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -24
  363. package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -74
  364. package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -91
  365. package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -213
  366. package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -15
  367. package/lib/motion/style-frames.js +306 -306
  368. package/lib/motion/sync.js +214 -214
  369. package/lib/motion-library.js +1 -1
  370. package/lib/motion-project.js +105 -105
  371. package/lib/motion-render-worker.js +174 -174
  372. package/lib/routing/router.js +222 -222
  373. package/lib/routing/vendor/README.md +96 -96
  374. package/lib/routing/vendor/libavoid-routing.js +753 -753
  375. package/lib/routing/vendor/libavoid.min.js +59 -59
  376. package/lib/svg-export.js +1344 -0
  377. package/lib/video-trace-pool.js +128 -128
  378. package/package.json +3 -2
  379. package/LICENSE +0 -4175
@@ -1,60 +1,60 @@
1
- ---
2
- name: hashtag-to-pill-materialize
3
- 一句话: 话题词打字实体化——居中打出 "#word"(红实心光标恒亮),1 帧硬切变成宽大胶囊标签,hold 后缩小左移落到页面标签位,再 1 帧硬切揭示成品页;"两次硬切一次滑动"的节奏骨架
4
- 适用: 标签/分类/关键词功能的演示段(笔记 app 打 tag、话题聚合);"输入 → 变成 UI 实体 → 归位到成品"的三段式叙事
5
- 时长: 120f(4s)——打字 ~40f + 硬切胶囊 hold ~18f + 缩移 ~14f + 硬切揭示后静置 ~1.2s(原片 18–21.5s)
6
- 能量: 中(干脆利落,靠硬切给劲,不靠弹跳)
7
- 标签: typography
8
- ---
9
-
10
- ## 意图
11
- 文字变实体的常规做法是渐变/morph/展开,原片帧级拆解证明 Bear 反着
12
- 来:**实体化是 1 帧硬切**——上一帧还是文字+光标,下一帧就是完整
13
- 胶囊,无展开无 cross-fade 无回弹。硬切给的是"啪、成了"的确定感,
14
- 任何渐变都会把"实体"软化成"特效"。全段骨架是**两次硬切夹一次
15
- 滑动**:硬切实体化 → 平滑缩移归位 → 硬切揭示成品页。唯一的连续
16
- 运动(缩移)被两记硬切框住,才显得又快又稳。这个节奏骨架是命门,
17
- 三段挪动任何一段的性质(把硬切改渐变、把滑动改硬切)整卡就塌。
18
-
19
- ## 动效核心
20
- - 打字段:几何无衬线(Futura 气质)居中打 "#word",**红实心光标
21
- 恒亮不闪**(原片实测,别加 blink);人手节奏 4–6f/字带确定性抖动
22
- - **实体化 = 1 帧硬切**:文字+光标整层消失,同帧出现无描边浅灰
23
- 胶囊 + 图标 + 词(字号不变、原位等大,# 被图标替换);仅允许
24
- 3f 1.03→1 微落定防死板
25
- - 胶囊 hold ~0.6s → 一段 bezier easeInOut 缩小左移(~0.55x、
26
- ~14f)落到页面标签位,位置/缩放同曲线同起止,中途不分段
27
- - 落位后**再 1 帧硬切**揭示成品页:底色/标题/正文/胶囊配色同帧
28
- 全变,之后真静止收尾
29
- - 实现要点:胶囊按大字号绘制、整体 transform 缩放,且
30
- transformOrigin 必须 0 0 + translate 先行,否则落位中心漂移
31
-
32
- ## 参数表
33
- | 参数 | 典型值 | 调节手感 |
34
- |------|--------|----------|
35
- | 打字节奏 | 4–6f/字(原片 ~6 字/秒),mulberry32 抖动 | 均匀间隔读作机打;光标必须恒亮(**原片实测**不闪烁) |
36
- | 实体化 | **1 帧硬切**(原片帧级实测无任何过渡)+ 3f 1.03→1 微落定 | 加淡入/展开立刻降级成普通 morph;微落定 >4f 读作弹跳 |
37
- | 胶囊几何 | 740×236@1920(**原片实测** 493×157@720p ×1.5),无描边 | 胶囊要"宽大过头"才有实体感;加描边读作按钮 |
38
- | hold | ~18f(0.6s,**原片实测**) | <12f 观众没看清胶囊长啥样就飞了 |
39
- | 缩移 | ~0.55x(**原片实测** 273/493)、14f、bezier(0.5,0,0.25,1) | 缩放与位移必须同曲线;分开调会读作两个动画 |
40
- | 揭示 | 落位 +3f 再 1 帧硬切全页 | 揭示若做转场,第二记硬切没了,骨架塌一半 |
41
-
42
- ## 已知坑
43
- - demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
44
- 首次实战须以真实素材回验
45
- - 与 typewriter-moves(打字呈现)、ui-to-brand-morph(渐变变形成形)
46
- 撞领域:本卡命门是**硬切实体化非渐变变形**——只要你想加过渡,
47
- 就该去用那两张卡而不是改这张
48
- - 早期版本曾杜撰"胶囊飞入下方滑入笔记卡"段,原片对照证伪已砍;
49
- 别复活飞行段
50
- - transformOrigin 默认 50% 50% 会让缩放落位中心漂移 (1−s)×半宽,
51
- 必须 origin 0 0 + translate 到目标中心再 scale(demo 内注释)
52
- - 与原片残余差距:Futura 回退字重、揭示帧正文间距 ~10px 级别偏差;
53
- 节奏与硬切时点已密帧对齐。demo 内容已换成 video-shotcraft 的世界
54
- (原片 "#music" + 音符 → "#shots" + 场记板图标,成品页 "My favorite shots"),
55
- 话题词与原词等长,胶囊几何不变
56
-
57
- ## 参考实现
58
- demos/interaction/hashtag-to-pill-materialize/
59
- (HashtagToPillMaterialize.tsx)
60
- 原片出处:bear-app.mp4 18–21.5s
1
+ ---
2
+ name: hashtag-to-pill-materialize
3
+ 一句话: 话题词打字实体化——居中打出 "#word"(红实心光标恒亮),1 帧硬切变成宽大胶囊标签,hold 后缩小左移落到页面标签位,再 1 帧硬切揭示成品页;"两次硬切一次滑动"的节奏骨架
4
+ 适用: 标签/分类/关键词功能的演示段(笔记 app 打 tag、话题聚合);"输入 → 变成 UI 实体 → 归位到成品"的三段式叙事
5
+ 时长: 120f(4s)——打字 ~40f + 硬切胶囊 hold ~18f + 缩移 ~14f + 硬切揭示后静置 ~1.2s(原片 18–21.5s)
6
+ 能量: 中(干脆利落,靠硬切给劲,不靠弹跳)
7
+ 标签: typography
8
+ ---
9
+
10
+ ## 意图
11
+ 文字变实体的常规做法是渐变/morph/展开,原片帧级拆解证明 Bear 反着
12
+ 来:**实体化是 1 帧硬切**——上一帧还是文字+光标,下一帧就是完整
13
+ 胶囊,无展开无 cross-fade 无回弹。硬切给的是"啪、成了"的确定感,
14
+ 任何渐变都会把"实体"软化成"特效"。全段骨架是**两次硬切夹一次
15
+ 滑动**:硬切实体化 → 平滑缩移归位 → 硬切揭示成品页。唯一的连续
16
+ 运动(缩移)被两记硬切框住,才显得又快又稳。这个节奏骨架是命门,
17
+ 三段挪动任何一段的性质(把硬切改渐变、把滑动改硬切)整卡就塌。
18
+
19
+ ## 动效核心
20
+ - 打字段:几何无衬线(Futura 气质)居中打 "#word",**红实心光标
21
+ 恒亮不闪**(原片实测,别加 blink);人手节奏 4–6f/字带确定性抖动
22
+ - **实体化 = 1 帧硬切**:文字+光标整层消失,同帧出现无描边浅灰
23
+ 胶囊 + 图标 + 词(字号不变、原位等大,# 被图标替换);仅允许
24
+ 3f 1.03→1 微落定防死板
25
+ - 胶囊 hold ~0.6s → 一段 bezier easeInOut 缩小左移(~0.55x、
26
+ ~14f)落到页面标签位,位置/缩放同曲线同起止,中途不分段
27
+ - 落位后**再 1 帧硬切**揭示成品页:底色/标题/正文/胶囊配色同帧
28
+ 全变,之后真静止收尾
29
+ - 实现要点:胶囊按大字号绘制、整体 transform 缩放,且
30
+ transformOrigin 必须 0 0 + translate 先行,否则落位中心漂移
31
+
32
+ ## 参数表
33
+ | 参数 | 典型值 | 调节手感 |
34
+ |------|--------|----------|
35
+ | 打字节奏 | 4–6f/字(原片 ~6 字/秒),mulberry32 抖动 | 均匀间隔读作机打;光标必须恒亮(**原片实测**不闪烁) |
36
+ | 实体化 | **1 帧硬切**(原片帧级实测无任何过渡)+ 3f 1.03→1 微落定 | 加淡入/展开立刻降级成普通 morph;微落定 >4f 读作弹跳 |
37
+ | 胶囊几何 | 740×236@1920(**原片实测** 493×157@720p ×1.5),无描边 | 胶囊要"宽大过头"才有实体感;加描边读作按钮 |
38
+ | hold | ~18f(0.6s,**原片实测**) | <12f 观众没看清胶囊长啥样就飞了 |
39
+ | 缩移 | ~0.55x(**原片实测** 273/493)、14f、bezier(0.5,0,0.25,1) | 缩放与位移必须同曲线;分开调会读作两个动画 |
40
+ | 揭示 | 落位 +3f 再 1 帧硬切全页 | 揭示若做转场,第二记硬切没了,骨架塌一半 |
41
+
42
+ ## 已知坑
43
+ - demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
44
+ 首次实战须以真实素材回验
45
+ - 与 typewriter-moves(打字呈现)、ui-to-brand-morph(渐变变形成形)
46
+ 撞领域:本卡命门是**硬切实体化非渐变变形**——只要你想加过渡,
47
+ 就该去用那两张卡而不是改这张
48
+ - 早期版本曾杜撰"胶囊飞入下方滑入笔记卡"段,原片对照证伪已砍;
49
+ 别复活飞行段
50
+ - transformOrigin 默认 50% 50% 会让缩放落位中心漂移 (1−s)×半宽,
51
+ 必须 origin 0 0 + translate 到目标中心再 scale(demo 内注释)
52
+ - 与原片残余差距:Futura 回退字重、揭示帧正文间距 ~10px 级别偏差;
53
+ 节奏与硬切时点已密帧对齐。demo 内容已换成 video-shotcraft 的世界
54
+ (原片 "#music" + 音符 → "#shots" + 场记板图标,成品页 "My favorite shots"),
55
+ 话题词与原词等长,胶囊几何不变
56
+
57
+ ## 参考实现
58
+ demos/interaction/hashtag-to-pill-materialize/
59
+ (HashtagToPillMaterialize.tsx)
60
+ 原片出处:bear-app.mp4 18–21.5s
@@ -1,55 +1,55 @@
1
- ---
2
- name: picker-carousel-feature-cycle
3
- 一句话: 移动端风竖向选择器——焦点药丸不动、内容穿过它,每项带明显 outQuint 减速吸附后完全静止,按到中心距离分层控制透明度/字号/灰度,落定时药丸做 scaleY 极轻呼吸
4
- 适用: 逐个念出功能名/场景名的列表镜头;"选一个"的交互演示;移动端产品的 picker 类控件展示
5
- 时长: 约3.6s(108f@30fps)
6
- 能量: 中(每一次吸附都是一个节拍点,5 拍匀速推进)
7
- ---
8
-
9
- ## 意图
10
- 把"选择"这件事的物理感做出来:焦点框是固定的,是内容在滚动并被吸住。
11
- 每项停下后必须**真的静止几帧**——连续滚动读作 loading 动画,停顿才读作
12
- "这一项被选中了"。距离衰减(透明度 + 字号 + 灰度三通道同时衰减)是让
13
- 观众视线始终锁在中间那一行的唯一手段。
14
-
15
- ## 动效核心
16
- - 视口 300×170px(5 行 × rowH 34),焦点药丸固定在第 3 行位置
17
- (`top: rowH*2`),白底 + 1px `#E3E3E6` 描边 + `0 2px 8px rgba(0,0,0,.06)`
18
- - 全程 `t 0.05→0.95` 匀速切成 STEPS=5 步;步内位移
19
- `outQuint(min(1, local/(1−HOLD)))`,HOLD=5/14 的尾段完全不动
20
- (每步≈0.65s = 走位≈0.42s + 静止≈0.23s)
21
- - 列表整体 `translateY(rowH*2 − pos*rowH)`——移动的是内容,药丸零位移
22
- - 距离衰减(`d = |i − pos|`)分三段:opacity `d≤1` 时 1→0.55、
23
- `1<d≤2` 时 0.55→0.18;fontSize 17→14px(按 `d/2`);
24
- color `d<0.5` 用 INK、`d<1.5` 用 MID、更远用 `#B9B9BE`
25
- - 行内图标 opacity `max(0, 1 − d*1.6)`——只有焦点行看得见图标
26
- - 落定后药丸 `scaleY 1 + sin(min(1, land/0.6)·π)*0.06` 呼吸一下
27
- (`land` 只在 HOLD 段内 >0,即吸附完成才呼吸)
28
- - 视口上下各 26% 的 alpha 渐隐遮罩(`mask-image` 透明→不透明),让进出项自然消隐
29
-
30
- ## 参数表
31
- | 参数 | 典型值 | 调节手感 |
32
- |------|--------|----------|
33
- | 行高/可见行数 | rowH 34px × 5 行,焦点在第 3 行 | 可见行数必须是奇数,否则焦点行不在视觉正中 |
34
- | 步数 | STEPS=5,窗口 t 0.05→0.95 匀速 | 5 拍是 3.6s 的舒适上限;7 拍每拍就压到 0.46s 读不清 |
35
- | HOLD | 5/14 ≈ 0.357(每步尾段静止≈0.23s) | **命门**:HOLD 归零就变成匀速滚动,完全丢掉"吸附"语义 |
36
- | 吸附缓动 | outQuint(作用在 local/(1−HOLD) 上) | outQuint 的急减速就是"被磁铁吸住"的手感,outCubic 太软 |
37
- | opacity 衰减 | 1 → 0.55(d≤1)→ 0.18(d≤2) | 相邻行留 0.55 是让观众感知"上下还有内容";降到 0.3 就孤立了 |
38
- | fontSize 衰减 | 17→14px,按 min(1, d/2) | 字号差是第二重景深;只做透明度会显得扁 |
39
- | 图标可见性 | max(0, 1 − d·1.6) | 只有焦点行带图标,是"当前项"的额外标记 |
40
- | 药丸呼吸 | scaleY 1→1.06→1,落定后 0.6·HOLD 内走完 | 0.06 已到上限;再大就读作药丸自己在动,抢了内容的戏 |
41
-
42
- ## 已知坑
43
- - 药丸必须是 **`translateY` 零位移的固定层**,`scaleY` 呼吸也不能带
44
- 位移,否则焦点框漂移,"内容穿过焦点"的语义立刻失效
45
- - 距离衰减写在 `fontSize` 上会触发逐帧重排(行高固定所以布局不跳),
46
- 行高若改成 auto 就会抖;rowH 必须写死
47
- - 渐隐用 `mask-image` 做 alpha 遮罩,不要叠纸色色块:底色一旦是渐变/有光斑,色块遮罩就会露出矩形边界带
48
- - 左外侧 24×24 的方形 app 图标(深底 + video-shotcraft 标志反白版)用
49
- `margin:-12px 0 0 -186px` 相对画面中心定位;改视口宽度必须同改 186px
50
- - ITEMS 是 video-shotcraft 的 7 条功能名("Shot recipe cards" 等),换成别的功能名时
51
- 字长变化会影响居中观感——单行超过 300px 就要缩字号而不是换行
52
-
53
- ## 参考实现
54
- demos/interaction/picker-carousel-feature-cycle/
55
- (PickerCarouselFeatureCycle.tsx)
1
+ ---
2
+ name: picker-carousel-feature-cycle
3
+ 一句话: 移动端风竖向选择器——焦点药丸不动、内容穿过它,每项带明显 outQuint 减速吸附后完全静止,按到中心距离分层控制透明度/字号/灰度,落定时药丸做 scaleY 极轻呼吸
4
+ 适用: 逐个念出功能名/场景名的列表镜头;"选一个"的交互演示;移动端产品的 picker 类控件展示
5
+ 时长: 约3.6s(108f@30fps)
6
+ 能量: 中(每一次吸附都是一个节拍点,5 拍匀速推进)
7
+ ---
8
+
9
+ ## 意图
10
+ 把"选择"这件事的物理感做出来:焦点框是固定的,是内容在滚动并被吸住。
11
+ 每项停下后必须**真的静止几帧**——连续滚动读作 loading 动画,停顿才读作
12
+ "这一项被选中了"。距离衰减(透明度 + 字号 + 灰度三通道同时衰减)是让
13
+ 观众视线始终锁在中间那一行的唯一手段。
14
+
15
+ ## 动效核心
16
+ - 视口 300×170px(5 行 × rowH 34),焦点药丸固定在第 3 行位置
17
+ (`top: rowH*2`),白底 + 1px `#E3E3E6` 描边 + `0 2px 8px rgba(0,0,0,.06)`
18
+ - 全程 `t 0.05→0.95` 匀速切成 STEPS=5 步;步内位移
19
+ `outQuint(min(1, local/(1−HOLD)))`,HOLD=5/14 的尾段完全不动
20
+ (每步≈0.65s = 走位≈0.42s + 静止≈0.23s)
21
+ - 列表整体 `translateY(rowH*2 − pos*rowH)`——移动的是内容,药丸零位移
22
+ - 距离衰减(`d = |i − pos|`)分三段:opacity `d≤1` 时 1→0.55、
23
+ `1<d≤2` 时 0.55→0.18;fontSize 17→14px(按 `d/2`);
24
+ color `d<0.5` 用 INK、`d<1.5` 用 MID、更远用 `#B9B9BE`
25
+ - 行内图标 opacity `max(0, 1 − d*1.6)`——只有焦点行看得见图标
26
+ - 落定后药丸 `scaleY 1 + sin(min(1, land/0.6)·π)*0.06` 呼吸一下
27
+ (`land` 只在 HOLD 段内 >0,即吸附完成才呼吸)
28
+ - 视口上下各 26% 的 alpha 渐隐遮罩(`mask-image` 透明→不透明),让进出项自然消隐
29
+
30
+ ## 参数表
31
+ | 参数 | 典型值 | 调节手感 |
32
+ |------|--------|----------|
33
+ | 行高/可见行数 | rowH 34px × 5 行,焦点在第 3 行 | 可见行数必须是奇数,否则焦点行不在视觉正中 |
34
+ | 步数 | STEPS=5,窗口 t 0.05→0.95 匀速 | 5 拍是 3.6s 的舒适上限;7 拍每拍就压到 0.46s 读不清 |
35
+ | HOLD | 5/14 ≈ 0.357(每步尾段静止≈0.23s) | **命门**:HOLD 归零就变成匀速滚动,完全丢掉"吸附"语义 |
36
+ | 吸附缓动 | outQuint(作用在 local/(1−HOLD) 上) | outQuint 的急减速就是"被磁铁吸住"的手感,outCubic 太软 |
37
+ | opacity 衰减 | 1 → 0.55(d≤1)→ 0.18(d≤2) | 相邻行留 0.55 是让观众感知"上下还有内容";降到 0.3 就孤立了 |
38
+ | fontSize 衰减 | 17→14px,按 min(1, d/2) | 字号差是第二重景深;只做透明度会显得扁 |
39
+ | 图标可见性 | max(0, 1 − d·1.6) | 只有焦点行带图标,是"当前项"的额外标记 |
40
+ | 药丸呼吸 | scaleY 1→1.06→1,落定后 0.6·HOLD 内走完 | 0.06 已到上限;再大就读作药丸自己在动,抢了内容的戏 |
41
+
42
+ ## 已知坑
43
+ - 药丸必须是 **`translateY` 零位移的固定层**,`scaleY` 呼吸也不能带
44
+ 位移,否则焦点框漂移,"内容穿过焦点"的语义立刻失效
45
+ - 距离衰减写在 `fontSize` 上会触发逐帧重排(行高固定所以布局不跳),
46
+ 行高若改成 auto 就会抖;rowH 必须写死
47
+ - 渐隐用 `mask-image` 做 alpha 遮罩,不要叠纸色色块:底色一旦是渐变/有光斑,色块遮罩就会露出矩形边界带
48
+ - 左外侧 24×24 的方形 app 图标(深底 + video-shotcraft 标志反白版)用
49
+ `margin:-12px 0 0 -186px` 相对画面中心定位;改视口宽度必须同改 186px
50
+ - ITEMS 是 video-shotcraft 的 7 条功能名("Shot recipe cards" 等),换成别的功能名时
51
+ 字长变化会影响居中观感——单行超过 300px 就要缩字号而不是换行
52
+
53
+ ## 参考实现
54
+ demos/interaction/picker-carousel-feature-cycle/
55
+ (PickerCarouselFeatureCycle.tsx)
@@ -1,57 +1,57 @@
1
- ---
2
- name: segmented-thumb-hero
3
- 一句话: 分段控件 thumb 位移当主角特写——超大胶囊 segmented control 弹簧浮入,描边箭头光标画外滑入按下,白 thumb 8f ease-out 滑到另一段,到位瞬间新图标 spring 弹出、旧图标收起
4
- 适用: "模式切换/二选一"功能的宣告镜头(demo 的 video-shotcraft Prompt→Film、Chat→Agent 式);一个 UI 微交互撑一整镜的特写拍法
5
- 时长: ~3.5s(demo 110f:浮入 18f + 光标 24f + 点击 + 滑动 8f + 图标弹出 + hold)
6
- 能量: 中(微交互特写,精致不轰)
7
- ---
8
-
9
- ## 意图
10
- 产品切到新模式,通常拍法是整个界面换掉。本卡反着来:把 segmented
11
- control 放大到 1080px 宽拍特写,**thumb 那 8 帧位移本身就是叙事**——
12
- "我们从 A 走到了 B"。没有任何页面上下文,控件即舞台。因果链完整:
13
- 光标滑入(有人来了)→ 按下+涟漪(做了决定)→ thumb 滑动(世界响应)
14
- → 新图标弹出(新身份确立)。四拍缺一不可,缺了光标就是 UI 自己在动,
15
- 缺了图标弹出就是切换没有奖励。
16
-
17
- ## 动效核心
18
- - 控件特写尺寸 1080×220,从下 200px 弹簧浮入
19
- (spring damping 14 / stiffness 120),大阴影随落位收小(24→12px)
20
- - 光标是超大描边箭头(130px,白底墨描边):24f Easing.out(cubic)
21
- 从右下画外滑到目标段上;按下 scale 1→0.86→1(3f 下 4f 回)
22
- - **thumb 严格 8f** Easing.out(cubic)(demo 52→60f)——还原原片手感;
23
- 这 8f 是全镜的心跳,前后各拍都在为它服务
24
- - 到位瞬间双动作同帧起:新图标 spring(damping 10, stiffness 220)
25
- 过冲弹出;旧图标 6f Easing.in 塌缩且 width 同步归零让文字自然回流
26
- - 点击涟漪:3px 强调色细环 12f 从点击点(光标尖端)扩散淡出(Easing.out(quad))
27
- ——涟漪确认"按下"发生过,无涟漪点击读作光标路过
28
-
29
- ## 参数表
30
- | 参数 | 典型值 | 调节手感 |
31
- |------|--------|----------|
32
- | 控件尺寸 | 1080×220,thumb 内缩 16px | 缩到 <600px 宽就不是特写了,thumb 位移读不出重量 |
33
- | thumb 时长 | 8f Easing.out(cubic) | >14f 读作慢动作演示视频;<5f 读作瞬移,"滑"没了 |
34
- | 光标滑入 | 24f 从画外,ease-out | linear 或 <14f 读作光标被扔进来;起点必须画外 |
35
- | 按下 | scale 0.86 + 涟漪 12f | 无按下直接滑 thumb,因果链断,读作自动播放 |
36
- | 图标弹出 | spring damping 10/stiffness 220 | damping <8 弹三下抢 thumb 的戏;旧图标不收起文字会挤出控件 |
37
- | 收尾 hold | 新态静置 ≥30f | 切换完立刻切镜,"新模式"没被看清 |
38
-
39
- ## 已知坑
40
- - demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
41
- 首次实战须以真实素材回验
42
- - 与 cursor-flyover 分工:那张是光标在完整页面里
43
- 点击推近(有上下文),本卡是控件脱离页面拍无背景特写——同片可共存,
44
- 但同一次点击别既拍页面版又拍特写版
45
- - 图标塌缩用 width 归零而不是只 scale——只 scale 会留空位,文字不回流,
46
- 控件内出现"幽灵缝"(demo 里 width 与 scale 同步驱动)
47
- - 二段以上(3+ 段)控件慎用:thumb 跨多段滑行 8f 太快读不出停靠,
48
- 拉长又破手感——本卡吃"二选一"最顺
49
- - 涟漪圆环要 zIndex 压在 thumb 之上、圆心锁点击点——跟着 thumb 走
50
- 就成了 thumb 的拖尾,语义变错
51
- - 实战替换素材:段标签/图标换成真功能名即可,但"新段图标带表情"
52
- (demo 笑脸场记板)是奖励感的一半,纯线框图标会淡不少
53
-
54
- ## 参考实现
55
- demos/interaction/segmented-thumb-hero/
56
- (SegmentedThumbHero.tsx)
57
- 原片出处:perplexity-promo 2.3–5s
1
+ ---
2
+ name: segmented-thumb-hero
3
+ 一句话: 分段控件 thumb 位移当主角特写——超大胶囊 segmented control 弹簧浮入,描边箭头光标画外滑入按下,白 thumb 8f ease-out 滑到另一段,到位瞬间新图标 spring 弹出、旧图标收起
4
+ 适用: "模式切换/二选一"功能的宣告镜头(demo 的 video-shotcraft Prompt→Film、Chat→Agent 式);一个 UI 微交互撑一整镜的特写拍法
5
+ 时长: ~3.5s(demo 110f:浮入 18f + 光标 24f + 点击 + 滑动 8f + 图标弹出 + hold)
6
+ 能量: 中(微交互特写,精致不轰)
7
+ ---
8
+
9
+ ## 意图
10
+ 产品切到新模式,通常拍法是整个界面换掉。本卡反着来:把 segmented
11
+ control 放大到 1080px 宽拍特写,**thumb 那 8 帧位移本身就是叙事**——
12
+ "我们从 A 走到了 B"。没有任何页面上下文,控件即舞台。因果链完整:
13
+ 光标滑入(有人来了)→ 按下+涟漪(做了决定)→ thumb 滑动(世界响应)
14
+ → 新图标弹出(新身份确立)。四拍缺一不可,缺了光标就是 UI 自己在动,
15
+ 缺了图标弹出就是切换没有奖励。
16
+
17
+ ## 动效核心
18
+ - 控件特写尺寸 1080×220,从下 200px 弹簧浮入
19
+ (spring damping 14 / stiffness 120),大阴影随落位收小(24→12px)
20
+ - 光标是超大描边箭头(130px,白底墨描边):24f Easing.out(cubic)
21
+ 从右下画外滑到目标段上;按下 scale 1→0.86→1(3f 下 4f 回)
22
+ - **thumb 严格 8f** Easing.out(cubic)(demo 52→60f)——还原原片手感;
23
+ 这 8f 是全镜的心跳,前后各拍都在为它服务
24
+ - 到位瞬间双动作同帧起:新图标 spring(damping 10, stiffness 220)
25
+ 过冲弹出;旧图标 6f Easing.in 塌缩且 width 同步归零让文字自然回流
26
+ - 点击涟漪:3px 强调色细环 12f 从点击点(光标尖端)扩散淡出(Easing.out(quad))
27
+ ——涟漪确认"按下"发生过,无涟漪点击读作光标路过
28
+
29
+ ## 参数表
30
+ | 参数 | 典型值 | 调节手感 |
31
+ |------|--------|----------|
32
+ | 控件尺寸 | 1080×220,thumb 内缩 16px | 缩到 <600px 宽就不是特写了,thumb 位移读不出重量 |
33
+ | thumb 时长 | 8f Easing.out(cubic) | >14f 读作慢动作演示视频;<5f 读作瞬移,"滑"没了 |
34
+ | 光标滑入 | 24f 从画外,ease-out | linear 或 <14f 读作光标被扔进来;起点必须画外 |
35
+ | 按下 | scale 0.86 + 涟漪 12f | 无按下直接滑 thumb,因果链断,读作自动播放 |
36
+ | 图标弹出 | spring damping 10/stiffness 220 | damping <8 弹三下抢 thumb 的戏;旧图标不收起文字会挤出控件 |
37
+ | 收尾 hold | 新态静置 ≥30f | 切换完立刻切镜,"新模式"没被看清 |
38
+
39
+ ## 已知坑
40
+ - demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
41
+ 首次实战须以真实素材回验
42
+ - 与 cursor-flyover 分工:那张是光标在完整页面里
43
+ 点击推近(有上下文),本卡是控件脱离页面拍无背景特写——同片可共存,
44
+ 但同一次点击别既拍页面版又拍特写版
45
+ - 图标塌缩用 width 归零而不是只 scale——只 scale 会留空位,文字不回流,
46
+ 控件内出现"幽灵缝"(demo 里 width 与 scale 同步驱动)
47
+ - 二段以上(3+ 段)控件慎用:thumb 跨多段滑行 8f 太快读不出停靠,
48
+ 拉长又破手感——本卡吃"二选一"最顺
49
+ - 涟漪圆环要 zIndex 压在 thumb 之上、圆心锁点击点——跟着 thumb 走
50
+ 就成了 thumb 的拖尾,语义变错
51
+ - 实战替换素材:段标签/图标换成真功能名即可,但"新段图标带表情"
52
+ (demo 笑脸场记板)是奖励感的一半,纯线框图标会淡不少
53
+
54
+ ## 参考实现
55
+ demos/interaction/segmented-thumb-hero/
56
+ (SegmentedThumbHero.tsx)
57
+ 原片出处:perplexity-promo 2.3–5s
@@ -1,47 +1,47 @@
1
- ---
2
- name: theme-switch-moves
3
- 一句话: 主题切换两式——theme-sweep 斜向扫场(边界扫过处就地换肤)与 palette-ripple 组合款(⌘K 面板收缩成点、涟漪从点荡开换肤)
4
- 适用: 深色模式/主题功能的叙事段落;同一 UI "在你眼前变色"而非切到新场景
5
- 时长: A 140f(4.7s)/ B 156f(5.2s)
6
- 能量: A 中 / B 中高(组合款有完整因果链)
7
- ---
8
-
9
- ## 意图
10
- 深浅模式切换的两种拍法。A(Notion/Figma/Linear 惯用):15° 斜向
11
- 边界带亮线扫过全画面(demo 从开关所在的右侧扫向左侧),边界经过处浅色**就地**变深色,同布局
12
- 双主题共存一瞬——观众看到的是"同一个 UI 换肤",不是转场。
13
- B(组合变异):⌘K 面板输入 "dark" 回车,面板收缩成一个亮点,
14
- 深色涟漪**从该点**荡开扫过全 UI——"命令引发换肤"的因果链完整可读。
15
- 组合命门:涟漪圆心必须是面板收缩点、起始帧必须是收缩完成帧。
16
-
17
- ## 两式选型
18
- | 式 | 做法 | 适用 |
19
- |----|------|------|
20
- | A theme-sweep-toggle | 特写顶栏日夜开关(zoom 2.0):指针按下、旋钮弹簧拨到月亮(太阳收光芒长出月牙)→ 深色世界 clip-path polygon 15° 斜边从开关一侧扫过(64f,bezier(.3,0,.35,1)),同时相机 30f 拉开到全景;边界 = 晨昏线:白热核心线 + 亮侧随速度变宽的落日橙暮光带 + 夜侧冷蓝辉;扫完"开灯"(今日胶囊 / 此刻线 / 窗口轮廓光依次亮起)坐实 | 主题功能直接展示 |
21
- | B palette-theme-ripple | 面板弹簧落下→人手节奏逐字输入→回车面板 CRT 关机式收缩(先纵向压成亮线、再横向收成亮点)+ 亮点与横向余辉钉住 5f→圆形 clip 半径 6→1260px 强 ease-out 荡开,3px 白热环 + 珊瑚外辉 / 白色内辉 + 晚 4f 回声环,深色版 1.035→1 坐实、相机顺势呼气退回 | 命令面板+主题联动的高光段 |
22
-
23
- ## 参数表
24
- | 参数 | 典型值 | 调节手感 |
25
- |------|--------|----------|
26
- | 深色版制作 | 对色板逐键手工映射(bg/card/border 各自定深色值) | 滤镜反转出来的深色是错的(图像/头像全反) |
27
- | A 斜边超扫 | 斜线在世界坐标外扩 400px 计算多边形,终点越过左下角 | 不超扫角落残留浅色三角 |
28
- | A 因果 | 扫场起点紧贴开关、按下后 ~6f 边界就扫过开关;相机从开关特写拉开 | 边界从远处出现或晚 10f 以上,读不出"是这个开关引起的" |
29
- | A 海报帧 | 相机全景到位(40f)早于晨昏线过中线(~44–50f) | 拉开太晚 → 全景里看不到昼夜同屏,手法只剩特写 |
30
- | A 坐实 | 扫完后夜里才有的光依次亮起(今日胶囊 / 此刻线 / 窗口轮廓光) | 比 scale 0.99 更有语义;不要再叠全屏闪白 |
31
- | B 因果钉扎 | 亮点在收缩点挂 5f(+ 横向余辉),涟漪圆心=该点坐标、起始帧=亮点结束帧 | 圆心错位/错帧就断了"命令→换肤"因果(组合命门) |
32
- | B 涟漪半径 | 终值 ≈ 圆心到最远角距离 × 1.1(demo 1260px) | 终值给太大(如 2000+)曲线前段一闪而过,圆形读不出来 |
33
- | B 浅色层 | 扫场完成后条件卸载 | 真静止前提 |
34
-
35
- ## 已知坑
36
- - demo 在为镜头设计的 video-shotcraft UI(A 发布周制作排期 / B 样片画廊)上调校通过——参数是调校起点非实战定稿,
37
- 首次实战须以真实素材回验
38
- - 两版布局必须逐像素一致——布局有出入就读作"切换到另一个页面",
39
- 手法即失效
40
- - 真实页面实战:深浅两版分别真实截图(Q1),不做滤镜假深色
41
- - 一支片主题切换 ≤1 次:它是功能叙事不是转场,反复切读作演示事故
42
- - 声音:A 扫场一声长 whoosh;B 回车一声确认 + 涟漪荡开接 whoosh
43
- (S4 拟音优先)
44
-
45
- ## 参考实现
46
- demos/interaction/theme-switch-moves/
47
- (PaletteThemeRipple.tsx / ThemeSweepToggle.tsx)
1
+ ---
2
+ name: theme-switch-moves
3
+ 一句话: 主题切换两式——theme-sweep 斜向扫场(边界扫过处就地换肤)与 palette-ripple 组合款(⌘K 面板收缩成点、涟漪从点荡开换肤)
4
+ 适用: 深色模式/主题功能的叙事段落;同一 UI "在你眼前变色"而非切到新场景
5
+ 时长: A 140f(4.7s)/ B 156f(5.2s)
6
+ 能量: A 中 / B 中高(组合款有完整因果链)
7
+ ---
8
+
9
+ ## 意图
10
+ 深浅模式切换的两种拍法。A(Notion/Figma/Linear 惯用):15° 斜向
11
+ 边界带亮线扫过全画面(demo 从开关所在的右侧扫向左侧),边界经过处浅色**就地**变深色,同布局
12
+ 双主题共存一瞬——观众看到的是"同一个 UI 换肤",不是转场。
13
+ B(组合变异):⌘K 面板输入 "dark" 回车,面板收缩成一个亮点,
14
+ 深色涟漪**从该点**荡开扫过全 UI——"命令引发换肤"的因果链完整可读。
15
+ 组合命门:涟漪圆心必须是面板收缩点、起始帧必须是收缩完成帧。
16
+
17
+ ## 两式选型
18
+ | 式 | 做法 | 适用 |
19
+ |----|------|------|
20
+ | A theme-sweep-toggle | 特写顶栏日夜开关(zoom 2.0):指针按下、旋钮弹簧拨到月亮(太阳收光芒长出月牙)→ 深色世界 clip-path polygon 15° 斜边从开关一侧扫过(64f,bezier(.3,0,.35,1)),同时相机 30f 拉开到全景;边界 = 晨昏线:白热核心线 + 亮侧随速度变宽的落日橙暮光带 + 夜侧冷蓝辉;扫完"开灯"(今日胶囊 / 此刻线 / 窗口轮廓光依次亮起)坐实 | 主题功能直接展示 |
21
+ | B palette-theme-ripple | 面板弹簧落下→人手节奏逐字输入→回车面板 CRT 关机式收缩(先纵向压成亮线、再横向收成亮点)+ 亮点与横向余辉钉住 5f→圆形 clip 半径 6→1260px 强 ease-out 荡开,3px 白热环 + 珊瑚外辉 / 白色内辉 + 晚 4f 回声环,深色版 1.035→1 坐实、相机顺势呼气退回 | 命令面板+主题联动的高光段 |
22
+
23
+ ## 参数表
24
+ | 参数 | 典型值 | 调节手感 |
25
+ |------|--------|----------|
26
+ | 深色版制作 | 对色板逐键手工映射(bg/card/border 各自定深色值) | 滤镜反转出来的深色是错的(图像/头像全反) |
27
+ | A 斜边超扫 | 斜线在世界坐标外扩 400px 计算多边形,终点越过左下角 | 不超扫角落残留浅色三角 |
28
+ | A 因果 | 扫场起点紧贴开关、按下后 ~6f 边界就扫过开关;相机从开关特写拉开 | 边界从远处出现或晚 10f 以上,读不出"是这个开关引起的" |
29
+ | A 海报帧 | 相机全景到位(40f)早于晨昏线过中线(~44–50f) | 拉开太晚 → 全景里看不到昼夜同屏,手法只剩特写 |
30
+ | A 坐实 | 扫完后夜里才有的光依次亮起(今日胶囊 / 此刻线 / 窗口轮廓光) | 比 scale 0.99 更有语义;不要再叠全屏闪白 |
31
+ | B 因果钉扎 | 亮点在收缩点挂 5f(+ 横向余辉),涟漪圆心=该点坐标、起始帧=亮点结束帧 | 圆心错位/错帧就断了"命令→换肤"因果(组合命门) |
32
+ | B 涟漪半径 | 终值 ≈ 圆心到最远角距离 × 1.1(demo 1260px) | 终值给太大(如 2000+)曲线前段一闪而过,圆形读不出来 |
33
+ | B 浅色层 | 扫场完成后条件卸载 | 真静止前提 |
34
+
35
+ ## 已知坑
36
+ - demo 在为镜头设计的 video-shotcraft UI(A 发布周制作排期 / B 样片画廊)上调校通过——参数是调校起点非实战定稿,
37
+ 首次实战须以真实素材回验
38
+ - 两版布局必须逐像素一致——布局有出入就读作"切换到另一个页面",
39
+ 手法即失效
40
+ - 真实页面实战:深浅两版分别真实截图(Q1),不做滤镜假深色
41
+ - 一支片主题切换 ≤1 次:它是功能叙事不是转场,反复切读作演示事故
42
+ - 声音:A 扫场一声长 whoosh;B 回车一声确认 + 涟漪荡开接 whoosh
43
+ (S4 拟音优先)
44
+
45
+ ## 参考实现
46
+ demos/interaction/theme-switch-moves/
47
+ (PaletteThemeRipple.tsx / ThemeSweepToggle.tsx)
@@ -1,37 +1,37 @@
1
- ---
2
- name: type-and-filter
3
- 一句话: 真实 UI 上打字搜索、网格自己收敛成一张卡、点击穿透进详情页
4
- 适用: 功能演示的"操作叙事"段;搜索/筛选/进入详情的任何交互链路
5
- 时长: 约 2.5s(118–190f)
6
- 能量: 中(发牌高能段之后的从容一拍)
7
- ---
8
-
9
- ## 意图
10
- 让观众"跟着做一遍":看清输入了什么、页面怎么响应、点了哪里。这是全片唯一模拟真人操作的镜头,节奏必须像人手,不能像脚本。
11
-
12
- ## 动效核心
13
- - 相机贴近搜索框(zoom 2.0,输入字有效字高 ≈30px)逐字符打字,光标常亮→闪烁;打完的呼吸位拉开到满幅全景(zoom 1.0)看网格收敛
14
- - 打完留一口气,然后非目标卡按阅读序错峰淡出下沉,网格收敛
15
- - 目标卡滑到首行槽位,途中浮起 + 阴影变宽
16
- - 指针在全景里滑到目标卡(屏幕尺寸恒定),双圈强调色(模板片为琥珀)ripple 点击确认,相机推进穿透进详情页交棒转场
17
-
18
- ## 参数表
19
- | 参数 | 典型值 | 调节手感 |
20
- |------|--------|----------|
21
- | 打字速度 | 3f/字符(TYPE_START=128,"nano-lab" 8 字符 ≈149 收尾) | 初版嫌快返工后的定稿值("unhurried");交互演示按真人操作速度走(R3) |
22
- | 呼吸位 | 打完到过滤 FILTER_START=160,留 ~11f(0.37s) | 打完立刻过滤读作机器自动,观众跟不上因果 |
23
- | 光标 | 打字时常亮,之后 8f 周期闪烁;点击 176f,光标 185f 消失 | 打字中闪烁会读作卡顿;常亮→闪烁的切换本身就是"打完了"的信号 |
24
- | 过滤退场 | 25 张非目标卡按阅读序 0.4f 间隔错峰,各 5f 淡出+下沉 8px | 同时消失读作页面崩溃;错峰哪怕只差 0.4f 也够 |
25
- | 目标卡滑位 | 10f 滑到首行槽位,bezier(0.35,0,0.2,1),途中 sin 浮起 z 18px、scale +0.02、阴影随浮起变宽 | 终点必须是布局真实槽位(Q9),滑到画面中央悬停就假了 |
26
- | 点击确认 | 两圈同心强调色 ripple(起点差 3f、各 10f、半径 14→54/78)+ 3px 描边 + 40px 辉光,随后相机 16f 推进 zoom 2.2 | 单圈 ripple 太轻看不见;推进交棒给 flash-cut 盖住换页硬切(组件见 assets/lib/FlashCut.tsx,用法:from = 切点 − 5,跨骑硬切两侧各 5f) |
27
- | 搜索框 | 页面底色补丁盖掉纹理里的 placeholder(保留放大镜图标),文字层叠上去打 | 直接在截图纹理上叠字会和烤入的 placeholder 重影 |
28
-
29
- ## 声音
30
- 打字段钉 keyboard.mp3 并按 Sequence 截 24f 与动作严格等长(S4);点击钉 click-camera(全片最响 vol 0.6,S2 响度分层);网格飞走钉 whoosh-fast。
31
-
32
- ## 已知坑
33
- - 初版打字+过滤"太快了"被返工(R3)——交互镜头的第一版几乎总是偏快,起稿就按 3f/字符
34
- - 过滤后目标卡若不归位到真实槽位、悬浮在网格上方,读作假(Q9,曾因此近乎整文件重写)
35
-
36
- ## 参考实现
37
- demos/interaction/type-and-filter/TypeAndFilter.tsx(原 template/src/aifl/live/SceneFlyIn.tsx 118–190 段)
1
+ ---
2
+ name: type-and-filter
3
+ 一句话: 真实 UI 上打字搜索、网格自己收敛成一张卡、点击穿透进详情页
4
+ 适用: 功能演示的"操作叙事"段;搜索/筛选/进入详情的任何交互链路
5
+ 时长: 约 2.5s(118–190f)
6
+ 能量: 中(发牌高能段之后的从容一拍)
7
+ ---
8
+
9
+ ## 意图
10
+ 让观众"跟着做一遍":看清输入了什么、页面怎么响应、点了哪里。这是全片唯一模拟真人操作的镜头,节奏必须像人手,不能像脚本。
11
+
12
+ ## 动效核心
13
+ - 相机贴近搜索框(zoom 2.0,输入字有效字高 ≈30px)逐字符打字,光标常亮→闪烁;打完的呼吸位拉开到满幅全景(zoom 1.0)看网格收敛
14
+ - 打完留一口气,然后非目标卡按阅读序错峰淡出下沉,网格收敛
15
+ - 目标卡滑到首行槽位,途中浮起 + 阴影变宽
16
+ - 指针在全景里滑到目标卡(屏幕尺寸恒定),双圈强调色(模板片为琥珀)ripple 点击确认,相机推进穿透进详情页交棒转场
17
+
18
+ ## 参数表
19
+ | 参数 | 典型值 | 调节手感 |
20
+ |------|--------|----------|
21
+ | 打字速度 | 3f/字符(TYPE_START=128,"nano-lab" 8 字符 ≈149 收尾) | 初版嫌快返工后的定稿值("unhurried");交互演示按真人操作速度走(R3) |
22
+ | 呼吸位 | 打完到过滤 FILTER_START=160,留 ~11f(0.37s) | 打完立刻过滤读作机器自动,观众跟不上因果 |
23
+ | 光标 | 打字时常亮,之后 8f 周期闪烁;点击 176f,光标 185f 消失 | 打字中闪烁会读作卡顿;常亮→闪烁的切换本身就是"打完了"的信号 |
24
+ | 过滤退场 | 25 张非目标卡按阅读序 0.4f 间隔错峰,各 5f 淡出+下沉 8px | 同时消失读作页面崩溃;错峰哪怕只差 0.4f 也够 |
25
+ | 目标卡滑位 | 10f 滑到首行槽位,bezier(0.35,0,0.2,1),途中 sin 浮起 z 18px、scale +0.02、阴影随浮起变宽 | 终点必须是布局真实槽位(Q9),滑到画面中央悬停就假了 |
26
+ | 点击确认 | 两圈同心强调色 ripple(起点差 3f、各 10f、半径 14→54/78)+ 3px 描边 + 40px 辉光,随后相机 16f 推进 zoom 2.2 | 单圈 ripple 太轻看不见;推进交棒给 flash-cut 盖住换页硬切(组件见 assets/lib/FlashCut.tsx,用法:from = 切点 − 5,跨骑硬切两侧各 5f) |
27
+ | 搜索框 | 页面底色补丁盖掉纹理里的 placeholder(保留放大镜图标),文字层叠上去打 | 直接在截图纹理上叠字会和烤入的 placeholder 重影 |
28
+
29
+ ## 声音
30
+ 打字段钉 keyboard.mp3 并按 Sequence 截 24f 与动作严格等长(S4);点击钉 click-camera(全片最响 vol 0.6,S2 响度分层);网格飞走钉 whoosh-fast。
31
+
32
+ ## 已知坑
33
+ - 初版打字+过滤"太快了"被返工(R3)——交互镜头的第一版几乎总是偏快,起稿就按 3f/字符
34
+ - 过滤后目标卡若不归位到真实槽位、悬浮在网格上方,读作假(Q9,曾因此近乎整文件重写)
35
+
36
+ ## 参考实现
37
+ demos/interaction/type-and-filter/TypeAndFilter.tsx(原 template/src/aifl/live/SceneFlyIn.tsx 118–190 段)