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.
- package/README.md +7 -5
- package/lib/client.js +142 -16
- package/lib/index.js +7945 -7719
- package/lib/motion/asset-pack.js +394 -394
- package/lib/motion/assets.js +291 -291
- package/lib/motion/demo-assets-lock.js +10 -10
- package/lib/motion/mgstyles/briefs/23-ink-wash.md +147 -0
- package/lib/motion/mgstyles/catalog.d/23-ink-wash.json +28 -0
- package/lib/motion/mgstyles/catalog.json +127 -14
- package/lib/motion/mgstyles/upstream/demos/23-ink-wash/brush.js +149 -0
- package/lib/motion/mgstyles/upstream/demos/23-ink-wash/film.js +202 -0
- package/lib/motion/mgstyles/upstream/manifest.json +28 -3
- package/lib/motion/mgstyles/upstream/prompts/23-ink-wash.md +59 -0
- package/lib/motion/mgstyles/vendor/README.md +28 -28
- package/lib/motion/mgstyles/vendor/modules/d3/LICENSE +13 -13
- package/lib/motion/mgstyles/vendor/modules/d3/dist/d3.min.js +2 -2
- package/lib/motion/mgstyles/vendor/modules/opentype.js/LICENSE +20 -20
- package/lib/motion/mgstyles/vendor/modules/opentype.js/dist/opentype.mjs +14460 -14460
- package/lib/motion/mgstyles/vendor/modules/simplex-noise/LICENSE +21 -21
- package/lib/motion/mgstyles/vendor/modules/simplex-noise/dist/esm/simplex-noise.js +465 -465
- package/lib/motion/mgstyles/vendor/modules/topojson-client/LICENSE +13 -13
- package/lib/motion/mgstyles/vendor/modules/topojson-client/dist/topojson-client.min.js +2 -2
- package/lib/motion/project.js +5 -1
- package/lib/motion/qa.js +116 -6
- package/lib/motion/render.js +179 -179
- package/lib/motion/scene-kit.js +1 -1
- package/lib/motion/shotcraft/upstream/SKILL.md +286 -286
- package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -54
- package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -200
- package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -45
- package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -20
- package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -65
- package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -151
- package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -129
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -75
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -40
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -11
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -10
- package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -49
- package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -210
- package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -423
- package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -170
- package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -157
- package/lib/motion/shotcraft/upstream/demos/README.md +120 -120
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -112
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -647
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -316
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -82
- package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -115
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -243
- package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +388 -388
- package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -250
- package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -305
- package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -246
- package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -390
- package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -138
- package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -542
- package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -315
- package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -299
- package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -173
- package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -348
- package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -366
- package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -279
- package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -184
- package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -390
- package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -155
- package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -303
- package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -290
- package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -278
- package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -307
- package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -215
- package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -299
- package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -232
- package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -290
- package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -273
- package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -167
- package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -536
- package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -164
- package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -175
- package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -197
- package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -241
- package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -279
- package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -230
- package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -345
- package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -275
- package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -229
- package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -312
- package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -222
- package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -295
- package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -329
- package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -315
- package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -264
- package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -260
- package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -263
- package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -123
- package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -187
- package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -175
- package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -305
- package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -350
- package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -352
- package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -218
- package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -297
- package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -157
- package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -218
- package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -202
- package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -265
- package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -457
- package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -446
- package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -249
- package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -278
- package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -332
- package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -358
- package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -201
- package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -200
- package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -208
- package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -341
- package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -389
- package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -293
- package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -183
- package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -245
- package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -222
- package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -223
- package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -217
- package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -343
- package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -357
- package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -187
- package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -333
- package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -274
- package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -270
- package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -430
- package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -252
- package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -106
- package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -288
- package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -362
- package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -168
- package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -310
- package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -261
- package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -459
- package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -294
- package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -161
- package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -248
- package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -359
- package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -227
- package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -162
- package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -248
- package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -186
- package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -355
- package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -272
- package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -262
- package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -217
- package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -285
- package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -205
- package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -178
- package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -147
- package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -143
- package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -134
- package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -217
- package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -198
- package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -221
- package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -312
- package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -261
- package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -121
- package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -153
- package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -179
- package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -140
- package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -309
- package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -191
- package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -292
- package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -135
- package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -124
- package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -255
- package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -173
- package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -225
- package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -141
- package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -137
- package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -147
- package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -409
- package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -280
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -271
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -385
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -312
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -303
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -77
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -311
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -307
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -349
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -255
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -244
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -217
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -652
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -153
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -238
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -324
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -354
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -101
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -129
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -297
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -57
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -155
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -175
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -153
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -146
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -226
- package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -1
- package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -193
- package/lib/motion/shotcraft/upstream/references/final-review.md +121 -121
- package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -199
- package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -183
- package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -257
- package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -382
- package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -111
- package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -50
- package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -95
- package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -41
- package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -52
- package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -39
- package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -39
- package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -57
- package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -51
- package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -46
- package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -52
- package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -43
- package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -42
- package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -48
- package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -52
- package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -45
- package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -46
- package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -44
- package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -63
- package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -54
- package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -58
- package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -35
- package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -53
- package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -42
- package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -50
- package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -46
- package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -56
- package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -49
- package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -50
- package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -53
- package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -53
- package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -55
- package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -52
- package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -60
- package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -57
- package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -51
- package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -41
- package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -53
- package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -60
- package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -55
- package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -57
- package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -47
- package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -37
- package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -54
- package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -36
- package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -56
- package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -56
- package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -40
- package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -60
- package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -57
- package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -73
- package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -87
- package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -55
- package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -50
- package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -59
- package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -38
- package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -38
- package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -59
- package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -39
- package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -61
- package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -52
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -50
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -66
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -43
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -38
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -38
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -56
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -44
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -38
- package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -63
- package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -57
- package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -63
- package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -58
- package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -45
- package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -55
- package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -49
- package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -42
- package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -42
- package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -45
- package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -48
- package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -55
- package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -43
- package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -41
- package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -42
- package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -59
- package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -55
- package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -65
- package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -42
- package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -64
- package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -64
- package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -54
- package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -91
- package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -51
- package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -66
- package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -38
- package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -66
- package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -58
- package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -61
- package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -64
- package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -45
- package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -41
- package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -51
- package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -42
- package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -63
- package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -57
- package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -75
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -59
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -67
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -60
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -66
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -40
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -45
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -62
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -55
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -37
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -55
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -50
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -43
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -55
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -51
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -51
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -56
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -49
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -57
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -36
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -64
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -47
- package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -170
- package/lib/motion/shotcraft/upstream/references/workbench.md +157 -157
- package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -103
- package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -44
- package/lib/motion/shotcraft/upstream/template/package.json +20 -20
- package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -6
- package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -17
- package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -65
- package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -48
- package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -24
- package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -192
- package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -111
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -150
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -158
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -468
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -552
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -411
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -200
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -324
- package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +388 -388
- package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -4
- package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -7
- package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -68
- package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -1
- package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -24
- package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -74
- package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -91
- package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -213
- package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -15
- package/lib/motion/style-frames.js +306 -306
- package/lib/motion/sync.js +214 -214
- package/lib/motion-library.js +1 -1
- package/lib/motion-project.js +105 -105
- package/lib/motion-render-worker.js +174 -174
- package/lib/routing/router.js +222 -222
- package/lib/routing/vendor/README.md +96 -96
- package/lib/routing/vendor/libavoid-routing.js +753 -753
- package/lib/routing/vendor/libavoid.min.js +59 -59
- package/lib/svg-export.js +1344 -0
- package/lib/video-trace-pool.js +128 -128
- package/package.json +3 -2
- package/LICENSE +0 -4175
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scan-bracket-sweep
|
|
3
|
-
一句话: 文档弹到中央,四角落下 L 形取景括号,一条扫描光带拖着渐变尾迹在文档上往复扫 5 趟——文档全程静止,只有光在读它
|
|
4
|
-
适用: "正在解析/校验这份内容"的过程镜头;文档类产品的能力演示;上传→分析链路的中段
|
|
5
|
-
时长: 约5.0s(150f@30fps)
|
|
6
|
-
能量: 中低(机械、克制,节奏全在往复扫掠的呼吸上)
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 意图
|
|
10
|
-
让观众看懂"这份东西正在被机器逐行读过"。取景括号先把目标框住(宣布检查
|
|
11
|
-
对象),扫描光带再往复走完全篇(宣布检查过程)。命门是**文档本身完全静止**:
|
|
12
|
-
一旦文档也在动,观众就分不清是"被检查"还是"在加载"。
|
|
13
|
-
|
|
14
|
-
## 动效核心
|
|
15
|
-
- 文档 `seg(0→0.11, outCubic)` 从 scale 0.86 弹到 1,opacity 走 `dp*3`
|
|
16
|
-
提前满亮,落位比缩放早——先"在了"再"稳了"
|
|
17
|
-
- 四角 34px 的 L 形括号按 `i*0.022` stagger 依次落位,各 0.055 走完,
|
|
18
|
-
从外侧沿对角带 8px 位移收进来(overshoot 缓动,约 8% 轻过冲再落定)
|
|
19
|
-
- 扫描窗口 `t 0.17→0.95` 严格 linear 切成 5 趟,趟内 `inOutSine`
|
|
20
|
-
两端慢中间快,末尾留 12% 完全停顿(`local=(raw-pi)/0.88`)
|
|
21
|
-
- 光带 = 1.2px 靛蓝光芯 + 10px 对称柔辉 + 拖尾;拖尾最长 82px、`SCAN .2→0`
|
|
22
|
-
正片叠底,长度随扫描速度伸缩(趟末停顿处收成 0,换向不跳);方向随 `dir`
|
|
23
|
-
翻转:下行时挂在光带上方、上行时挂在下方,渐变同步反向
|
|
24
|
-
- 光芯经过的表格行被轻微照亮(行底 SCAN 9%,高斯衰减)——光在读,文档不动
|
|
25
|
-
- 整条光带裁在与文档同 10px 圆角的 `overflow:hidden` 层里,
|
|
26
|
-
`0.16→0.20` 淡入、`0.93→0.99` 淡出
|
|
27
|
-
|
|
28
|
-
## 参数表
|
|
29
|
-
| 参数 | 典型值 | 调节手感 |
|
|
30
|
-
|------|--------|----------|
|
|
31
|
-
| 文档弹入 | scale 0.86→1,t 0→0.11 outCubic | 起始值低于 0.8 就成了"从远处飞来",弹入要小幅度才像 UI |
|
|
32
|
-
| 取景括号 | 臂长 34px、圆头描边 1.6px、外扩 −7px;stagger 0.022 / 各 0.055 | 四角同时出现读作静态边框;差 0.022 就够读出"依次落下" |
|
|
33
|
-
| 扫描趟数 | PASSES=5,窗口 t 0.17→0.95 linear | 3 趟不够读作"往复",7 趟以上在 5s 内每趟太快 |
|
|
34
|
-
| 趟内缓动 | inOutSine + 末尾 12% 停顿 | 停顿是"看清了这一趟"的换气位;去掉就成了匀速来回摆 |
|
|
35
|
-
| 光带 | 1.2px 光芯 + 柔辉 + ≤82px 拖尾 SCAN .2→0(multiply) | 线太粗(>4px)读作遮罩边缘而不是光;拖尾用黑灰会读成脏污 |
|
|
36
|
-
| 拖尾方向 | 下行 top:−tail / 上行 top:0,渐变一并翻转;tail 随速度 | 只翻其一 → 拖尾跑到运动前方,读作"光在往回吸";定长拖尾换向时会整块跳到另一侧 |
|
|
37
|
-
| 裁切层 | 与文档同 10px 圆角 overflow:hidden | 漏到文档外就是"扫画面"不是"扫文档" |
|
|
38
|
-
|
|
39
|
-
## 已知坑
|
|
40
|
-
- 光带必须裁在文档 bbox 内,且圆角与文档一致——漏出一点就丢掉"扫描
|
|
41
|
-
这份文档"的语义
|
|
42
|
-
- 拖尾的 `top` 和 gradient 方向是两处独立写法,改扫描方向时必须同改,
|
|
43
|
-
漏一处就出现"尾迹在前"的反物理观感
|
|
44
|
-
- 括号的 34px 臂长与 −7px 外扩是按 300×178 的文档尺寸配的;换真实截图
|
|
45
|
-
要按新尺寸重算,臂长超过短边 1/4 就压住内容
|
|
46
|
-
- 两个颜色变量:INK(括号 + 正文)与 SCAN(光芯 + 柔辉 + 拖尾 + 行照亮),换肤只改这两个
|
|
47
|
-
|
|
48
|
-
## 参考实现
|
|
49
|
-
demos/effects/scan-bracket-sweep/
|
|
50
|
-
(ScanBracketSweep.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: scan-bracket-sweep
|
|
3
|
+
一句话: 文档弹到中央,四角落下 L 形取景括号,一条扫描光带拖着渐变尾迹在文档上往复扫 5 趟——文档全程静止,只有光在读它
|
|
4
|
+
适用: "正在解析/校验这份内容"的过程镜头;文档类产品的能力演示;上传→分析链路的中段
|
|
5
|
+
时长: 约5.0s(150f@30fps)
|
|
6
|
+
能量: 中低(机械、克制,节奏全在往复扫掠的呼吸上)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
让观众看懂"这份东西正在被机器逐行读过"。取景括号先把目标框住(宣布检查
|
|
11
|
+
对象),扫描光带再往复走完全篇(宣布检查过程)。命门是**文档本身完全静止**:
|
|
12
|
+
一旦文档也在动,观众就分不清是"被检查"还是"在加载"。
|
|
13
|
+
|
|
14
|
+
## 动效核心
|
|
15
|
+
- 文档 `seg(0→0.11, outCubic)` 从 scale 0.86 弹到 1,opacity 走 `dp*3`
|
|
16
|
+
提前满亮,落位比缩放早——先"在了"再"稳了"
|
|
17
|
+
- 四角 34px 的 L 形括号按 `i*0.022` stagger 依次落位,各 0.055 走完,
|
|
18
|
+
从外侧沿对角带 8px 位移收进来(overshoot 缓动,约 8% 轻过冲再落定)
|
|
19
|
+
- 扫描窗口 `t 0.17→0.95` 严格 linear 切成 5 趟,趟内 `inOutSine`
|
|
20
|
+
两端慢中间快,末尾留 12% 完全停顿(`local=(raw-pi)/0.88`)
|
|
21
|
+
- 光带 = 1.2px 靛蓝光芯 + 10px 对称柔辉 + 拖尾;拖尾最长 82px、`SCAN .2→0`
|
|
22
|
+
正片叠底,长度随扫描速度伸缩(趟末停顿处收成 0,换向不跳);方向随 `dir`
|
|
23
|
+
翻转:下行时挂在光带上方、上行时挂在下方,渐变同步反向
|
|
24
|
+
- 光芯经过的表格行被轻微照亮(行底 SCAN 9%,高斯衰减)——光在读,文档不动
|
|
25
|
+
- 整条光带裁在与文档同 10px 圆角的 `overflow:hidden` 层里,
|
|
26
|
+
`0.16→0.20` 淡入、`0.93→0.99` 淡出
|
|
27
|
+
|
|
28
|
+
## 参数表
|
|
29
|
+
| 参数 | 典型值 | 调节手感 |
|
|
30
|
+
|------|--------|----------|
|
|
31
|
+
| 文档弹入 | scale 0.86→1,t 0→0.11 outCubic | 起始值低于 0.8 就成了"从远处飞来",弹入要小幅度才像 UI |
|
|
32
|
+
| 取景括号 | 臂长 34px、圆头描边 1.6px、外扩 −7px;stagger 0.022 / 各 0.055 | 四角同时出现读作静态边框;差 0.022 就够读出"依次落下" |
|
|
33
|
+
| 扫描趟数 | PASSES=5,窗口 t 0.17→0.95 linear | 3 趟不够读作"往复",7 趟以上在 5s 内每趟太快 |
|
|
34
|
+
| 趟内缓动 | inOutSine + 末尾 12% 停顿 | 停顿是"看清了这一趟"的换气位;去掉就成了匀速来回摆 |
|
|
35
|
+
| 光带 | 1.2px 光芯 + 柔辉 + ≤82px 拖尾 SCAN .2→0(multiply) | 线太粗(>4px)读作遮罩边缘而不是光;拖尾用黑灰会读成脏污 |
|
|
36
|
+
| 拖尾方向 | 下行 top:−tail / 上行 top:0,渐变一并翻转;tail 随速度 | 只翻其一 → 拖尾跑到运动前方,读作"光在往回吸";定长拖尾换向时会整块跳到另一侧 |
|
|
37
|
+
| 裁切层 | 与文档同 10px 圆角 overflow:hidden | 漏到文档外就是"扫画面"不是"扫文档" |
|
|
38
|
+
|
|
39
|
+
## 已知坑
|
|
40
|
+
- 光带必须裁在文档 bbox 内,且圆角与文档一致——漏出一点就丢掉"扫描
|
|
41
|
+
这份文档"的语义
|
|
42
|
+
- 拖尾的 `top` 和 gradient 方向是两处独立写法,改扫描方向时必须同改,
|
|
43
|
+
漏一处就出现"尾迹在前"的反物理观感
|
|
44
|
+
- 括号的 34px 臂长与 −7px 外扩是按 300×178 的文档尺寸配的;换真实截图
|
|
45
|
+
要按新尺寸重算,臂长超过短边 1/4 就压住内容
|
|
46
|
+
- 两个颜色变量:INK(括号 + 正文)与 SCAN(光芯 + 柔辉 + 拖尾 + 行照亮),换肤只改这两个
|
|
47
|
+
|
|
48
|
+
## 参考实现
|
|
49
|
+
demos/effects/scan-bracket-sweep/
|
|
50
|
+
(ScanBracketSweep.tsx)
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scanline-annotate-focus
|
|
3
|
-
一句话: 一条扫描线自上而下匀速掠过已存在的页面,越过哪块区块的下缘,哪块就被四角取景框从外扩处弹簧收拢对准(一次过冲),随后贴出一枚逐字打出的机器标签,顶部状态行同步计数 00/06→06/06
|
|
4
|
-
适用: "AI 正在读你的页面/品牌"的分析镜头;设计系统/品牌规范的拆解介绍;产品能力的自我说明段
|
|
5
|
-
时长: 约5s(150f@30fps)
|
|
6
|
-
能量: 中(机械冷静,节奏由扫描线匀速推动,标注是节拍点)
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 意图
|
|
10
|
-
把"分析"这件抽象事做成可见的因果链:扫描线走到哪,那块就被框住、被
|
|
11
|
-
命名。观众读的是"机器的视线",所以扫描线必须匀速、标注必须严格滞后于
|
|
12
|
-
扫描线过境——**先扫到再弹框**,顺序一旦错乱就变成了预先编排的动画。
|
|
13
|
-
|
|
14
|
-
## 动效核心
|
|
15
|
-
- 两套颜色严格分工:**品牌色**(demo 为赤陶 `#C4552D`)只在页面内容里,**机器色**(钴蓝 `#2B4FD8`)
|
|
16
|
-
只给扫描线 / 角标 / 标签 / 状态行——观众一眼分得清"页面本身"和"机器的视线"
|
|
17
|
-
- 页面(demo 为 video-shotcraft 官网:镜刻标志 + 字标、H1、样片封面、CTA、色板)装在 1560×840 浏览器窗里(两层软阴影),状态行在窗外上方;全程 1.000→1.035 极缓推镜
|
|
18
|
-
- 扫描线 6→80f **严格匀速**走窗内 y −20→860:3px 光芯 + 身后 140px 渐隐淡蓝洗色与 18px 点阵余晖;
|
|
19
|
-
窗框两侧各一枚随线滑动的三角游标,左侧读出当前 `Y 0412`
|
|
20
|
-
- 触发帧由 bbox 反算:`ft = frameAtY(y + h)`(扫描线越过 bbox **下缘**那一帧),按下缘排序后钳制
|
|
21
|
-
最小间隔 4f;demo 实测 LOGO 19f · NAV 23f · H1 48f · CTA 68f · HERO 72f · PALETTE 77f
|
|
22
|
-
- 取景框:四个 L 角(3.5px 圆头)从外扩 76px 处按 `spring(damping 15, stiffness 210)` 收拢到 bbox
|
|
23
|
-
(一次可见过冲,略收进 bbox 再回);臂长 40→26px 晚 3f 收一档(跟随);`ft+3→+6` 框内钴蓝对焦闪
|
|
24
|
-
(填充 0.075 + 2px 内描边)`+6→+18` 落
|
|
25
|
-
- 标签 `ft+5` 出现:设计工具式钴蓝底白字小签(高 50、32px 等宽、类目 750 亮 / 细项 500 · 78% 白),
|
|
26
|
-
文字 ~2.2 字/帧逐字打出、签条宽度随字长出(右缘略领先)+ 白色块光标,8px→0 上浮
|
|
27
|
-
- 状态行实时数已触发数 `SIGNALS 0n / 06` + 扫描进度条;最后一块触发后 8f 切 `BRAND READ`(转机器色),
|
|
28
|
-
之后 ~60f hold 是完整海报
|
|
29
|
-
|
|
30
|
-
## 参数表
|
|
31
|
-
| 参数 | 典型值 | 调节手感 |
|
|
32
|
-
|------|--------|----------|
|
|
33
|
-
| 扫描线 | 74f 匀速,窗内 y −20→860 | **零缓动**:加 ease 就读作"有人在拖进度条";60f 以下标签来不及打完就扎堆 |
|
|
34
|
-
| 触发换算 | ft = SCAN0 + (y+h−Y0)/(Y1−Y0)·(SCAN1−SCAN0) | 改扫描窗口只改 SCAN0/SCAN1/Y0/Y1 四个常量,触发自动跟随 |
|
|
35
|
-
| 最小间隔 | prev + 4f | 同一行的 LOGO / NAV 会同帧弹;钳制后才逐个读得清 |
|
|
36
|
-
| 取景框收拢 | 外扩 76px → 0,spring damping 15 | 按像素外扩而非按比例缩放:大小目标收拢量一致;外扩 <40px 看不出"对准"动作 |
|
|
37
|
-
| 角标 | 臂长 40→26px、描边 3.5px | 臂长超过目标短边 1/3 就变成完整边框,丢掉"取景"语义 |
|
|
38
|
-
| 对焦闪 | 填充峰值 0.075 | 超过 0.12 在亮底上成一块灰盒,读作"选中高亮"而非对焦确认 |
|
|
39
|
-
| 标签 | ft+5 起、~2.2 字/帧、32px 等宽 | 滞后 5f 是"框稳了才命名"的因果;签条一次性画满宽再打字会露出空蓝条 |
|
|
40
|
-
| 计数行 | 按 fired 实时统计,30px 等宽 | 写死时间轴的计数一改 bbox 就对不上;必须实时数 |
|
|
41
|
-
|
|
42
|
-
## 已知坑
|
|
43
|
-
- **扫描线触发时刻与目标 bbox 强绑定**:换页面内容后 targets 的 `x/y/w/h` 要重测,
|
|
44
|
-
bbox 是手动量的(不是自动量元素),留边约 12–16px
|
|
45
|
-
- 标签放置四选一(`right / above / below / belowRight`),宽度按等宽字数估算 `CHAR_W = 0.6em`;
|
|
46
|
-
词变长先查会不会压到相邻模块或顶出窗外——H1 这类宽目标标签放上方,右上角目标的标签右对齐放下方
|
|
47
|
-
- 亮场页面上扫描线和角标要用深而饱和的机器色;浅色辉光线在亮底上几乎不可见
|
|
48
|
-
- 与 `scanline-assemble-flyin` 分工:那张是"扫到即装配"(页面从空到有),
|
|
49
|
-
本卡是"扫到即标注"(页面已存在,只做分析)
|
|
50
|
-
|
|
51
|
-
## 参考实现
|
|
52
|
-
demos/effects/scanline-annotate-focus/
|
|
53
|
-
(ScanlineAnnotateFocus.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: scanline-annotate-focus
|
|
3
|
+
一句话: 一条扫描线自上而下匀速掠过已存在的页面,越过哪块区块的下缘,哪块就被四角取景框从外扩处弹簧收拢对准(一次过冲),随后贴出一枚逐字打出的机器标签,顶部状态行同步计数 00/06→06/06
|
|
4
|
+
适用: "AI 正在读你的页面/品牌"的分析镜头;设计系统/品牌规范的拆解介绍;产品能力的自我说明段
|
|
5
|
+
时长: 约5s(150f@30fps)
|
|
6
|
+
能量: 中(机械冷静,节奏由扫描线匀速推动,标注是节拍点)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
把"分析"这件抽象事做成可见的因果链:扫描线走到哪,那块就被框住、被
|
|
11
|
+
命名。观众读的是"机器的视线",所以扫描线必须匀速、标注必须严格滞后于
|
|
12
|
+
扫描线过境——**先扫到再弹框**,顺序一旦错乱就变成了预先编排的动画。
|
|
13
|
+
|
|
14
|
+
## 动效核心
|
|
15
|
+
- 两套颜色严格分工:**品牌色**(demo 为赤陶 `#C4552D`)只在页面内容里,**机器色**(钴蓝 `#2B4FD8`)
|
|
16
|
+
只给扫描线 / 角标 / 标签 / 状态行——观众一眼分得清"页面本身"和"机器的视线"
|
|
17
|
+
- 页面(demo 为 video-shotcraft 官网:镜刻标志 + 字标、H1、样片封面、CTA、色板)装在 1560×840 浏览器窗里(两层软阴影),状态行在窗外上方;全程 1.000→1.035 极缓推镜
|
|
18
|
+
- 扫描线 6→80f **严格匀速**走窗内 y −20→860:3px 光芯 + 身后 140px 渐隐淡蓝洗色与 18px 点阵余晖;
|
|
19
|
+
窗框两侧各一枚随线滑动的三角游标,左侧读出当前 `Y 0412`
|
|
20
|
+
- 触发帧由 bbox 反算:`ft = frameAtY(y + h)`(扫描线越过 bbox **下缘**那一帧),按下缘排序后钳制
|
|
21
|
+
最小间隔 4f;demo 实测 LOGO 19f · NAV 23f · H1 48f · CTA 68f · HERO 72f · PALETTE 77f
|
|
22
|
+
- 取景框:四个 L 角(3.5px 圆头)从外扩 76px 处按 `spring(damping 15, stiffness 210)` 收拢到 bbox
|
|
23
|
+
(一次可见过冲,略收进 bbox 再回);臂长 40→26px 晚 3f 收一档(跟随);`ft+3→+6` 框内钴蓝对焦闪
|
|
24
|
+
(填充 0.075 + 2px 内描边)`+6→+18` 落
|
|
25
|
+
- 标签 `ft+5` 出现:设计工具式钴蓝底白字小签(高 50、32px 等宽、类目 750 亮 / 细项 500 · 78% 白),
|
|
26
|
+
文字 ~2.2 字/帧逐字打出、签条宽度随字长出(右缘略领先)+ 白色块光标,8px→0 上浮
|
|
27
|
+
- 状态行实时数已触发数 `SIGNALS 0n / 06` + 扫描进度条;最后一块触发后 8f 切 `BRAND READ`(转机器色),
|
|
28
|
+
之后 ~60f hold 是完整海报
|
|
29
|
+
|
|
30
|
+
## 参数表
|
|
31
|
+
| 参数 | 典型值 | 调节手感 |
|
|
32
|
+
|------|--------|----------|
|
|
33
|
+
| 扫描线 | 74f 匀速,窗内 y −20→860 | **零缓动**:加 ease 就读作"有人在拖进度条";60f 以下标签来不及打完就扎堆 |
|
|
34
|
+
| 触发换算 | ft = SCAN0 + (y+h−Y0)/(Y1−Y0)·(SCAN1−SCAN0) | 改扫描窗口只改 SCAN0/SCAN1/Y0/Y1 四个常量,触发自动跟随 |
|
|
35
|
+
| 最小间隔 | prev + 4f | 同一行的 LOGO / NAV 会同帧弹;钳制后才逐个读得清 |
|
|
36
|
+
| 取景框收拢 | 外扩 76px → 0,spring damping 15 | 按像素外扩而非按比例缩放:大小目标收拢量一致;外扩 <40px 看不出"对准"动作 |
|
|
37
|
+
| 角标 | 臂长 40→26px、描边 3.5px | 臂长超过目标短边 1/3 就变成完整边框,丢掉"取景"语义 |
|
|
38
|
+
| 对焦闪 | 填充峰值 0.075 | 超过 0.12 在亮底上成一块灰盒,读作"选中高亮"而非对焦确认 |
|
|
39
|
+
| 标签 | ft+5 起、~2.2 字/帧、32px 等宽 | 滞后 5f 是"框稳了才命名"的因果;签条一次性画满宽再打字会露出空蓝条 |
|
|
40
|
+
| 计数行 | 按 fired 实时统计,30px 等宽 | 写死时间轴的计数一改 bbox 就对不上;必须实时数 |
|
|
41
|
+
|
|
42
|
+
## 已知坑
|
|
43
|
+
- **扫描线触发时刻与目标 bbox 强绑定**:换页面内容后 targets 的 `x/y/w/h` 要重测,
|
|
44
|
+
bbox 是手动量的(不是自动量元素),留边约 12–16px
|
|
45
|
+
- 标签放置四选一(`right / above / below / belowRight`),宽度按等宽字数估算 `CHAR_W = 0.6em`;
|
|
46
|
+
词变长先查会不会压到相邻模块或顶出窗外——H1 这类宽目标标签放上方,右上角目标的标签右对齐放下方
|
|
47
|
+
- 亮场页面上扫描线和角标要用深而饱和的机器色;浅色辉光线在亮底上几乎不可见
|
|
48
|
+
- 与 `scanline-assemble-flyin` 分工:那张是"扫到即装配"(页面从空到有),
|
|
49
|
+
本卡是"扫到即标注"(页面已存在,只做分析)
|
|
50
|
+
|
|
51
|
+
## 参考实现
|
|
52
|
+
demos/effects/scanline-annotate-focus/
|
|
53
|
+
(ScanlineAnnotateFocus.tsx)
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scanline-assemble-flyin
|
|
3
|
-
一句话: 页面开场是一张只有网格与虚线槽位的蓝图画板,一条亮扫描线自上而下掠过;扫到每个槽位,该处组件就从画外飞入过冲贴合,带方向性残影模糊与落位咬合角标——扫完整页恰好装配完成
|
|
4
|
-
适用: "页面自己生成"的开场;AI 建站/自动排版类产品的核心演示;从空白到成品的能力叙事
|
|
5
|
-
时长: 约5.2s(156f@30fps)
|
|
6
|
-
能量: 中高(扫描线是稳的,但每次组件飞入都是一个爆点,密度递进)
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 意图
|
|
10
|
-
让"页面被生成"这件事有一个可信的施工顺序:扫描线是施工进度条,
|
|
11
|
-
组件从画外飞进来贴合是施工动作。关键是**扫完那一刻恰好装完最后一块**
|
|
12
|
-
——扫描线提前收工或组件拖尾都会让"扫描驱动装配"的因果关系散掉。
|
|
13
|
-
|
|
14
|
-
## 动效核心
|
|
15
|
-
- 第 1 帧就是完整的"施工图":全屏蓝图网格(24px 细线 α.045 + 120px 主线 α.085)、1640×860 画板虚线外框
|
|
16
|
-
与宽度标注、每个组件的虚线槽位(带 `H1 820×250` 类小标)——观众先看到"要装什么、装在哪"
|
|
17
|
-
- 扫描线 8→92f **严格匀速**走画板 y −20→880:白芯 + 电光蓝三层辉光,两端各出画板 60px 渐隐;
|
|
18
|
-
线身后 180px 网格被照亮,且**页面底色被"刷"出来**(画板表面 mask 跟着扫描线下移)
|
|
19
|
-
- 落位帧由槽位下缘反算:`land = frameAtY(y + h)`,按下缘排序钳制最小间隔 4f;飞行 14f **提前起飞**,
|
|
20
|
-
组件与扫描线同时到位。demo 实测 NAV 19f · BADGE 29f · H1 55f · BODY 66f · MEDIA 75f · CTA 79f · STATS 88f
|
|
21
|
-
- 7 个组件各有画外起点:导航自上(0,−260),徽章 / H1 / 正文自左(−620…−980),媒体卡自右(+900,+80, 6°),
|
|
22
|
-
CTA / 数据行自下(+420…+460);`EASE.overshoot` 过冲 ~8% 贴合,旋转 ±2–7° 同步归零
|
|
23
|
-
- 运动中按位姿中心差分求速度,`SpeedBlur` 沿飞行方向拖影(0.32×速度、≤18px),落位 4f 后清零
|
|
24
|
-
- 落位:槽位虚线 4f 内消失;四角电光蓝 L 角(臂长 22px)从外扩 20px 咬进到 10px,`land+1→+4` 亮、`+5→+14` 收;
|
|
25
|
-
满宽导航不加
|
|
26
|
-
- 状态行 `BLOCKS 0n / 07` + 秒表实时走;最后一块落位后切 `✓ BUILT`、秒表定格,蓝图网格退到 30%、
|
|
27
|
-
媒体卡(银河样片镜头)亮起一档,之后 ~50f hold
|
|
28
|
-
|
|
29
|
-
## 参数表
|
|
30
|
-
| 参数 | 典型值 | 调节手感 |
|
|
31
|
-
|------|--------|----------|
|
|
32
|
-
| 扫描线 | 84f 匀速,画板 y −20→880 | 收工时刻要略晚于最后一块落位,才读作"扫完即装完" |
|
|
33
|
-
| 触发换算 | land = SCAN0 + (y+h−Y0)/(Y1−Y0)·(SCAN1−SCAN0) | 改扫描窗口只改四个常量;飞行时长 FLIGHT 是提前起飞量,去掉就变成"扫过之后才动" |
|
|
34
|
-
| 最小间隔 | prev + 4f | 下缘接近的 MEDIA / CTA 会同时落;钳制后才有"一块一块"的密度 |
|
|
35
|
-
| 飞入位移 | 画外 260–980px,按组件所在方位定 | 位移小于 200px 读作"抖一下就位",不是从画外来 |
|
|
36
|
-
| 飞入旋转 | ±2–7° | 超过 12° 就读作"翻滚",贴合时不服帖 |
|
|
37
|
-
| 飞入缓动 | EASE.overshoot,14f | 过冲是"吸附贴合"的手感;纯 ease-out 就成了滑入 |
|
|
38
|
-
| 残影模糊 | 方向性 SpeedBlur 0.32×速度、≤18px,落定清零 | 各向同性 blur 读作失焦而不是速度;不清零会留一层永久糊 |
|
|
39
|
-
| 落位角标 | 外扩 20→10px、臂长 22px,3f 亮 / 9f 落 | 角标是"咬合"的听觉替代品;整圈描边闪框读作调试框、且 7 次群发违反 Q4 |
|
|
40
|
-
|
|
41
|
-
## 已知坑
|
|
42
|
-
- **触发时刻与 PLAN 里的槽位 box 绑定**:换页面模板后每个组件的 box 要重测,否则组件在扫描线到达前就飞入
|
|
43
|
-
- 组件在 `Fly` 里以槽位为原点绝对定位;角标层是组件内部的 SVG(overflow:visible),
|
|
44
|
-
组件自身若 `overflow:hidden` 会把外扩角标裁掉——媒体卡的裁切放在内层
|
|
45
|
-
- 页面底色"刷出"用的是画板表面的 linear-gradient mask(跟扫描线 y),蓝图网格是另一层;
|
|
46
|
-
两层都随扫描线走,别把网格也 mask 掉,否则扫描线下方会变成死黑
|
|
47
|
-
- 与 `scanline-annotate-focus` 共用"扫描线即因果"的逻辑;两张卡可以串联(先装配、后分析),
|
|
48
|
-
但扫描线要换向或留空档,否则读作重复
|
|
49
|
-
- 页面内容为 video-shotcraft 的落地页(镜刻标志 + 字标导航、「Shoot the / launch film.」H1、样片镜头卡),强调色(电光蓝 / 青)取自 LOOKS.midnight,换肤改 L 即可
|
|
50
|
-
|
|
51
|
-
## 参考实现
|
|
52
|
-
demos/effects/scanline-assemble-flyin/
|
|
53
|
-
(ScanlineAssembleFlyin.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: scanline-assemble-flyin
|
|
3
|
+
一句话: 页面开场是一张只有网格与虚线槽位的蓝图画板,一条亮扫描线自上而下掠过;扫到每个槽位,该处组件就从画外飞入过冲贴合,带方向性残影模糊与落位咬合角标——扫完整页恰好装配完成
|
|
4
|
+
适用: "页面自己生成"的开场;AI 建站/自动排版类产品的核心演示;从空白到成品的能力叙事
|
|
5
|
+
时长: 约5.2s(156f@30fps)
|
|
6
|
+
能量: 中高(扫描线是稳的,但每次组件飞入都是一个爆点,密度递进)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
让"页面被生成"这件事有一个可信的施工顺序:扫描线是施工进度条,
|
|
11
|
+
组件从画外飞进来贴合是施工动作。关键是**扫完那一刻恰好装完最后一块**
|
|
12
|
+
——扫描线提前收工或组件拖尾都会让"扫描驱动装配"的因果关系散掉。
|
|
13
|
+
|
|
14
|
+
## 动效核心
|
|
15
|
+
- 第 1 帧就是完整的"施工图":全屏蓝图网格(24px 细线 α.045 + 120px 主线 α.085)、1640×860 画板虚线外框
|
|
16
|
+
与宽度标注、每个组件的虚线槽位(带 `H1 820×250` 类小标)——观众先看到"要装什么、装在哪"
|
|
17
|
+
- 扫描线 8→92f **严格匀速**走画板 y −20→880:白芯 + 电光蓝三层辉光,两端各出画板 60px 渐隐;
|
|
18
|
+
线身后 180px 网格被照亮,且**页面底色被"刷"出来**(画板表面 mask 跟着扫描线下移)
|
|
19
|
+
- 落位帧由槽位下缘反算:`land = frameAtY(y + h)`,按下缘排序钳制最小间隔 4f;飞行 14f **提前起飞**,
|
|
20
|
+
组件与扫描线同时到位。demo 实测 NAV 19f · BADGE 29f · H1 55f · BODY 66f · MEDIA 75f · CTA 79f · STATS 88f
|
|
21
|
+
- 7 个组件各有画外起点:导航自上(0,−260),徽章 / H1 / 正文自左(−620…−980),媒体卡自右(+900,+80, 6°),
|
|
22
|
+
CTA / 数据行自下(+420…+460);`EASE.overshoot` 过冲 ~8% 贴合,旋转 ±2–7° 同步归零
|
|
23
|
+
- 运动中按位姿中心差分求速度,`SpeedBlur` 沿飞行方向拖影(0.32×速度、≤18px),落位 4f 后清零
|
|
24
|
+
- 落位:槽位虚线 4f 内消失;四角电光蓝 L 角(臂长 22px)从外扩 20px 咬进到 10px,`land+1→+4` 亮、`+5→+14` 收;
|
|
25
|
+
满宽导航不加
|
|
26
|
+
- 状态行 `BLOCKS 0n / 07` + 秒表实时走;最后一块落位后切 `✓ BUILT`、秒表定格,蓝图网格退到 30%、
|
|
27
|
+
媒体卡(银河样片镜头)亮起一档,之后 ~50f hold
|
|
28
|
+
|
|
29
|
+
## 参数表
|
|
30
|
+
| 参数 | 典型值 | 调节手感 |
|
|
31
|
+
|------|--------|----------|
|
|
32
|
+
| 扫描线 | 84f 匀速,画板 y −20→880 | 收工时刻要略晚于最后一块落位,才读作"扫完即装完" |
|
|
33
|
+
| 触发换算 | land = SCAN0 + (y+h−Y0)/(Y1−Y0)·(SCAN1−SCAN0) | 改扫描窗口只改四个常量;飞行时长 FLIGHT 是提前起飞量,去掉就变成"扫过之后才动" |
|
|
34
|
+
| 最小间隔 | prev + 4f | 下缘接近的 MEDIA / CTA 会同时落;钳制后才有"一块一块"的密度 |
|
|
35
|
+
| 飞入位移 | 画外 260–980px,按组件所在方位定 | 位移小于 200px 读作"抖一下就位",不是从画外来 |
|
|
36
|
+
| 飞入旋转 | ±2–7° | 超过 12° 就读作"翻滚",贴合时不服帖 |
|
|
37
|
+
| 飞入缓动 | EASE.overshoot,14f | 过冲是"吸附贴合"的手感;纯 ease-out 就成了滑入 |
|
|
38
|
+
| 残影模糊 | 方向性 SpeedBlur 0.32×速度、≤18px,落定清零 | 各向同性 blur 读作失焦而不是速度;不清零会留一层永久糊 |
|
|
39
|
+
| 落位角标 | 外扩 20→10px、臂长 22px,3f 亮 / 9f 落 | 角标是"咬合"的听觉替代品;整圈描边闪框读作调试框、且 7 次群发违反 Q4 |
|
|
40
|
+
|
|
41
|
+
## 已知坑
|
|
42
|
+
- **触发时刻与 PLAN 里的槽位 box 绑定**:换页面模板后每个组件的 box 要重测,否则组件在扫描线到达前就飞入
|
|
43
|
+
- 组件在 `Fly` 里以槽位为原点绝对定位;角标层是组件内部的 SVG(overflow:visible),
|
|
44
|
+
组件自身若 `overflow:hidden` 会把外扩角标裁掉——媒体卡的裁切放在内层
|
|
45
|
+
- 页面底色"刷出"用的是画板表面的 linear-gradient mask(跟扫描线 y),蓝图网格是另一层;
|
|
46
|
+
两层都随扫描线走,别把网格也 mask 掉,否则扫描线下方会变成死黑
|
|
47
|
+
- 与 `scanline-annotate-focus` 共用"扫描线即因果"的逻辑;两张卡可以串联(先装配、后分析),
|
|
48
|
+
但扫描线要换向或留空档,否则读作重复
|
|
49
|
+
- 页面内容为 video-shotcraft 的落地页(镜刻标志 + 字标导航、「Shoot the / launch film.」H1、样片镜头卡),强调色(电光蓝 / 青)取自 LOOKS.midnight,换肤改 L 即可
|
|
50
|
+
|
|
51
|
+
## 参考实现
|
|
52
|
+
demos/effects/scanline-assemble-flyin/
|
|
53
|
+
(ScanlineAssembleFlyin.tsx)
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: slam-entrance-moves
|
|
3
|
-
一句话: 高能砸入三式——kanada-perspective-snap 金田透视急停、score-slam 比分砸落、impact-burst-kit 落点冲击套件(波及邻卡)
|
|
4
|
-
适用: 主角卡/KPI 卡的重拳入场;impact-feedback 管落位后的反馈,本卡管入场本身就是冲击
|
|
5
|
-
能量: 高
|
|
6
|
-
时长: 单式动作段 6–22f + 冲击余波 ~16f + hold ≥45f(demo:A 120f / B 135f / C 140f)
|
|
7
|
-
标签: ui-entrance
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 意图
|
|
11
|
-
库内入场词汇的力度上限一直是 deck-deal-flyin 的"发牌"——快但不重。
|
|
12
|
-
本卡补"砸"这一档,三种口味:A 是方向感——卡片带鱼眼级夸张透视贴着
|
|
13
|
-
镜头甩进来,"啪"地弹平,动漫金田流的潇洒;B 是重量感——KPI 卡从
|
|
14
|
-
镜头前 2.6 倍大小砸落,圆环+尘点+震屏三件套同帧起爆,体育比分弹窗
|
|
15
|
-
的分量;C 是传导感——B 的三件套之上,冲击波前沿扫过左右邻卡时把
|
|
16
|
-
它们可见地推开再弹回,"这一下震到了邻居",一件事说清力量大小。
|
|
17
|
-
选型按叙事需要:告诉观众"它来了"用 A,"它很重"用 B,"它震动了
|
|
18
|
-
全场"用 C。
|
|
19
|
-
|
|
20
|
-
## 三式选型
|
|
21
|
-
| 式 | 做法 | 适用 |
|
|
22
|
-
|----|------|------|
|
|
23
|
-
| A kanada-perspective-snap | perspective 260→1800px + rotate3d 62°→0 + scale 1.8→1 甩入 18f(姿态比位移晚收),末 5f 过冲 +6° 弹簧弹平 + 集中线,长斜影收正 | 单卡潇洒亮相;调性偏动漫/轻快 |
|
|
24
|
-
| B score-slam | 卡从镜头前 scale 2.6/rotate 5° 六帧 ease-in(quad) 砸落,落点帧冲击环+碎片火花+震屏+白闪同帧,比分数字晚 3/6f 二次落地 | KPI/比分类重磅数字登场 |
|
|
25
|
-
| C impact-burst-kit | 主卡从镜头前砸进页面空槽 + B 三件套 + 冲击波前沿按半径-距离精算扫过邻卡帧,邻卡外推 34px + rotate ±3.5° 阻尼弹回 | 页面上已有邻居时的"全场震动" |
|
|
26
|
-
|
|
27
|
-
## 参数表
|
|
28
|
-
| 参数 | 典型值 | 调节手感 |
|
|
29
|
-
|------|--------|----------|
|
|
30
|
-
| A 甩入 | 18f:translateX −1350→0 走 EASE.snappy(急停),透视/扭转/缩放走晚收曲线 bezier(.62,0,.3,1) 16f——卡片"扭着"冲到位、最后几帧才拍平;按 x 速度给水平 SpeedBlur(0.2×速度、≤26px)+ 身后 7 条速度线 | 快于 12f 读不到鱼眼畸变,慢于 24f 泄劲;姿态与位移同曲线同时收,到位前几帧就已经平了,鱼眼感只剩第一帧 |
|
|
31
|
-
| A 落定 | rotateY 15–20f 冲到 +6°,20f 起 spring(damping 16) 回 0 + 8px 震屏 2f + 48 道集中线 9f 向外退散 + 斜长影收正;卡内文字晚 3f 落定(片名 −10° skew 收正) | "啪"在过冲回弹那一下,不在位移结束;集中线超过 10f 读作特效贴纸 |
|
|
32
|
-
| B 砸落 | 0–9f 悬在镜头前(2.75→2.6、虚化 10px、半透看得见背景)→ 9–15f ease-in(quad) 砸到 0.965 → spring(damping 14) 回 1 | ease-out 落地是"放下",ease-in 才是"砸" |
|
|
33
|
-
| B 三件套 | 冲击环直径 120→1500px/16f(白芯 9→1.5px + 金色柔辉)+ 14 片多边形玻璃/金箔碎片飞 280–580px(+16 道火花)+ 震屏 18px 指数衰减 5f(偏竖向)+ 2f 白闪 | 原案(720px/10px 尘/8px 震)全档不可感,实渲已 ×1.5–2;实黑粗环/黑方块尘读作"贴纸" |
|
|
34
|
-
| B 解耦命门 | 环/尘的"扩散"用 out-cubic、"消散"用线性帧时间 | 同用 out-cubic 前段跑太快,刚扩开就淡没 |
|
|
35
|
-
| C 波及帧 | 前沿过邻卡中心距反解(环半径 100→1100/16f,514px 距 ≈ 落点后 3f);包络 cos(t/2)·e^(−t/8),40f 硬钳 0;推开瞬间按速度给水平拖影 | 邻卡与主卡同帧动读作整版抖动,晚 3f 才是"被波及" |
|
|
36
|
-
| C 悬停蓄力 | 0–16f 主卡悬在空槽上方:上提 20px、scale 1.55→1.6(smooth)、槽内接触影随高度变实,再 16–22f ease-in(cubic) 砸进槽 | 悬停段死停读作"卡住了";蓄力幅度大于 30px 就成了另一个动作 |
|
|
37
|
-
| 景深 | B/C 离镜头近(scale 大)时按高度给虚化(B ≤10px、C ≤7px),落地清晰 | 近镜头元素锐利反而读不出"从镜头前砸下来" |
|
|
38
|
-
| 收尾 | 全部余波归零后真静止 ≥45f | 重拳 hold 按平常两倍给(同 beat-cut A 判例) |
|
|
39
|
-
|
|
40
|
-
## 已知坑
|
|
41
|
-
- demo 用 video-shotcraft 的宣传内容调校(A 发布片首映卡 / B「Shotcraft vs Keyframes」终场比分 / C 成片规格页 Launch film 卡)——参数是调校起点非实战定稿,
|
|
42
|
-
首次实战须以真实素材回验
|
|
43
|
-
- 亮场(C)上冲击环要配一层白色压力盘打底、环本身用饱和强调色,暗场(A/B)用白芯 + 色辉;
|
|
44
|
-
亮底上的白环 / 暗底上的黑环都几乎不可见
|
|
45
|
-
- 三式都带震屏,震屏族(impact-feedback)同一镜头
|
|
46
|
-
只能有一个震源;三式互相之间同镜头也只能选一
|
|
47
|
-
- 声音强依赖:A 的"啪"、B/C 的音爆必须同帧钉(sound-design §4.5),
|
|
48
|
-
无声版 B/C 的三件套读作"卡在抽搐"
|
|
49
|
-
- C 式邻卡必须先驻场稳定 ≥15f 再被波及——邻卡自己还在入场时被推开,
|
|
50
|
-
因果链读不出来
|
|
51
|
-
- 全片砸入 ≤2 次;三次以上每次都响等于都不响(P4)
|
|
52
|
-
|
|
53
|
-
## 参考实现
|
|
54
|
-
demos/effects/slam-entrance-moves/
|
|
55
|
-
(ImpactBurstKit.tsx / KanadaPerspectiveSnap.tsx / ScoreSlam.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: slam-entrance-moves
|
|
3
|
+
一句话: 高能砸入三式——kanada-perspective-snap 金田透视急停、score-slam 比分砸落、impact-burst-kit 落点冲击套件(波及邻卡)
|
|
4
|
+
适用: 主角卡/KPI 卡的重拳入场;impact-feedback 管落位后的反馈,本卡管入场本身就是冲击
|
|
5
|
+
能量: 高
|
|
6
|
+
时长: 单式动作段 6–22f + 冲击余波 ~16f + hold ≥45f(demo:A 120f / B 135f / C 140f)
|
|
7
|
+
标签: ui-entrance
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
库内入场词汇的力度上限一直是 deck-deal-flyin 的"发牌"——快但不重。
|
|
12
|
+
本卡补"砸"这一档,三种口味:A 是方向感——卡片带鱼眼级夸张透视贴着
|
|
13
|
+
镜头甩进来,"啪"地弹平,动漫金田流的潇洒;B 是重量感——KPI 卡从
|
|
14
|
+
镜头前 2.6 倍大小砸落,圆环+尘点+震屏三件套同帧起爆,体育比分弹窗
|
|
15
|
+
的分量;C 是传导感——B 的三件套之上,冲击波前沿扫过左右邻卡时把
|
|
16
|
+
它们可见地推开再弹回,"这一下震到了邻居",一件事说清力量大小。
|
|
17
|
+
选型按叙事需要:告诉观众"它来了"用 A,"它很重"用 B,"它震动了
|
|
18
|
+
全场"用 C。
|
|
19
|
+
|
|
20
|
+
## 三式选型
|
|
21
|
+
| 式 | 做法 | 适用 |
|
|
22
|
+
|----|------|------|
|
|
23
|
+
| A kanada-perspective-snap | perspective 260→1800px + rotate3d 62°→0 + scale 1.8→1 甩入 18f(姿态比位移晚收),末 5f 过冲 +6° 弹簧弹平 + 集中线,长斜影收正 | 单卡潇洒亮相;调性偏动漫/轻快 |
|
|
24
|
+
| B score-slam | 卡从镜头前 scale 2.6/rotate 5° 六帧 ease-in(quad) 砸落,落点帧冲击环+碎片火花+震屏+白闪同帧,比分数字晚 3/6f 二次落地 | KPI/比分类重磅数字登场 |
|
|
25
|
+
| C impact-burst-kit | 主卡从镜头前砸进页面空槽 + B 三件套 + 冲击波前沿按半径-距离精算扫过邻卡帧,邻卡外推 34px + rotate ±3.5° 阻尼弹回 | 页面上已有邻居时的"全场震动" |
|
|
26
|
+
|
|
27
|
+
## 参数表
|
|
28
|
+
| 参数 | 典型值 | 调节手感 |
|
|
29
|
+
|------|--------|----------|
|
|
30
|
+
| A 甩入 | 18f:translateX −1350→0 走 EASE.snappy(急停),透视/扭转/缩放走晚收曲线 bezier(.62,0,.3,1) 16f——卡片"扭着"冲到位、最后几帧才拍平;按 x 速度给水平 SpeedBlur(0.2×速度、≤26px)+ 身后 7 条速度线 | 快于 12f 读不到鱼眼畸变,慢于 24f 泄劲;姿态与位移同曲线同时收,到位前几帧就已经平了,鱼眼感只剩第一帧 |
|
|
31
|
+
| A 落定 | rotateY 15–20f 冲到 +6°,20f 起 spring(damping 16) 回 0 + 8px 震屏 2f + 48 道集中线 9f 向外退散 + 斜长影收正;卡内文字晚 3f 落定(片名 −10° skew 收正) | "啪"在过冲回弹那一下,不在位移结束;集中线超过 10f 读作特效贴纸 |
|
|
32
|
+
| B 砸落 | 0–9f 悬在镜头前(2.75→2.6、虚化 10px、半透看得见背景)→ 9–15f ease-in(quad) 砸到 0.965 → spring(damping 14) 回 1 | ease-out 落地是"放下",ease-in 才是"砸" |
|
|
33
|
+
| B 三件套 | 冲击环直径 120→1500px/16f(白芯 9→1.5px + 金色柔辉)+ 14 片多边形玻璃/金箔碎片飞 280–580px(+16 道火花)+ 震屏 18px 指数衰减 5f(偏竖向)+ 2f 白闪 | 原案(720px/10px 尘/8px 震)全档不可感,实渲已 ×1.5–2;实黑粗环/黑方块尘读作"贴纸" |
|
|
34
|
+
| B 解耦命门 | 环/尘的"扩散"用 out-cubic、"消散"用线性帧时间 | 同用 out-cubic 前段跑太快,刚扩开就淡没 |
|
|
35
|
+
| C 波及帧 | 前沿过邻卡中心距反解(环半径 100→1100/16f,514px 距 ≈ 落点后 3f);包络 cos(t/2)·e^(−t/8),40f 硬钳 0;推开瞬间按速度给水平拖影 | 邻卡与主卡同帧动读作整版抖动,晚 3f 才是"被波及" |
|
|
36
|
+
| C 悬停蓄力 | 0–16f 主卡悬在空槽上方:上提 20px、scale 1.55→1.6(smooth)、槽内接触影随高度变实,再 16–22f ease-in(cubic) 砸进槽 | 悬停段死停读作"卡住了";蓄力幅度大于 30px 就成了另一个动作 |
|
|
37
|
+
| 景深 | B/C 离镜头近(scale 大)时按高度给虚化(B ≤10px、C ≤7px),落地清晰 | 近镜头元素锐利反而读不出"从镜头前砸下来" |
|
|
38
|
+
| 收尾 | 全部余波归零后真静止 ≥45f | 重拳 hold 按平常两倍给(同 beat-cut A 判例) |
|
|
39
|
+
|
|
40
|
+
## 已知坑
|
|
41
|
+
- demo 用 video-shotcraft 的宣传内容调校(A 发布片首映卡 / B「Shotcraft vs Keyframes」终场比分 / C 成片规格页 Launch film 卡)——参数是调校起点非实战定稿,
|
|
42
|
+
首次实战须以真实素材回验
|
|
43
|
+
- 亮场(C)上冲击环要配一层白色压力盘打底、环本身用饱和强调色,暗场(A/B)用白芯 + 色辉;
|
|
44
|
+
亮底上的白环 / 暗底上的黑环都几乎不可见
|
|
45
|
+
- 三式都带震屏,震屏族(impact-feedback)同一镜头
|
|
46
|
+
只能有一个震源;三式互相之间同镜头也只能选一
|
|
47
|
+
- 声音强依赖:A 的"啪"、B/C 的音爆必须同帧钉(sound-design §4.5),
|
|
48
|
+
无声版 B/C 的三件套读作"卡在抽搐"
|
|
49
|
+
- C 式邻卡必须先驻场稳定 ≥15f 再被波及——邻卡自己还在入场时被推开,
|
|
50
|
+
因果链读不出来
|
|
51
|
+
- 全片砸入 ≤2 次;三次以上每次都响等于都不响(P4)
|
|
52
|
+
|
|
53
|
+
## 参考实现
|
|
54
|
+
demos/effects/slam-entrance-moves/
|
|
55
|
+
(ImpactBurstKit.tsx / KanadaPerspectiveSnap.tsx / ScoreSlam.tsx)
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: spotlight-sweep-moves
|
|
3
|
-
一句话: 暗场聚光显影三式——A 醒睡扫过(光到即亮光走即暗)、B 贴边泛光横摇(紫光贴 UI 边缘渗入+聚光匀速右移)、C 角落匀速显影(径向聚光从角落匀速扩张点亮全屏);黑场里"光即叙事"的 UI 展示
|
|
4
|
-
适用: 暗色调品牌片里逐个介绍 UI 面板/功能区;黑场开场把界面"点亮"登场;段落间光转场
|
|
5
|
-
时长: 单式 3.5–4.5s;A/B 可串联成巡礼段
|
|
6
|
-
能量: 中低(克制、神秘感,爆点在"亮起"瞬间)
|
|
7
|
-
标签: ui-entrance、transition
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 意图
|
|
11
|
-
黑场里观众只能看见光给看的东西——聚光既是照明也是运镜和剪辑:
|
|
12
|
-
光到哪里哪里登场,光走即谢幕。三式共用"贴边紫色辉光光线"这个
|
|
13
|
-
身份元素(光线贴着 UI 边框/logo/顶边走,辉光要亮要糊,是光在
|
|
14
|
-
"抚摸"界面而不是描边动画)。命门是**匀速**:聚光的移动/扩张
|
|
15
|
-
严格 linear——缓动会让光有"意图",匀速才读作探照灯的机械扫掠
|
|
16
|
-
(C 式判例:linear 但半径终值过大=前 1/4 就饱和,观感照样不匀速)。
|
|
17
|
-
|
|
18
|
-
## 动效核心
|
|
19
|
-
**A 醒睡扫过**(glow-wake-sleep-panel):radial 显影罩跟随光头从左
|
|
20
|
-
向右匀速移动,范围外全黑;贴顶边紫色光线三层辉光(blur26 宽糊+
|
|
21
|
-
blur9 中层+亮芯+粉色偏移层)随扫光同步走,经过 logo 时 boxShadow
|
|
22
|
-
描光、到右缘点亮竖直残光;尾段光走面板沉回黑暗——有醒有睡。
|
|
23
|
-
**B 贴边泛光横摇**(slide-spotlight-pan):光线锚定面板边缘(先绕
|
|
24
|
-
左上角竖缘、转角后沿顶边横走),紫光晕染渗入 UI 顶部内侧(光从
|
|
25
|
-
边缘渗进界面);聚光头匀速右移显影、面板同时匀速左滑=相机右摇感。
|
|
26
|
-
**C 角落匀速显影**(corner-spotlight-reveal):左上角径向聚光半径
|
|
27
|
-
严格 linear 扩张,照到显影照不到沉黑,最终全亮(光即转场)。
|
|
28
|
-
|
|
29
|
-
## 参数表
|
|
30
|
-
| 参数 | 典型值 | 调节手感 |
|
|
31
|
-
|------|--------|----------|
|
|
32
|
-
| 聚光移动/扩张 | 全程 linear、零缓动 | **匀速是命门**——全程零缓动;加 ease 读作光有主观意图 |
|
|
33
|
-
| C 式半径终值 | 恰好在片尾覆盖全屏(1300@1080p/100f) | 终值过大=提前饱和假匀速:亮度采样须全程平滑爬升(实测 8/46/101/…/238) |
|
|
34
|
-
| 贴边光线辉光 | 3–4 层(blur26+blur9+亮芯+粉偏移) | 层少读作细线描边;辉光要够亮够糊才是"光" |
|
|
35
|
-
| 光线锚定 | 严格贴 UI 边缘/顶边/logo | 光线脱离边缘漂浮=失去"抚摸界面"语义(A 式返工判例:定位丢失紫光跑到底边) |
|
|
36
|
-
| 显影罩 | radial 渐变硬边略糊(feather ~15%) | 边太硬像圆形遮罩;太糊没有"照到/照不到"的界线 |
|
|
37
|
-
|
|
38
|
-
## 已知坑
|
|
39
|
-
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
|
|
40
|
-
首次实战须以真实素材回验
|
|
41
|
-
- 与 light-play-moves 分工:那张是元素/文字上的
|
|
42
|
-
光泽戏(sheen/辉光呼吸);本卡光是**运镜和剪辑**(显影/谢幕/转场),
|
|
43
|
-
光决定观众看什么
|
|
44
|
-
- 三式重做判例:聚光扫过必须带贴边光线同行(v1 只有显影罩被裁
|
|
45
|
-
"改改再看"——裸聚光没有身份,贴边紫光才是这个手法的签名)
|
|
46
|
-
- 原片(clickup-30)光线转角有一瞬彩虹色散,demo 未做;实战可
|
|
47
|
-
在转角帧加 1–2f 色散层提质感
|
|
48
|
-
|
|
49
|
-
## 参考实现
|
|
50
|
-
demos/effects/spotlight-sweep-moves/
|
|
51
|
-
(CornerSpotlightReveal.tsx / GlowWakeSleepPanel.tsx / SlideSpotlightPan.tsx)
|
|
52
|
-
原片出处:clickup-30.mp4
|
|
1
|
+
---
|
|
2
|
+
name: spotlight-sweep-moves
|
|
3
|
+
一句话: 暗场聚光显影三式——A 醒睡扫过(光到即亮光走即暗)、B 贴边泛光横摇(紫光贴 UI 边缘渗入+聚光匀速右移)、C 角落匀速显影(径向聚光从角落匀速扩张点亮全屏);黑场里"光即叙事"的 UI 展示
|
|
4
|
+
适用: 暗色调品牌片里逐个介绍 UI 面板/功能区;黑场开场把界面"点亮"登场;段落间光转场
|
|
5
|
+
时长: 单式 3.5–4.5s;A/B 可串联成巡礼段
|
|
6
|
+
能量: 中低(克制、神秘感,爆点在"亮起"瞬间)
|
|
7
|
+
标签: ui-entrance、transition
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
黑场里观众只能看见光给看的东西——聚光既是照明也是运镜和剪辑:
|
|
12
|
+
光到哪里哪里登场,光走即谢幕。三式共用"贴边紫色辉光光线"这个
|
|
13
|
+
身份元素(光线贴着 UI 边框/logo/顶边走,辉光要亮要糊,是光在
|
|
14
|
+
"抚摸"界面而不是描边动画)。命门是**匀速**:聚光的移动/扩张
|
|
15
|
+
严格 linear——缓动会让光有"意图",匀速才读作探照灯的机械扫掠
|
|
16
|
+
(C 式判例:linear 但半径终值过大=前 1/4 就饱和,观感照样不匀速)。
|
|
17
|
+
|
|
18
|
+
## 动效核心
|
|
19
|
+
**A 醒睡扫过**(glow-wake-sleep-panel):radial 显影罩跟随光头从左
|
|
20
|
+
向右匀速移动,范围外全黑;贴顶边紫色光线三层辉光(blur26 宽糊+
|
|
21
|
+
blur9 中层+亮芯+粉色偏移层)随扫光同步走,经过 logo 时 boxShadow
|
|
22
|
+
描光、到右缘点亮竖直残光;尾段光走面板沉回黑暗——有醒有睡。
|
|
23
|
+
**B 贴边泛光横摇**(slide-spotlight-pan):光线锚定面板边缘(先绕
|
|
24
|
+
左上角竖缘、转角后沿顶边横走),紫光晕染渗入 UI 顶部内侧(光从
|
|
25
|
+
边缘渗进界面);聚光头匀速右移显影、面板同时匀速左滑=相机右摇感。
|
|
26
|
+
**C 角落匀速显影**(corner-spotlight-reveal):左上角径向聚光半径
|
|
27
|
+
严格 linear 扩张,照到显影照不到沉黑,最终全亮(光即转场)。
|
|
28
|
+
|
|
29
|
+
## 参数表
|
|
30
|
+
| 参数 | 典型值 | 调节手感 |
|
|
31
|
+
|------|--------|----------|
|
|
32
|
+
| 聚光移动/扩张 | 全程 linear、零缓动 | **匀速是命门**——全程零缓动;加 ease 读作光有主观意图 |
|
|
33
|
+
| C 式半径终值 | 恰好在片尾覆盖全屏(1300@1080p/100f) | 终值过大=提前饱和假匀速:亮度采样须全程平滑爬升(实测 8/46/101/…/238) |
|
|
34
|
+
| 贴边光线辉光 | 3–4 层(blur26+blur9+亮芯+粉偏移) | 层少读作细线描边;辉光要够亮够糊才是"光" |
|
|
35
|
+
| 光线锚定 | 严格贴 UI 边缘/顶边/logo | 光线脱离边缘漂浮=失去"抚摸界面"语义(A 式返工判例:定位丢失紫光跑到底边) |
|
|
36
|
+
| 显影罩 | radial 渐变硬边略糊(feather ~15%) | 边太硬像圆形遮罩;太糊没有"照到/照不到"的界线 |
|
|
37
|
+
|
|
38
|
+
## 已知坑
|
|
39
|
+
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
|
|
40
|
+
首次实战须以真实素材回验
|
|
41
|
+
- 与 light-play-moves 分工:那张是元素/文字上的
|
|
42
|
+
光泽戏(sheen/辉光呼吸);本卡光是**运镜和剪辑**(显影/谢幕/转场),
|
|
43
|
+
光决定观众看什么
|
|
44
|
+
- 三式重做判例:聚光扫过必须带贴边光线同行(v1 只有显影罩被裁
|
|
45
|
+
"改改再看"——裸聚光没有身份,贴边紫光才是这个手法的签名)
|
|
46
|
+
- 原片(clickup-30)光线转角有一瞬彩虹色散,demo 未做;实战可
|
|
47
|
+
在转角帧加 1–2f 色散层提质感
|
|
48
|
+
|
|
49
|
+
## 参考实现
|
|
50
|
+
demos/effects/spotlight-sweep-moves/
|
|
51
|
+
(CornerSpotlightReveal.tsx / GlowWakeSleepPanel.tsx / SlideSpotlightPan.tsx)
|
|
52
|
+
原片出处:clickup-30.mp4
|