dsh-drawai 0.4.1 → 0.4.3

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 (365) hide show
  1. package/README.md +96 -253
  2. package/lib/client.js +28 -7
  3. package/lib/index.js +474 -97
  4. package/lib/motion/asset-pack.js +109 -50
  5. package/lib/motion/assets.js +291 -291
  6. package/lib/motion/demo-assets-lock.js +10 -0
  7. package/lib/motion/mgstyles/vendor/README.md +28 -0
  8. package/lib/motion/mgstyles/vendor/modules/d3/LICENSE +13 -0
  9. package/lib/motion/mgstyles/vendor/modules/d3/dist/d3.min.js +2 -0
  10. package/lib/motion/mgstyles/vendor/modules/opentype.js/LICENSE +20 -0
  11. package/lib/motion/mgstyles/vendor/modules/opentype.js/dist/opentype.mjs +14460 -0
  12. package/lib/motion/mgstyles/vendor/modules/simplex-noise/LICENSE +21 -0
  13. package/lib/motion/mgstyles/vendor/modules/simplex-noise/dist/esm/simplex-noise.js +466 -0
  14. package/lib/motion/mgstyles/vendor/modules/topojson-client/LICENSE +13 -0
  15. package/lib/motion/mgstyles/vendor/modules/topojson-client/dist/topojson-client.min.js +2 -0
  16. package/lib/motion/preview.js +10 -3
  17. package/lib/motion/render.js +19 -1
  18. package/lib/motion/shotcraft/upstream/SKILL.md +286 -286
  19. package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -54
  20. package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -200
  21. package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -45
  22. package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -20
  23. package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -65
  24. package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -151
  25. package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -129
  26. package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -75
  27. package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -40
  28. package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -11
  29. package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -10
  30. package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -49
  31. package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -210
  32. package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -423
  33. package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -170
  34. package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -157
  35. package/lib/motion/shotcraft/upstream/demos/README.md +120 -120
  36. package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -112
  37. package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -647
  38. package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -316
  39. package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -82
  40. package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -115
  41. package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -243
  42. package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +388 -388
  43. package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -250
  44. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -305
  45. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -246
  46. package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -390
  47. package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -138
  48. package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -542
  49. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -315
  50. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -299
  51. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -173
  52. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -348
  53. package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -366
  54. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -279
  55. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -184
  56. package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -390
  57. package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -155
  58. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -303
  59. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -290
  60. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -278
  61. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -307
  62. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -215
  63. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -299
  64. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -232
  65. package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -290
  66. package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -273
  67. package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -167
  68. package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -536
  69. package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -164
  70. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -175
  71. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -197
  72. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -241
  73. package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -279
  74. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -230
  75. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -345
  76. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -275
  77. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -229
  78. package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -312
  79. package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -222
  80. package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -295
  81. package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -329
  82. package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -315
  83. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -264
  84. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -260
  85. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -263
  86. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -123
  87. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -187
  88. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -175
  89. package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -305
  90. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -350
  91. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -352
  92. package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -218
  93. package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -297
  94. package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -157
  95. package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -218
  96. package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -202
  97. package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -265
  98. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -457
  99. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -446
  100. package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -249
  101. package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -278
  102. package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -332
  103. package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -358
  104. package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -201
  105. package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -200
  106. package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -208
  107. package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -341
  108. package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -389
  109. package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -293
  110. package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -183
  111. package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -245
  112. package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -222
  113. package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -223
  114. package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -217
  115. package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -343
  116. package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -357
  117. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -187
  118. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -333
  119. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -274
  120. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -270
  121. package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -430
  122. package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -252
  123. package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -106
  124. package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -288
  125. package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -362
  126. package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -168
  127. package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -310
  128. package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -261
  129. package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -459
  130. package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -294
  131. package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -161
  132. package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -248
  133. package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -359
  134. package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -227
  135. package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -162
  136. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -248
  137. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -186
  138. package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -355
  139. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -272
  140. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -262
  141. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -217
  142. package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -285
  143. package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -205
  144. package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -178
  145. package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -147
  146. package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -143
  147. package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -134
  148. package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -217
  149. package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -198
  150. package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -221
  151. package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -312
  152. package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -261
  153. package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -121
  154. package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -153
  155. package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -179
  156. package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -140
  157. package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -309
  158. package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -191
  159. package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -292
  160. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -135
  161. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -124
  162. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -255
  163. package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -173
  164. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -225
  165. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -141
  166. package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -137
  167. package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -147
  168. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -409
  169. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -280
  170. package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -271
  171. package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -385
  172. package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -312
  173. package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -303
  174. package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -77
  175. package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -311
  176. package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -307
  177. package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -349
  178. package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -255
  179. package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -244
  180. package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -217
  181. package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -652
  182. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -153
  183. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -238
  184. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -324
  185. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -354
  186. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -101
  187. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -129
  188. package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -297
  189. package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -57
  190. package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -155
  191. package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -175
  192. package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -153
  193. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -146
  194. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -226
  195. package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -1
  196. package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -193
  197. package/lib/motion/shotcraft/upstream/references/final-review.md +121 -121
  198. package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -199
  199. package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -183
  200. package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -257
  201. package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -382
  202. package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -111
  203. package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -50
  204. package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -95
  205. package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -41
  206. package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -52
  207. package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -39
  208. package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -39
  209. package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -57
  210. package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -51
  211. package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -46
  212. package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -52
  213. package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -43
  214. package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -42
  215. package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -48
  216. package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -52
  217. package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -45
  218. package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -46
  219. package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -44
  220. package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -63
  221. package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -54
  222. package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -58
  223. package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -35
  224. package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -53
  225. package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -42
  226. package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -50
  227. package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -46
  228. package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -56
  229. package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -49
  230. package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -50
  231. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -53
  232. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -53
  233. package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -55
  234. package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -52
  235. package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -60
  236. package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -57
  237. package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -51
  238. package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -41
  239. package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -53
  240. package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -60
  241. package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -55
  242. package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -57
  243. package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -47
  244. package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -37
  245. package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -54
  246. package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -36
  247. package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -56
  248. package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -56
  249. package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -40
  250. package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -60
  251. package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -57
  252. package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -73
  253. package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -87
  254. package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -55
  255. package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -50
  256. package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -59
  257. package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -38
  258. package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -38
  259. package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -59
  260. package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -39
  261. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -61
  262. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -52
  263. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -50
  264. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -66
  265. package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -43
  266. package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -38
  267. package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -38
  268. package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -56
  269. package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -44
  270. package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -38
  271. package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -63
  272. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -57
  273. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -63
  274. package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -58
  275. package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -45
  276. package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -55
  277. package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -49
  278. package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -42
  279. package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -42
  280. package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -45
  281. package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -48
  282. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -55
  283. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -43
  284. package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -41
  285. package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -42
  286. package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -59
  287. package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -55
  288. package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -65
  289. package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -42
  290. package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -64
  291. package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -64
  292. package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -54
  293. package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -91
  294. package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -51
  295. package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -66
  296. package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -38
  297. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -66
  298. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -58
  299. package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -61
  300. package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -64
  301. package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -45
  302. package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -41
  303. package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -51
  304. package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -42
  305. package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -63
  306. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -57
  307. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -75
  308. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -59
  309. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -67
  310. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -60
  311. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -66
  312. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -40
  313. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -45
  314. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -62
  315. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -55
  316. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -37
  317. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -55
  318. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -50
  319. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -43
  320. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -55
  321. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -51
  322. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -51
  323. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -56
  324. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -49
  325. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -57
  326. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -36
  327. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -64
  328. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -47
  329. package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -170
  330. package/lib/motion/shotcraft/upstream/references/workbench.md +157 -157
  331. package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -103
  332. package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -44
  333. package/lib/motion/shotcraft/upstream/template/package.json +20 -20
  334. package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -6
  335. package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -17
  336. package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -65
  337. package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -48
  338. package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -24
  339. package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -192
  340. package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -111
  341. package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -150
  342. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -158
  343. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -468
  344. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -552
  345. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -411
  346. package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -200
  347. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -324
  348. package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +388 -388
  349. package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -4
  350. package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -7
  351. package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -68
  352. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -1
  353. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -24
  354. package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -74
  355. package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -91
  356. package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -213
  357. package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -15
  358. package/lib/motion/style-frames.js +47 -12
  359. package/lib/motion-project.js +22 -3
  360. package/lib/motion-render-worker.js +31 -9
  361. package/lib/routing/router.js +12 -1
  362. package/lib/style-kernel.js +16 -6
  363. package/lib/video-trace-pool.js +128 -128
  364. package/package.json +1 -1
  365. package/LICENSE +0 -4175
@@ -1,222 +1,222 @@
1
- // grain-dissolve — Grain Dissolve → Condense 文字砂化凝聚(motion-lab 定稿转原生 Remotion)
2
- // 干净的整行字 "{ video-shotcraft. Now Live }" 先爆裂成沸腾颗粒噪点(轮廓隐约可辨、白色辉光),
3
- // 同时出现带 45° 斜纹填充和像素方块角柄的选区框;噪点沸腾约半程后选区框消失,
4
- // 噪点云急速凝聚成更大号的颗粒短字标(video-shotcraft 字标,全小写),位移量衰减归零、辉光冲高回落,
5
- // 凝固为清晰发光短字标。四角 HUD 括角/圆点与左右中线短划全程常驻。
6
- // 滤镜链:feTurbulence seed 逐帧 + displacement scale 双向动画,终字同走滤镜再解除。
7
- // 质感升级:SVG 直接按 1920×1080 原生分辨率栅格化(viewBox 640×360,1 单位 = 3px),
8
- // 噪点颗粒细到 2–3px 而不是 4 倍放大的糊团;辉光改在滤镜链内做"紧 + 宽"两层冷白 bloom;
9
- // 外加一团确定性游离砂粒——砂化时被吹散、凝聚时加速吸回字标(越来越快),凝固时熄灭;
10
- // 字标凝聚时从 1.06 收缩到 1("被压实"),凝聚冲高的那一下给一道只出现一次的横向光痕。
11
- import React, { useId } from 'react';
12
- import { AbsoluteFill } from 'remotion';
13
- import { E, rand, seg, useT } from '../../_fixtures/Motion';
14
- import { Backdrop, FONT } from '../../_fixtures/Polish';
15
- import { BRAND } from '../../_fixtures/Brand';
16
-
17
- export const GRAIN_DISSOLVE_DURATION = 60; // 2000ms @30fps
18
-
19
- // 选区框几何(viewBox 坐标)
20
- const BX = 128;
21
- const BY = 148;
22
- const BW = 384;
23
- const BH = 62;
24
-
25
- // 45° 斜纹:x 从 bx-bh 起每 34 一根,右下→左上
26
- const HATCH_XS: number[] = [];
27
- for (let x = BX - BH; x < BX + BW; x += 34) HATCH_XS.push(x);
28
-
29
- // 游离砂粒:起点散在整行字的带状区域,终点落进短字标的字面范围(确定性种子)
30
- const SAND = Array.from({ length: 150 }, (_, i) => {
31
- const r = (k: number) => rand(i * 13.7 + k * 101.3);
32
- const hx = 140 + r(1) * 360; // 整行字带:x 140–500
33
- const hy = 168 + r(2) * 26; // y 168–194
34
- const ang = r(3) * Math.PI * 2;
35
- return {
36
- hx, hy,
37
- dx: Math.cos(ang) * (8 + r(4) * 26), // 砂化时被吹散的位移
38
- dy: Math.sin(ang) * (5 + r(5) * 14),
39
- tx: 140 + r(6) * 360, // 短字标字面(video-shotcraft 44px):x 140–500
40
- ty: 170 + r(7) * 28, // y 170–198
41
- size: 0.35 + r(8) * 0.75,
42
- alpha: 0.25 + r(9) * 0.6,
43
- lag: r(10) * 0.05, // 吸回的起跑错峰(非等差)
44
- ph: r(11) * Math.PI * 2,
45
- };
46
- });
47
-
48
- // 四角像素棋盘手柄(两块 5×5 错位方块)
49
- const Handle: React.FC<{ x: number; y: number }> = ({ x, y }) => (
50
- <g transform={`translate(${x - 5},${y - 5})`} fill="#d6d9e0">
51
- <rect width={5} height={5} />
52
- <rect x={5} y={5} width={5} height={5} />
53
- </g>
54
- );
55
-
56
- // HUD 括角 + 圆点(sx/sy 控制朝向)
57
- const Corner: React.FC<{ x: number; y: number; sx: number; sy: number }> = ({ x, y, sx, sy }) => (
58
- <>
59
- <path
60
- d={`M${x + 14 * sx} ${y}H${x}V${y + 14 * sy}`}
61
- fill="none"
62
- stroke="#474a55"
63
- strokeWidth={1.1}
64
- strokeLinecap="square"
65
- />
66
- <circle cx={x + 34 * sx} cy={y + 28 * sy} r={1.3} fill="#7d808b" />
67
- </>
68
- );
69
-
70
- export const GrainDissolve: React.FC = () => {
71
- const t = useT();
72
- // 滤镜/clipPath ID 按实例生成,同一 Composition 放多个实例时互不串引
73
- // (useId 的 «:» 在 CSS url() 里非法,清洗成纯字母数字)
74
- const uid = useId().replace(/[^a-zA-Z0-9]/g, '');
75
- const fid = `gd-${uid}`;
76
- const cid = `gd-${uid}-clip`;
77
- const sid = `gd-${uid}-streak`;
78
- const burst = seg(t, 0.13, 0.28, E.outCubic); // 干净字 → 砂化
79
- const cond = seg(t, 0.60, 0.71, E.inOutCubic); // 整行噪点云 → 短字标噪点云
80
- const lock = seg(t, 0.68, 0.90, E.outCubic); // 位移衰减凝固
81
- const settle = seg(t, 0.88, 1, E.outCubic); // 辉光回落
82
- // 白色辉光:砂化期轻微,凝聚时冲高,凝固后回落到柔光
83
- const glow = Math.max(0, burst * 0.3 + cond * 0.7 - settle * 0.45);
84
- // 选区框:随 burst 从中线横向展开,0.55–0.64 收拢撤场(早于凝聚完成)
85
- const boxOut = seg(t, 0.55, 0.64, E.inCubic);
86
- const boxOpen = burst * (1 - boxOut * 0.35);
87
- const boxOp = Math.min(1, burst * 1.4) * (1 - boxOut);
88
- // 字标被压实:凝聚中 1.06 → 1(lock 曲线收敛)
89
- const markScale = 1 + 0.06 * (1 - lock);
90
- // 横向光痕:只在凝聚冲高处出现一次(cond 升、lock 后段熄)
91
- const streak = cond * (1 - seg(t, 0.74, 0.92, E.outCubic));
92
- const boil = Math.floor(t * 46); // 与 seed 同步的沸腾节拍
93
-
94
- return (
95
- <AbsoluteFill style={{ background: '#0a0b0e' }}>
96
- <Backdrop tone="dark" light={{ x: 0.5, y: 0.47 }} grain={0.07} vignette={0.6} />
97
- <svg
98
- viewBox="0 0 640 360"
99
- width={1920}
100
- height={1080}
101
- style={{ position: 'absolute', inset: 0 }}
102
- >
103
- <defs>
104
- <filter id={fid} x="-40%" y="-150%" width="180%" height="400%" colorInterpolationFilters="sRGB">
105
- <feTurbulence
106
- type="fractalNoise"
107
- baseFrequency={0.9 + burst * 0.4}
108
- numOctaves={2}
109
- seed={boil}
110
- result="n"
111
- />
112
- <feDisplacementMap
113
- in="SourceGraphic"
114
- in2="n"
115
- scale={burst * 52 * (1 - lock)}
116
- xChannelSelector="R"
117
- yChannelSelector="G"
118
- result="d"
119
- />
120
- <feGaussianBlur in="d" stdDeviation={burst * 1.1 * (1 - lock)} result="core" />
121
- {/* 两层 bloom:紧光(字边的亮晕)+ 宽光(空气里的散射),偏冷白,强度跟 glow 包络 */}
122
- <feGaussianBlur in="core" stdDeviation={1.2 + glow * 1.6} result="g1" />
123
- <feColorMatrix in="g1" type="matrix" result="g1c"
124
- values={`0 0 0 0 0.86 0 0 0 0 0.9 0 0 0 0 1 0 0 0 ${(0.15 + glow * 0.95).toFixed(3)} 0`} />
125
- <feGaussianBlur in="core" stdDeviation={5 + glow * 6} result="g2" />
126
- <feColorMatrix in="g2" type="matrix" result="g2c"
127
- values={`0 0 0 0 0.62 0 0 0 0 0.68 0 0 0 0 1 0 0 0 ${(glow * 0.75).toFixed(3)} 0`} />
128
- <feMerge>
129
- <feMergeNode in="g2c" />
130
- <feMergeNode in="g1c" />
131
- <feMergeNode in="core" />
132
- </feMerge>
133
- </filter>
134
- <linearGradient id={sid} x1="0" x2="1" y1="0" y2="0">
135
- <stop offset="0" stopColor="#9fb0ff" stopOpacity="0" />
136
- <stop offset="0.5" stopColor="#eef1ff" stopOpacity="1" />
137
- <stop offset="1" stopColor="#9fb0ff" stopOpacity="0" />
138
- </linearGradient>
139
- </defs>
140
- {/* 四角 HUD 括角 + 圆点 + 左右中线短划(全程常驻) */}
141
- <g>
142
- <Corner x={88} y={96} sx={1} sy={1} />
143
- <Corner x={552} y={96} sx={-1} sy={1} />
144
- <Corner x={88} y={264} sx={1} sy={-1} />
145
- <Corner x={552} y={264} sx={-1} sy={-1} />
146
- <line x1={52} y1={180} x2={76} y2={180} stroke="#4c4f5a" strokeWidth={1.1} strokeDasharray="4 3" />
147
- <line x1={564} y1={180} x2={588} y2={180} stroke="#4c4f5a" strokeWidth={1.1} strokeDasharray="4 3" />
148
- </g>
149
- {/* 选区框:砂化时从中线横向展开浮现,凝聚前收拢撤掉 */}
150
- {boxOp > 0.002 && (
151
- <g opacity={boxOp} transform={`translate(320 0) scale(${(0.2 + 0.8 * boxOpen).toFixed(4)} 1) translate(-320 0)`}>
152
- <clipPath id={cid}>
153
- <rect x={BX} y={BY} width={BW} height={BH} />
154
- </clipPath>
155
- <rect x={BX} y={BY} width={BW} height={BH} fill="rgba(140,150,200,0.035)" />
156
- <g clipPath={`url(#${cid})`}>
157
- {HATCH_XS.map((x) => (
158
- <line key={x} x1={x} y1={BY + BH} x2={x + BH} y2={BY} stroke="#2f313a" strokeWidth={0.8} />
159
- ))}
160
- </g>
161
- <rect x={BX} y={BY} width={BW} height={BH} fill="none" stroke="#5d606c" strokeWidth={0.7} vectorEffect="non-scaling-stroke" />
162
- <Handle x={BX} y={BY} />
163
- <Handle x={BX + BW} y={BY} />
164
- <Handle x={BX} y={BY + BH} />
165
- <Handle x={BX + BW} y={BY + BH} />
166
- </g>
167
- )}
168
- {/* 横向光痕:凝聚冲高时一次,细芯 + 宽晕 */}
169
- {streak > 0.002 && (
170
- <g opacity={streak}>
171
- <ellipse cx={320} cy={182} rx={250} ry={7} fill={`url(#${sid})`} opacity={0.12} />
172
- <ellipse cx={320} cy={182} rx={230} ry={0.7} fill={`url(#${sid})`} opacity={0.7} />
173
- </g>
174
- )}
175
- {/* 游离砂粒:砂化时被吹散、沸腾;凝聚时加速吸回字标;凝固时熄灭 */}
176
- <g>
177
- {SAND.map((s, i) => {
178
- const pull = seg(t, 0.56 + s.lag, 0.71 + s.lag * 0.4, E.inQuart); // 越来越快的吸回
179
- const jitter = Math.sin(boil * 1.7 + s.ph) * 1.2 * burst * (1 - pull);
180
- const sx = s.hx + s.dx * burst;
181
- const sy = s.hy + s.dy * burst + jitter;
182
- const x = sx + (s.tx - sx) * pull;
183
- const y = sy + (s.ty - sy) * pull;
184
- const a = s.alpha * burst * (1 - seg(t, 0.66, 0.8, E.outCubic)) * (0.55 + 0.45 * Math.abs(Math.sin(boil * 0.9 + s.ph)));
185
- if (a < 0.01) return null;
186
- return <circle key={i} cx={x} cy={y} r={s.size * (1 - 0.4 * pull)} fill="#e9ecff" opacity={a} />;
187
- })}
188
- </g>
189
- {/* 文字组:整行字与终字标同走滤镜链(含 bloom) */}
190
- <g filter={`url(#${fid})`}>
191
- <text
192
- x={320}
193
- y={191}
194
- textAnchor="middle"
195
- opacity={1 - cond}
196
- style={{
197
- fill: '#eceef3',
198
- font: `500 26px ${FONT.sans}`, // 品牌名比占位词长:字号 33→26 收进选区框
199
- letterSpacing: '1.2px',
200
- }}
201
- >
202
- {`{ ${BRAND.name}. Now Live }`}
203
- </text>
204
- <text
205
- x={320}
206
- y={198}
207
- textAnchor="middle"
208
- opacity={cond}
209
- transform={`translate(320 180) scale(${markScale.toFixed(4)}) translate(-320 -180)`}
210
- style={{
211
- fill: '#ffffff',
212
- font: `750 44px ${BRAND.font}`, // 15 字符字标:54→44px,凝固后仍落在 HUD 括角之内
213
- letterSpacing: '1.5px',
214
- }}
215
- >
216
- {BRAND.name}
217
- </text>
218
- </g>
219
- </svg>
220
- </AbsoluteFill>
221
- );
222
- };
1
+ // grain-dissolve — Grain Dissolve → Condense 文字砂化凝聚(motion-lab 定稿转原生 Remotion)
2
+ // 干净的整行字 "{ video-shotcraft. Now Live }" 先爆裂成沸腾颗粒噪点(轮廓隐约可辨、白色辉光),
3
+ // 同时出现带 45° 斜纹填充和像素方块角柄的选区框;噪点沸腾约半程后选区框消失,
4
+ // 噪点云急速凝聚成更大号的颗粒短字标(video-shotcraft 字标,全小写),位移量衰减归零、辉光冲高回落,
5
+ // 凝固为清晰发光短字标。四角 HUD 括角/圆点与左右中线短划全程常驻。
6
+ // 滤镜链:feTurbulence seed 逐帧 + displacement scale 双向动画,终字同走滤镜再解除。
7
+ // 质感升级:SVG 直接按 1920×1080 原生分辨率栅格化(viewBox 640×360,1 单位 = 3px),
8
+ // 噪点颗粒细到 2–3px 而不是 4 倍放大的糊团;辉光改在滤镜链内做"紧 + 宽"两层冷白 bloom;
9
+ // 外加一团确定性游离砂粒——砂化时被吹散、凝聚时加速吸回字标(越来越快),凝固时熄灭;
10
+ // 字标凝聚时从 1.06 收缩到 1("被压实"),凝聚冲高的那一下给一道只出现一次的横向光痕。
11
+ import React, { useId } from 'react';
12
+ import { AbsoluteFill } from 'remotion';
13
+ import { E, rand, seg, useT } from '../../_fixtures/Motion';
14
+ import { Backdrop, FONT } from '../../_fixtures/Polish';
15
+ import { BRAND } from '../../_fixtures/Brand';
16
+
17
+ export const GRAIN_DISSOLVE_DURATION = 60; // 2000ms @30fps
18
+
19
+ // 选区框几何(viewBox 坐标)
20
+ const BX = 128;
21
+ const BY = 148;
22
+ const BW = 384;
23
+ const BH = 62;
24
+
25
+ // 45° 斜纹:x 从 bx-bh 起每 34 一根,右下→左上
26
+ const HATCH_XS: number[] = [];
27
+ for (let x = BX - BH; x < BX + BW; x += 34) HATCH_XS.push(x);
28
+
29
+ // 游离砂粒:起点散在整行字的带状区域,终点落进短字标的字面范围(确定性种子)
30
+ const SAND = Array.from({ length: 150 }, (_, i) => {
31
+ const r = (k: number) => rand(i * 13.7 + k * 101.3);
32
+ const hx = 140 + r(1) * 360; // 整行字带:x 140–500
33
+ const hy = 168 + r(2) * 26; // y 168–194
34
+ const ang = r(3) * Math.PI * 2;
35
+ return {
36
+ hx, hy,
37
+ dx: Math.cos(ang) * (8 + r(4) * 26), // 砂化时被吹散的位移
38
+ dy: Math.sin(ang) * (5 + r(5) * 14),
39
+ tx: 140 + r(6) * 360, // 短字标字面(video-shotcraft 44px):x 140–500
40
+ ty: 170 + r(7) * 28, // y 170–198
41
+ size: 0.35 + r(8) * 0.75,
42
+ alpha: 0.25 + r(9) * 0.6,
43
+ lag: r(10) * 0.05, // 吸回的起跑错峰(非等差)
44
+ ph: r(11) * Math.PI * 2,
45
+ };
46
+ });
47
+
48
+ // 四角像素棋盘手柄(两块 5×5 错位方块)
49
+ const Handle: React.FC<{ x: number; y: number }> = ({ x, y }) => (
50
+ <g transform={`translate(${x - 5},${y - 5})`} fill="#d6d9e0">
51
+ <rect width={5} height={5} />
52
+ <rect x={5} y={5} width={5} height={5} />
53
+ </g>
54
+ );
55
+
56
+ // HUD 括角 + 圆点(sx/sy 控制朝向)
57
+ const Corner: React.FC<{ x: number; y: number; sx: number; sy: number }> = ({ x, y, sx, sy }) => (
58
+ <>
59
+ <path
60
+ d={`M${x + 14 * sx} ${y}H${x}V${y + 14 * sy}`}
61
+ fill="none"
62
+ stroke="#474a55"
63
+ strokeWidth={1.1}
64
+ strokeLinecap="square"
65
+ />
66
+ <circle cx={x + 34 * sx} cy={y + 28 * sy} r={1.3} fill="#7d808b" />
67
+ </>
68
+ );
69
+
70
+ export const GrainDissolve: React.FC = () => {
71
+ const t = useT();
72
+ // 滤镜/clipPath ID 按实例生成,同一 Composition 放多个实例时互不串引
73
+ // (useId 的 «:» 在 CSS url() 里非法,清洗成纯字母数字)
74
+ const uid = useId().replace(/[^a-zA-Z0-9]/g, '');
75
+ const fid = `gd-${uid}`;
76
+ const cid = `gd-${uid}-clip`;
77
+ const sid = `gd-${uid}-streak`;
78
+ const burst = seg(t, 0.13, 0.28, E.outCubic); // 干净字 → 砂化
79
+ const cond = seg(t, 0.60, 0.71, E.inOutCubic); // 整行噪点云 → 短字标噪点云
80
+ const lock = seg(t, 0.68, 0.90, E.outCubic); // 位移衰减凝固
81
+ const settle = seg(t, 0.88, 1, E.outCubic); // 辉光回落
82
+ // 白色辉光:砂化期轻微,凝聚时冲高,凝固后回落到柔光
83
+ const glow = Math.max(0, burst * 0.3 + cond * 0.7 - settle * 0.45);
84
+ // 选区框:随 burst 从中线横向展开,0.55–0.64 收拢撤场(早于凝聚完成)
85
+ const boxOut = seg(t, 0.55, 0.64, E.inCubic);
86
+ const boxOpen = burst * (1 - boxOut * 0.35);
87
+ const boxOp = Math.min(1, burst * 1.4) * (1 - boxOut);
88
+ // 字标被压实:凝聚中 1.06 → 1(lock 曲线收敛)
89
+ const markScale = 1 + 0.06 * (1 - lock);
90
+ // 横向光痕:只在凝聚冲高处出现一次(cond 升、lock 后段熄)
91
+ const streak = cond * (1 - seg(t, 0.74, 0.92, E.outCubic));
92
+ const boil = Math.floor(t * 46); // 与 seed 同步的沸腾节拍
93
+
94
+ return (
95
+ <AbsoluteFill style={{ background: '#0a0b0e' }}>
96
+ <Backdrop tone="dark" light={{ x: 0.5, y: 0.47 }} grain={0.07} vignette={0.6} />
97
+ <svg
98
+ viewBox="0 0 640 360"
99
+ width={1920}
100
+ height={1080}
101
+ style={{ position: 'absolute', inset: 0 }}
102
+ >
103
+ <defs>
104
+ <filter id={fid} x="-40%" y="-150%" width="180%" height="400%" colorInterpolationFilters="sRGB">
105
+ <feTurbulence
106
+ type="fractalNoise"
107
+ baseFrequency={0.9 + burst * 0.4}
108
+ numOctaves={2}
109
+ seed={boil}
110
+ result="n"
111
+ />
112
+ <feDisplacementMap
113
+ in="SourceGraphic"
114
+ in2="n"
115
+ scale={burst * 52 * (1 - lock)}
116
+ xChannelSelector="R"
117
+ yChannelSelector="G"
118
+ result="d"
119
+ />
120
+ <feGaussianBlur in="d" stdDeviation={burst * 1.1 * (1 - lock)} result="core" />
121
+ {/* 两层 bloom:紧光(字边的亮晕)+ 宽光(空气里的散射),偏冷白,强度跟 glow 包络 */}
122
+ <feGaussianBlur in="core" stdDeviation={1.2 + glow * 1.6} result="g1" />
123
+ <feColorMatrix in="g1" type="matrix" result="g1c"
124
+ values={`0 0 0 0 0.86 0 0 0 0 0.9 0 0 0 0 1 0 0 0 ${(0.15 + glow * 0.95).toFixed(3)} 0`} />
125
+ <feGaussianBlur in="core" stdDeviation={5 + glow * 6} result="g2" />
126
+ <feColorMatrix in="g2" type="matrix" result="g2c"
127
+ values={`0 0 0 0 0.62 0 0 0 0 0.68 0 0 0 0 1 0 0 0 ${(glow * 0.75).toFixed(3)} 0`} />
128
+ <feMerge>
129
+ <feMergeNode in="g2c" />
130
+ <feMergeNode in="g1c" />
131
+ <feMergeNode in="core" />
132
+ </feMerge>
133
+ </filter>
134
+ <linearGradient id={sid} x1="0" x2="1" y1="0" y2="0">
135
+ <stop offset="0" stopColor="#9fb0ff" stopOpacity="0" />
136
+ <stop offset="0.5" stopColor="#eef1ff" stopOpacity="1" />
137
+ <stop offset="1" stopColor="#9fb0ff" stopOpacity="0" />
138
+ </linearGradient>
139
+ </defs>
140
+ {/* 四角 HUD 括角 + 圆点 + 左右中线短划(全程常驻) */}
141
+ <g>
142
+ <Corner x={88} y={96} sx={1} sy={1} />
143
+ <Corner x={552} y={96} sx={-1} sy={1} />
144
+ <Corner x={88} y={264} sx={1} sy={-1} />
145
+ <Corner x={552} y={264} sx={-1} sy={-1} />
146
+ <line x1={52} y1={180} x2={76} y2={180} stroke="#4c4f5a" strokeWidth={1.1} strokeDasharray="4 3" />
147
+ <line x1={564} y1={180} x2={588} y2={180} stroke="#4c4f5a" strokeWidth={1.1} strokeDasharray="4 3" />
148
+ </g>
149
+ {/* 选区框:砂化时从中线横向展开浮现,凝聚前收拢撤掉 */}
150
+ {boxOp > 0.002 && (
151
+ <g opacity={boxOp} transform={`translate(320 0) scale(${(0.2 + 0.8 * boxOpen).toFixed(4)} 1) translate(-320 0)`}>
152
+ <clipPath id={cid}>
153
+ <rect x={BX} y={BY} width={BW} height={BH} />
154
+ </clipPath>
155
+ <rect x={BX} y={BY} width={BW} height={BH} fill="rgba(140,150,200,0.035)" />
156
+ <g clipPath={`url(#${cid})`}>
157
+ {HATCH_XS.map((x) => (
158
+ <line key={x} x1={x} y1={BY + BH} x2={x + BH} y2={BY} stroke="#2f313a" strokeWidth={0.8} />
159
+ ))}
160
+ </g>
161
+ <rect x={BX} y={BY} width={BW} height={BH} fill="none" stroke="#5d606c" strokeWidth={0.7} vectorEffect="non-scaling-stroke" />
162
+ <Handle x={BX} y={BY} />
163
+ <Handle x={BX + BW} y={BY} />
164
+ <Handle x={BX} y={BY + BH} />
165
+ <Handle x={BX + BW} y={BY + BH} />
166
+ </g>
167
+ )}
168
+ {/* 横向光痕:凝聚冲高时一次,细芯 + 宽晕 */}
169
+ {streak > 0.002 && (
170
+ <g opacity={streak}>
171
+ <ellipse cx={320} cy={182} rx={250} ry={7} fill={`url(#${sid})`} opacity={0.12} />
172
+ <ellipse cx={320} cy={182} rx={230} ry={0.7} fill={`url(#${sid})`} opacity={0.7} />
173
+ </g>
174
+ )}
175
+ {/* 游离砂粒:砂化时被吹散、沸腾;凝聚时加速吸回字标;凝固时熄灭 */}
176
+ <g>
177
+ {SAND.map((s, i) => {
178
+ const pull = seg(t, 0.56 + s.lag, 0.71 + s.lag * 0.4, E.inQuart); // 越来越快的吸回
179
+ const jitter = Math.sin(boil * 1.7 + s.ph) * 1.2 * burst * (1 - pull);
180
+ const sx = s.hx + s.dx * burst;
181
+ const sy = s.hy + s.dy * burst + jitter;
182
+ const x = sx + (s.tx - sx) * pull;
183
+ const y = sy + (s.ty - sy) * pull;
184
+ const a = s.alpha * burst * (1 - seg(t, 0.66, 0.8, E.outCubic)) * (0.55 + 0.45 * Math.abs(Math.sin(boil * 0.9 + s.ph)));
185
+ if (a < 0.01) return null;
186
+ return <circle key={i} cx={x} cy={y} r={s.size * (1 - 0.4 * pull)} fill="#e9ecff" opacity={a} />;
187
+ })}
188
+ </g>
189
+ {/* 文字组:整行字与终字标同走滤镜链(含 bloom) */}
190
+ <g filter={`url(#${fid})`}>
191
+ <text
192
+ x={320}
193
+ y={191}
194
+ textAnchor="middle"
195
+ opacity={1 - cond}
196
+ style={{
197
+ fill: '#eceef3',
198
+ font: `500 26px ${FONT.sans}`, // 品牌名比占位词长:字号 33→26 收进选区框
199
+ letterSpacing: '1.2px',
200
+ }}
201
+ >
202
+ {`{ ${BRAND.name}. Now Live }`}
203
+ </text>
204
+ <text
205
+ x={320}
206
+ y={198}
207
+ textAnchor="middle"
208
+ opacity={cond}
209
+ transform={`translate(320 180) scale(${markScale.toFixed(4)}) translate(-320 -180)`}
210
+ style={{
211
+ fill: '#ffffff',
212
+ font: `750 44px ${BRAND.font}`, // 15 字符字标:54→44px,凝固后仍落在 HUD 括角之内
213
+ letterSpacing: '1.5px',
214
+ }}
215
+ >
216
+ {BRAND.name}
217
+ </text>
218
+ </g>
219
+ </svg>
220
+ </AbsoluteFill>
221
+ );
222
+ };