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,49 +1,49 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: radial-wave
|
|
3
|
-
一句话: 17×9 圆点阵列按到波源的欧氏距离错峰点亮,每点 scale 过冲到 1.5 再落回常亮,第一道波扫完后第二道亮蓝脉冲从外圈反向收拢回中心
|
|
4
|
-
适用: 产品/品牌开场的"系统上电"一拍;也用作数据网格、节点地图、覆盖范围类叙事的建立镜头
|
|
5
|
-
时长: 约 3.8s(114f@30fps)
|
|
6
|
-
能量: 中高(起手爆发一次,波前过后转为常亮低能量底子)
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 意图
|
|
10
|
-
把"很多点同时存在"这件静态事实,改写成"能量从一个源头扩散到全体"的动态事实。观众
|
|
11
|
-
看到的不是一张点阵图,而是一次通电:中心先亮,亮度像水波推过去,走完之后整张阵列
|
|
12
|
-
留在常亮态——为下一拍要放的内容铺好底。第二道反向波是回执,告诉观众这个系统会回应。
|
|
13
|
-
|
|
14
|
-
## 动效核心
|
|
15
|
-
- 阵列 17×9 共 153 点,dot 用百分比定位(`left:(c+0.5)/COLS`),因此改变行列数不需要
|
|
16
|
-
重算坐标;每点预存归一化距离 `dist = hypot(c-cx, r-cy) / maxD`(maxD = hypot(8,4))
|
|
17
|
-
- 第一道波:`seg(t, dist*0.35, dist*0.35+0.18, E.outCubic)`——起点由距离线性推迟(最外
|
|
18
|
-
圈延后 0.35),单点自己的行程恒定 0.18;波前是"起点错峰"而不是变速
|
|
19
|
-
- 每点的 scale 不是简单 0→1,而是 `w1*(1+0.5*sin(w1*π))`:中途鼓到约 1.5 再收回 1,
|
|
20
|
-
正弦包络让过冲发生在行程正中而非落位时
|
|
21
|
-
- 第二道波:`seg(t, 0.62+(1-dist)*0.25, +0.15)` 把偏移量反号(外圈先动),取
|
|
22
|
-
`sin(w2*π)` 做纯脉冲,叠加 0.8 的 scale 增量与 0.25 的透明度增量,走完不留状态
|
|
23
|
-
- 脉冲峰值处(`pulse2 > 0.3`)硬切成 `#b9f2ff` 并挂 `0 0 12px #7fd8ff` 光晕——只有第二
|
|
24
|
-
道波带发光,第一道波全程是 `#6c8cff` 常色,两道波在视觉上不会混成一件事
|
|
25
|
-
|
|
26
|
-
## 参数表
|
|
27
|
-
| 参数 | 典型值 | 调节手感 |
|
|
28
|
-
|------|--------|----------|
|
|
29
|
-
| 阵列规模 | COLS=17 / ROWS=9(153 点) | 点数决定波前的"分辨率";<8 列时距离分档太粗,波读作三四圈同心环在跳 |
|
|
30
|
-
| 波速系数 | `dist*0.35` | 这个 0.35 就是波速倒数:调大波走得慢、拖尾长;>0.5 时最外圈要等到全片过半才亮 |
|
|
31
|
-
| 单点行程 | 0.18(≈21f) | 决定波前的厚度;<0.1 波前锐利像扫描线,>0.3 全场几乎同时亮,扩散感消失 |
|
|
32
|
-
| 过冲幅度 | `1+0.5*sin(w1*π)` → 峰值 1.5 | 系数 0.5 是"弹一下"的量;去掉正弦项就是平淡的 0→1 淡入,>0.8 点会互相咬边 |
|
|
33
|
-
| 第二道波 | 起点 `0.62+(1-dist)*0.25`,窗 0.15,幅度 0.8 | 0.62 是两波之间的呼吸;提前到 0.5 以下会和第一道波尾巴叠在一起读作一团乱闪 |
|
|
34
|
-
| 常亮底 | `opacity = 0.25 + w1*0.5 + pulse2*0.25` | 0.25 是未点亮点的存在感;调到 0 则波前之外一片黑,阵列的"规模"交代不出来 |
|
|
35
|
-
| 高亮阈值 | `pulse2 > 0.3` 切色 + 光晕 | 阈值越低发光段越长;这是硬切不是渐变,阈值贴近 0 时会看到明显的开关跳变 |
|
|
36
|
-
|
|
37
|
-
## 已知坑
|
|
38
|
-
- 波源写死在几何中心(`cx=(COLS-1)/2, cy=(ROWS-1)/2`)。要改成从角落或某个"节点"起波,
|
|
39
|
-
必须同时改 cx/cy 与 maxD,否则归一化距离 >1,最外圈的起点会被推到 t=1 之外永不点亮
|
|
40
|
-
- 末帧不完全静止:中心点(dist=0)的第二道波窗是 0.87→1.02,t=1 时才走到 87%,
|
|
41
|
-
`pulse2≈0.41` 仍在高亮。要做循环或干净收尾,得把第二道波起点压到 0.85 以内
|
|
42
|
-
- dot 的 `width:10px` 与 `margin:-5px` 是绑定的一对(靠负 margin 居中),改点径必须同步改
|
|
43
|
-
margin,否则整阵列会朝右下偏半个点径
|
|
44
|
-
- 颜色只有两档(常色 `#6c8cff` / 峰值 `#b9f2ff`),换品牌色要改这两处加光晕色共三处;
|
|
45
|
-
背景 `#0a0b10` 是发光的前提,白底上这套亮度脉冲基本看不见
|
|
46
|
-
|
|
47
|
-
## 参考实现
|
|
48
|
-
demos/ui-entrance/radial-wave/
|
|
49
|
-
(RadialWave.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: radial-wave
|
|
3
|
+
一句话: 17×9 圆点阵列按到波源的欧氏距离错峰点亮,每点 scale 过冲到 1.5 再落回常亮,第一道波扫完后第二道亮蓝脉冲从外圈反向收拢回中心
|
|
4
|
+
适用: 产品/品牌开场的"系统上电"一拍;也用作数据网格、节点地图、覆盖范围类叙事的建立镜头
|
|
5
|
+
时长: 约 3.8s(114f@30fps)
|
|
6
|
+
能量: 中高(起手爆发一次,波前过后转为常亮低能量底子)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
把"很多点同时存在"这件静态事实,改写成"能量从一个源头扩散到全体"的动态事实。观众
|
|
11
|
+
看到的不是一张点阵图,而是一次通电:中心先亮,亮度像水波推过去,走完之后整张阵列
|
|
12
|
+
留在常亮态——为下一拍要放的内容铺好底。第二道反向波是回执,告诉观众这个系统会回应。
|
|
13
|
+
|
|
14
|
+
## 动效核心
|
|
15
|
+
- 阵列 17×9 共 153 点,dot 用百分比定位(`left:(c+0.5)/COLS`),因此改变行列数不需要
|
|
16
|
+
重算坐标;每点预存归一化距离 `dist = hypot(c-cx, r-cy) / maxD`(maxD = hypot(8,4))
|
|
17
|
+
- 第一道波:`seg(t, dist*0.35, dist*0.35+0.18, E.outCubic)`——起点由距离线性推迟(最外
|
|
18
|
+
圈延后 0.35),单点自己的行程恒定 0.18;波前是"起点错峰"而不是变速
|
|
19
|
+
- 每点的 scale 不是简单 0→1,而是 `w1*(1+0.5*sin(w1*π))`:中途鼓到约 1.5 再收回 1,
|
|
20
|
+
正弦包络让过冲发生在行程正中而非落位时
|
|
21
|
+
- 第二道波:`seg(t, 0.62+(1-dist)*0.25, +0.15)` 把偏移量反号(外圈先动),取
|
|
22
|
+
`sin(w2*π)` 做纯脉冲,叠加 0.8 的 scale 增量与 0.25 的透明度增量,走完不留状态
|
|
23
|
+
- 脉冲峰值处(`pulse2 > 0.3`)硬切成 `#b9f2ff` 并挂 `0 0 12px #7fd8ff` 光晕——只有第二
|
|
24
|
+
道波带发光,第一道波全程是 `#6c8cff` 常色,两道波在视觉上不会混成一件事
|
|
25
|
+
|
|
26
|
+
## 参数表
|
|
27
|
+
| 参数 | 典型值 | 调节手感 |
|
|
28
|
+
|------|--------|----------|
|
|
29
|
+
| 阵列规模 | COLS=17 / ROWS=9(153 点) | 点数决定波前的"分辨率";<8 列时距离分档太粗,波读作三四圈同心环在跳 |
|
|
30
|
+
| 波速系数 | `dist*0.35` | 这个 0.35 就是波速倒数:调大波走得慢、拖尾长;>0.5 时最外圈要等到全片过半才亮 |
|
|
31
|
+
| 单点行程 | 0.18(≈21f) | 决定波前的厚度;<0.1 波前锐利像扫描线,>0.3 全场几乎同时亮,扩散感消失 |
|
|
32
|
+
| 过冲幅度 | `1+0.5*sin(w1*π)` → 峰值 1.5 | 系数 0.5 是"弹一下"的量;去掉正弦项就是平淡的 0→1 淡入,>0.8 点会互相咬边 |
|
|
33
|
+
| 第二道波 | 起点 `0.62+(1-dist)*0.25`,窗 0.15,幅度 0.8 | 0.62 是两波之间的呼吸;提前到 0.5 以下会和第一道波尾巴叠在一起读作一团乱闪 |
|
|
34
|
+
| 常亮底 | `opacity = 0.25 + w1*0.5 + pulse2*0.25` | 0.25 是未点亮点的存在感;调到 0 则波前之外一片黑,阵列的"规模"交代不出来 |
|
|
35
|
+
| 高亮阈值 | `pulse2 > 0.3` 切色 + 光晕 | 阈值越低发光段越长;这是硬切不是渐变,阈值贴近 0 时会看到明显的开关跳变 |
|
|
36
|
+
|
|
37
|
+
## 已知坑
|
|
38
|
+
- 波源写死在几何中心(`cx=(COLS-1)/2, cy=(ROWS-1)/2`)。要改成从角落或某个"节点"起波,
|
|
39
|
+
必须同时改 cx/cy 与 maxD,否则归一化距离 >1,最外圈的起点会被推到 t=1 之外永不点亮
|
|
40
|
+
- 末帧不完全静止:中心点(dist=0)的第二道波窗是 0.87→1.02,t=1 时才走到 87%,
|
|
41
|
+
`pulse2≈0.41` 仍在高亮。要做循环或干净收尾,得把第二道波起点压到 0.85 以内
|
|
42
|
+
- dot 的 `width:10px` 与 `margin:-5px` 是绑定的一对(靠负 margin 居中),改点径必须同步改
|
|
43
|
+
margin,否则整阵列会朝右下偏半个点径
|
|
44
|
+
- 颜色只有两档(常色 `#6c8cff` / 峰值 `#b9f2ff`),换品牌色要改这两处加光晕色共三处;
|
|
45
|
+
背景 `#0a0b10` 是发光的前提,白底上这套亮度脉冲基本看不见
|
|
46
|
+
|
|
47
|
+
## 参考实现
|
|
48
|
+
demos/ui-entrance/radial-wave/
|
|
49
|
+
(RadialWave.tsx)
|
package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: research-card-stack-scroll
|
|
3
|
-
一句话: 深色论文卡每 12 帧一张沿右下轴线飞入中心叠压,落位带 1 帧压缩,只有最上一张全清晰渲染标题+作者+摘要,下方卡按堆积深度递增模糊变暗只露标题条,背景横向 grid 同步下移做速度参照
|
|
4
|
-
适用: "读了大量资料/处理了海量文档"的量级交代;研究类、检索类、批处理类产品的能力镜头
|
|
5
|
-
时长: 约 4.8s(144f@30fps)
|
|
6
|
-
能量: 中高(匀速高频,无爆发但持续压迫)
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 意图
|
|
10
|
-
要说的是"数量",但一次给 13 张卡会读成一堵墙。改成流水线:卡一张一张进,每张都被
|
|
11
|
-
读过(最上一张永远是全文渲染的那张),读完就沉进堆里变模糊。观众感受到的是持续不断
|
|
12
|
-
的吞吐量,而不是一个静态的堆。背景 grid 同速下移是速度参照——没有它,堆积会读作
|
|
13
|
-
"卡在原地缩小"。
|
|
14
|
-
|
|
15
|
-
## 动效核心
|
|
16
|
-
- 时间轴用真实帧号而非归一化 t:内部 `F=144`,每张卡的本地时间 `e = t*144 - i*12`,
|
|
17
|
-
一切编排(入场、堆积、深度)都以 `PER=12` 帧为节拍单位写死
|
|
18
|
-
- 入场是 6 帧短促动作:`seg(clamp((e+6)/6), 0, 1, E.outCubic)`——注意起点是 `e=-6`,
|
|
19
|
-
即卡在自己的节拍到达前 6 帧就开始飞,`translateY(-40→0)` + `scale(0.94→1)`
|
|
20
|
-
- 落位 squash:`e ∈ [0, 1.6)` 时 y 轴 scale 额外乘 0.97,只压 1.6 帧——短到读不出是
|
|
21
|
-
变形,只读作"砸实了"
|
|
22
|
-
- 堆积漂移:落位后 `drift = e/12*30`,每个节拍向下 30px、向右 `XOFF=9`px,形成微微
|
|
23
|
-
向右下的轴线;轴线的存在让 13 张卡不是同心叠放而是有厚度的一叠
|
|
24
|
-
- 深度衰减:`depth = min(1, drift/(30*3))`——三个节拍内衰减到底,`blur(depth*4)` +
|
|
25
|
-
`brightness(1-depth*0.25)`;再往下 `(drift-30*3.2)/(30*1.6)` 把 opacity 拉到 0 回收
|
|
26
|
-
- 焦点唯一:`focus = floor(f/12)`,只有 `i === focus` 的卡显示 body(作者行 + 4 条摘要
|
|
27
|
-
骨架),其余卡的 body 直接 `opacity:0` 只留标题——"正在读的那一张"永远只有一张
|
|
28
|
-
- 背景 grid:`translateY((f/12*30*S) % 24)`,位移量与卡的 drift 用同一个 `GAP=30`
|
|
29
|
-
推导,所以 grid 与卡堆严格同速;对 24px 取模让它无缝循环
|
|
30
|
-
|
|
31
|
-
## 参数表
|
|
32
|
-
| 参数 | 典型值 | 调节手感 |
|
|
33
|
-
|------|--------|----------|
|
|
34
|
-
| 节拍 | PER=12 帧/张,13 张 | 12f 是"紧但看得清"的下限;<8f 标题来不及读,>20f 量级感垮掉变成逐张展示 |
|
|
35
|
-
| 入场行程 | 6 帧(outCubic),提前量 -6 帧 | 行程只有节拍的一半 → 每张在下一张来之前已经落定;行程 ≥ PER 时会有两张同时在飞 |
|
|
36
|
-
| 入场位移/缩放 | `translateY(-40→0)`、`scale 0.94→1` | 40px 相对 96px 卡高是小幅——卡是"落进去"不是"飞进来";缩放差只有 0.06,再大就读作弹窗 |
|
|
37
|
-
| 落位压缩 | 1.6 帧,y 轴 ×0.97 | 3% 是刚好能感知的量;>6% 或时长 >3f 会看出橡皮变形 |
|
|
38
|
-
| 堆积轴线 | 每节拍 y+30px、x+9px | 9/30 的比值决定轴线斜度;x 归零会变成正下方同心叠压,厚度感消失 |
|
|
39
|
-
| 深度衰减 | `depth = drift/90`,blur 0→4px、brightness 1→0.75 | 90px(3 个节拍)内衰减完 → 画面里始终只有约 3 张是"半清晰"的;衰减距离拉长会让下方糊卡堆太厚,画面变脏 |
|
|
40
|
-
| 回收窗 | `drift > 96px` 起淡出,48px 内到 0 | 回收太早会看到卡在画面中央消失;太晚 13 张全在场,DOM 与 blur 开销都上去 |
|
|
41
|
-
| 内容坐标系 | 逻辑 420×250,整体 `scale(min(W/420, H/250))` | 所有像素值写在逻辑坐标系里,改画布尺寸不用重排;卡 296×96、字号 9.5px 都是逻辑值 |
|
|
42
|
-
|
|
43
|
-
## 已知坑
|
|
44
|
-
- 卡数与节拍是绑定的:`13 张 × 12 帧 = 156 帧 > F=144`,末两张在 t=1 时仍在入场途中,
|
|
45
|
-
末帧不是干净的静态。要做定格结尾,把卡数压到 `F/PER - 1` 以内(12 帧节拍下 ≤11 张)
|
|
46
|
-
- `focus = floor(f/12)` 会超出卡数上界(f=144 时 focus=12,正好是最后一张)——加卡数
|
|
47
|
-
或改节拍后要确认 focus 不会长期指向不存在的索引,否则出现"没有任何一张是清晰的"
|
|
48
|
-
- 全部时间常量都写死在 144 帧的假设上(`F=144`, `fr=f/F`)。改时长必须同时改 F,
|
|
49
|
-
否则节拍会随时长伸缩,12 帧的紧凑感丢失
|
|
50
|
-
- 标题是 13 条真实感的论文标题占位、`preprint:24xx` 编号由索引生成,落地要换成项目
|
|
51
|
-
真实文档标题;`rand(i*5+k)` 生成的摘要骨架条宽度是确定性伪随机,不要换成 Math.random
|
|
52
|
-
- 深色卡(`INK` 底 + `#2A2A2A` 描边)压在 `#FAFAFA` 浅底上是这套对比度的前提;卡色
|
|
53
|
-
改浅后 `brightness(0.75)` 的深度衰减几乎看不出来,需要改用 opacity 或灰度衰减
|
|
54
|
-
|
|
55
|
-
## 参考实现
|
|
56
|
-
demos/ui-entrance/research-card-stack-scroll/
|
|
57
|
-
(ResearchCardStackScroll.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: research-card-stack-scroll
|
|
3
|
+
一句话: 深色论文卡每 12 帧一张沿右下轴线飞入中心叠压,落位带 1 帧压缩,只有最上一张全清晰渲染标题+作者+摘要,下方卡按堆积深度递增模糊变暗只露标题条,背景横向 grid 同步下移做速度参照
|
|
4
|
+
适用: "读了大量资料/处理了海量文档"的量级交代;研究类、检索类、批处理类产品的能力镜头
|
|
5
|
+
时长: 约 4.8s(144f@30fps)
|
|
6
|
+
能量: 中高(匀速高频,无爆发但持续压迫)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
要说的是"数量",但一次给 13 张卡会读成一堵墙。改成流水线:卡一张一张进,每张都被
|
|
11
|
+
读过(最上一张永远是全文渲染的那张),读完就沉进堆里变模糊。观众感受到的是持续不断
|
|
12
|
+
的吞吐量,而不是一个静态的堆。背景 grid 同速下移是速度参照——没有它,堆积会读作
|
|
13
|
+
"卡在原地缩小"。
|
|
14
|
+
|
|
15
|
+
## 动效核心
|
|
16
|
+
- 时间轴用真实帧号而非归一化 t:内部 `F=144`,每张卡的本地时间 `e = t*144 - i*12`,
|
|
17
|
+
一切编排(入场、堆积、深度)都以 `PER=12` 帧为节拍单位写死
|
|
18
|
+
- 入场是 6 帧短促动作:`seg(clamp((e+6)/6), 0, 1, E.outCubic)`——注意起点是 `e=-6`,
|
|
19
|
+
即卡在自己的节拍到达前 6 帧就开始飞,`translateY(-40→0)` + `scale(0.94→1)`
|
|
20
|
+
- 落位 squash:`e ∈ [0, 1.6)` 时 y 轴 scale 额外乘 0.97,只压 1.6 帧——短到读不出是
|
|
21
|
+
变形,只读作"砸实了"
|
|
22
|
+
- 堆积漂移:落位后 `drift = e/12*30`,每个节拍向下 30px、向右 `XOFF=9`px,形成微微
|
|
23
|
+
向右下的轴线;轴线的存在让 13 张卡不是同心叠放而是有厚度的一叠
|
|
24
|
+
- 深度衰减:`depth = min(1, drift/(30*3))`——三个节拍内衰减到底,`blur(depth*4)` +
|
|
25
|
+
`brightness(1-depth*0.25)`;再往下 `(drift-30*3.2)/(30*1.6)` 把 opacity 拉到 0 回收
|
|
26
|
+
- 焦点唯一:`focus = floor(f/12)`,只有 `i === focus` 的卡显示 body(作者行 + 4 条摘要
|
|
27
|
+
骨架),其余卡的 body 直接 `opacity:0` 只留标题——"正在读的那一张"永远只有一张
|
|
28
|
+
- 背景 grid:`translateY((f/12*30*S) % 24)`,位移量与卡的 drift 用同一个 `GAP=30`
|
|
29
|
+
推导,所以 grid 与卡堆严格同速;对 24px 取模让它无缝循环
|
|
30
|
+
|
|
31
|
+
## 参数表
|
|
32
|
+
| 参数 | 典型值 | 调节手感 |
|
|
33
|
+
|------|--------|----------|
|
|
34
|
+
| 节拍 | PER=12 帧/张,13 张 | 12f 是"紧但看得清"的下限;<8f 标题来不及读,>20f 量级感垮掉变成逐张展示 |
|
|
35
|
+
| 入场行程 | 6 帧(outCubic),提前量 -6 帧 | 行程只有节拍的一半 → 每张在下一张来之前已经落定;行程 ≥ PER 时会有两张同时在飞 |
|
|
36
|
+
| 入场位移/缩放 | `translateY(-40→0)`、`scale 0.94→1` | 40px 相对 96px 卡高是小幅——卡是"落进去"不是"飞进来";缩放差只有 0.06,再大就读作弹窗 |
|
|
37
|
+
| 落位压缩 | 1.6 帧,y 轴 ×0.97 | 3% 是刚好能感知的量;>6% 或时长 >3f 会看出橡皮变形 |
|
|
38
|
+
| 堆积轴线 | 每节拍 y+30px、x+9px | 9/30 的比值决定轴线斜度;x 归零会变成正下方同心叠压,厚度感消失 |
|
|
39
|
+
| 深度衰减 | `depth = drift/90`,blur 0→4px、brightness 1→0.75 | 90px(3 个节拍)内衰减完 → 画面里始终只有约 3 张是"半清晰"的;衰减距离拉长会让下方糊卡堆太厚,画面变脏 |
|
|
40
|
+
| 回收窗 | `drift > 96px` 起淡出,48px 内到 0 | 回收太早会看到卡在画面中央消失;太晚 13 张全在场,DOM 与 blur 开销都上去 |
|
|
41
|
+
| 内容坐标系 | 逻辑 420×250,整体 `scale(min(W/420, H/250))` | 所有像素值写在逻辑坐标系里,改画布尺寸不用重排;卡 296×96、字号 9.5px 都是逻辑值 |
|
|
42
|
+
|
|
43
|
+
## 已知坑
|
|
44
|
+
- 卡数与节拍是绑定的:`13 张 × 12 帧 = 156 帧 > F=144`,末两张在 t=1 时仍在入场途中,
|
|
45
|
+
末帧不是干净的静态。要做定格结尾,把卡数压到 `F/PER - 1` 以内(12 帧节拍下 ≤11 张)
|
|
46
|
+
- `focus = floor(f/12)` 会超出卡数上界(f=144 时 focus=12,正好是最后一张)——加卡数
|
|
47
|
+
或改节拍后要确认 focus 不会长期指向不存在的索引,否则出现"没有任何一张是清晰的"
|
|
48
|
+
- 全部时间常量都写死在 144 帧的假设上(`F=144`, `fr=f/F`)。改时长必须同时改 F,
|
|
49
|
+
否则节拍会随时长伸缩,12 帧的紧凑感丢失
|
|
50
|
+
- 标题是 13 条真实感的论文标题占位、`preprint:24xx` 编号由索引生成,落地要换成项目
|
|
51
|
+
真实文档标题;`rand(i*5+k)` 生成的摘要骨架条宽度是确定性伪随机,不要换成 Math.random
|
|
52
|
+
- 深色卡(`INK` 底 + `#2A2A2A` 描边)压在 `#FAFAFA` 浅底上是这套对比度的前提;卡色
|
|
53
|
+
改浅后 `brightness(0.75)` 的深度衰减几乎看不出来,需要改用 opacity 或灰度衰减
|
|
54
|
+
|
|
55
|
+
## 参考实现
|
|
56
|
+
demos/ui-entrance/research-card-stack-scroll/
|
|
57
|
+
(ResearchCardStackScroll.tsx)
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: row-embed
|
|
3
|
-
一句话: 内容行像卡片一样从空中降下、rotateX 收平、嵌入瞬间底边亮一道强调色的缝
|
|
4
|
-
适用: "结构化数据长进页面"的详情页/列表镜头;行级内容的批量入场
|
|
5
|
-
时长: 约 2s(12–68f)
|
|
6
|
-
能量: 中
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 意图
|
|
10
|
-
详情页的行不是"显示出来"而是"长进去"——每一行从空中降下并严丝合缝嵌入页面布局,嵌入瞬间的强调色缝是"咔哒"扣上的视觉拟音。
|
|
11
|
-
|
|
12
|
-
## 动效核心
|
|
13
|
-
- 行按越落越快的节拍逐条从上空飞入(末段带速度砸进槽位 + 纵向运动模糊),rotateX 从仰角收平,scale 略过冲后 press 回弹
|
|
14
|
-
- 行位先盖页面真实底色补丁 + 极淡虚线槽位框占位,落地后补丁消失让纹理透出;槽位接触影随行接近收紧变实
|
|
15
|
-
- 嵌入瞬间行底边一道 2px 强调色缝从中心向两侧展开后淡出
|
|
16
|
-
- 相机同时缓缓下摇并微推近,行雨与运镜并行;取景全程被页面铺满
|
|
17
|
-
|
|
18
|
-
## 参数表
|
|
19
|
-
| 参数 | 典型值 | 调节手感 |
|
|
20
|
-
|------|--------|----------|
|
|
21
|
-
| 节拍 | cue = 12/22/31/39/46(间隔 10→7 递减),飞行 12f,最后一行 58f 落地、强调色缝 66f 收尾 ≤ 镜头 68f 预算 | 先算"最后一行何时落地"再定 cue 间隔——节拍×行数要对预算(同 document-typewriter-reveal 卡的核心算术) |
|
|
22
|
-
| 飞行姿态 | `perspective(900px) translateY(−120·air) rotateX(16°·air)`,进度缓动 bezier(.5,0,.8,.75)(末段仍有速度),scale 1.06→0.995 再 4f press-bounce 回 1 | rotateX 收平是"嵌入"的关键读感;纯垂直下落读作贴纸 |
|
|
23
|
-
| 飞行体 | backgroundImage 取整页截图、backgroundPosition 负偏移裁出该行 | 纹理裁片不重绘内容(Q1)——重绘的行和页面字体渲染有肉眼可见差异 |
|
|
24
|
-
| 空槽补丁 | 行位先盖页面真实底色 #f9f6f1 patch(逐像素采样,偏白会读成一整块白板)+ 20% 虚线槽位框,落地后 2f 消失 | 无补丁时纹理里烤入的行会先透出来,飞入变成"重影" |
|
|
25
|
-
| 嵌入闪光 | 底边 2px 强调色缝(两端羽化)从中心向两侧 5f 展开(Easing.out cubic)、8f 淡出,带 7px 辉光 | 缝只在底边、只闪一次;四边都闪读作选中框 |
|
|
26
|
-
| 相机 | cy 500→740、zoom 1.12→1.25,68f 缓动下摇 + 微推 | 运镜与行雨并行制造"边看边长"的感觉;相机若等行落完再动,镜头会拖;起止两端都要让页面铺满画框,露出页顶/页底外就是空白死区 |
|
|
27
|
-
|
|
28
|
-
## 声音
|
|
29
|
-
段落切入钉 transition-soft(模板片钉在 f475);行落地不逐条配音——行数多、间隔匀时逐条 pop 会机枪化,靠画面的强调色缝做"视觉拟音"即可(S2 反面自检)。
|
|
30
|
-
|
|
31
|
-
## 已知坑
|
|
32
|
-
- 飞入终点必须是页面布局真实槽位、落地即嵌入(Q9)——要"从空中飞入,嵌入 dashboard";悬浮其上不落地会显得假
|
|
33
|
-
- 强调色缝等光效必须裁进承载元素圆角边界内(Q4 判例),光溢出圆角是廉价感典型来源
|
|
34
|
-
|
|
35
|
-
## 参考实现
|
|
36
|
-
demos/ui-entrance/row-embed/RowEmbed.tsx(原 template/src/aifl/live/SceneDetail.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: row-embed
|
|
3
|
+
一句话: 内容行像卡片一样从空中降下、rotateX 收平、嵌入瞬间底边亮一道强调色的缝
|
|
4
|
+
适用: "结构化数据长进页面"的详情页/列表镜头;行级内容的批量入场
|
|
5
|
+
时长: 约 2s(12–68f)
|
|
6
|
+
能量: 中
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
详情页的行不是"显示出来"而是"长进去"——每一行从空中降下并严丝合缝嵌入页面布局,嵌入瞬间的强调色缝是"咔哒"扣上的视觉拟音。
|
|
11
|
+
|
|
12
|
+
## 动效核心
|
|
13
|
+
- 行按越落越快的节拍逐条从上空飞入(末段带速度砸进槽位 + 纵向运动模糊),rotateX 从仰角收平,scale 略过冲后 press 回弹
|
|
14
|
+
- 行位先盖页面真实底色补丁 + 极淡虚线槽位框占位,落地后补丁消失让纹理透出;槽位接触影随行接近收紧变实
|
|
15
|
+
- 嵌入瞬间行底边一道 2px 强调色缝从中心向两侧展开后淡出
|
|
16
|
+
- 相机同时缓缓下摇并微推近,行雨与运镜并行;取景全程被页面铺满
|
|
17
|
+
|
|
18
|
+
## 参数表
|
|
19
|
+
| 参数 | 典型值 | 调节手感 |
|
|
20
|
+
|------|--------|----------|
|
|
21
|
+
| 节拍 | cue = 12/22/31/39/46(间隔 10→7 递减),飞行 12f,最后一行 58f 落地、强调色缝 66f 收尾 ≤ 镜头 68f 预算 | 先算"最后一行何时落地"再定 cue 间隔——节拍×行数要对预算(同 document-typewriter-reveal 卡的核心算术) |
|
|
22
|
+
| 飞行姿态 | `perspective(900px) translateY(−120·air) rotateX(16°·air)`,进度缓动 bezier(.5,0,.8,.75)(末段仍有速度),scale 1.06→0.995 再 4f press-bounce 回 1 | rotateX 收平是"嵌入"的关键读感;纯垂直下落读作贴纸 |
|
|
23
|
+
| 飞行体 | backgroundImage 取整页截图、backgroundPosition 负偏移裁出该行 | 纹理裁片不重绘内容(Q1)——重绘的行和页面字体渲染有肉眼可见差异 |
|
|
24
|
+
| 空槽补丁 | 行位先盖页面真实底色 #f9f6f1 patch(逐像素采样,偏白会读成一整块白板)+ 20% 虚线槽位框,落地后 2f 消失 | 无补丁时纹理里烤入的行会先透出来,飞入变成"重影" |
|
|
25
|
+
| 嵌入闪光 | 底边 2px 强调色缝(两端羽化)从中心向两侧 5f 展开(Easing.out cubic)、8f 淡出,带 7px 辉光 | 缝只在底边、只闪一次;四边都闪读作选中框 |
|
|
26
|
+
| 相机 | cy 500→740、zoom 1.12→1.25,68f 缓动下摇 + 微推 | 运镜与行雨并行制造"边看边长"的感觉;相机若等行落完再动,镜头会拖;起止两端都要让页面铺满画框,露出页顶/页底外就是空白死区 |
|
|
27
|
+
|
|
28
|
+
## 声音
|
|
29
|
+
段落切入钉 transition-soft(模板片钉在 f475);行落地不逐条配音——行数多、间隔匀时逐条 pop 会机枪化,靠画面的强调色缝做"视觉拟音"即可(S2 反面自检)。
|
|
30
|
+
|
|
31
|
+
## 已知坑
|
|
32
|
+
- 飞入终点必须是页面布局真实槽位、落地即嵌入(Q9)——要"从空中飞入,嵌入 dashboard";悬浮其上不落地会显得假
|
|
33
|
+
- 强调色缝等光效必须裁进承载元素圆角边界内(Q4 判例),光溢出圆角是廉价感典型来源
|
|
34
|
+
|
|
35
|
+
## 参考实现
|
|
36
|
+
demos/ui-entrance/row-embed/RowEmbed.tsx(原 template/src/aifl/live/SceneDetail.tsx)
|
package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md
CHANGED
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: value-stagger-gradient
|
|
3
|
-
一句话: 16 根柱入场时 delay 是时间错峰,同时高度/色相/位移/模糊四个属性各自铺成从首到末的数值梯度;第二拍把错峰原点换成中心,脉冲幅度以中心为最大重新铺开
|
|
4
|
-
适用: 技法演示与参数化能力的展示镜头;也可直接当数据/频谱/均衡器类界面的入场
|
|
5
|
-
时长: 约 5.0s(150f@30fps)
|
|
6
|
-
能量: 中高(第一拍是连续铺开,第二拍中心脉冲是明确的一次峰值)
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 意图
|
|
10
|
-
stagger 通常只被用来错开时间。这张卡要说的是它还能错开**值**——同一个索引既决定
|
|
11
|
-
"什么时候动",也决定"动到多少"。两拍是一组对照实验:第一拍原点在首位(梯度从左到
|
|
12
|
-
右单调铺开),第二拍原点换到中心(梯度以中轴对称铺开)。观众看到的不是两个动画,
|
|
13
|
-
而是同一个配方换了一个参数。屏幕上的代码字幕同步换成对应的 stagger 调用,明说这件事。
|
|
14
|
-
|
|
15
|
-
## 动效核心
|
|
16
|
-
- 核心工具是一个 8 行的 `staggerVal(i, n, a, b, ease)`:把索引归一化成 `k = i/(n-1)`
|
|
17
|
-
再 `lerp(k, a, b)`——等价 anime.js 的 `stagger([a, b])` 值模式,可选 ease 让梯度非线性
|
|
18
|
-
- 静态梯度(写在 setup 里,一次算完):色相 `staggerVal(i,N,200,320)`、
|
|
19
|
-
最大高度 `staggerVal(i,N,92,32)`——16 根柱天生是一道从蓝到紫、从高到矮的斜坡
|
|
20
|
-
- 动态梯度(每帧用):位移量 `staggerVal(i,N,46,14)`、模糊量 `staggerVal(i,N,8,2)`
|
|
21
|
-
——首位柱要走 46px、糊 8px,末位只走 14px、糊 2px。**同一次入场里每根柱的行程都不同**
|
|
22
|
-
- 第一拍时间错峰:`d = i*0.02`,`e = seg(t, 0.06+d, 0.28+d, E.outCubic)`——从首位起,
|
|
23
|
-
16 根摊在 0.3 的窗上;`opacity = e`、`filter = blur((1-e)*b0)`、
|
|
24
|
-
`translateY((1-e)*y0)` + 高度 `hMax*e`(底部锚定按 height 生长,圆角不被 scaleY 压扁),三者都被同一个 e 驱动
|
|
25
|
-
- 第二拍换原点:`distC = |i - 7.5| / 7.5` 是到中心的归一化距离,
|
|
26
|
-
`w = seg(t, 0.56 + distC*0.13, +0.18)`——中心柱先动,波向两端扩,这就是 `from:'center'`
|
|
27
|
-
- 第二拍的幅度也是梯度:`amp = lerp(1-distC, 0.06, 0.42)`,中心柱脉冲 42%、末端只有 6%;
|
|
28
|
-
`pulse = sin(w*π)` 是纯脉冲,同时叠进高度 `hMax*e*(1+pulse*amp)` 与
|
|
29
|
-
`brightness(1+pulse*0.55)`
|
|
30
|
-
- 代码字幕是一条语法着色的代码条,在 t≈0.52 用约 5f 上下交叉换句(旧句上移淡出、新句自下替入),从 `scale: stagger([1, 0.35]) hue: stagger([200, 320])`
|
|
31
|
-
换成 `pulse: stagger([.06, .42], { from: 'center' })`——正好卡在两拍之间
|
|
32
|
-
|
|
33
|
-
## 参数表
|
|
34
|
-
| 参数 | 典型值 | 调节手感 |
|
|
35
|
-
|------|--------|----------|
|
|
36
|
-
| 柱数 | N=16(`left: 8+i*5.4%`,宽 3.4%) | 16 根让梯度有足够分档;<8 根梯度读作"每根都不一样"而非一道斜坡,>24 根柱间距要重算 |
|
|
37
|
-
| 时间错峰 | `d = i*0.02`(≈3f/根,总 0.3) | 3f 是连绵的铺开;>0.05 会变成逐根点名,梯度的"整体感"丢失 |
|
|
38
|
-
| 单柱行程 | 窗 0.22(≈33f,outCubic) | 行程是总错峰的 0.73 倍 → 大部分时间十来根同时在动;行程 < 错峰总量时变成一根接一根 |
|
|
39
|
-
| 高度梯度 | `stagger([92, 32])`px | 首末 2.9 倍差是明确斜坡;比值 <1.5 读不出梯度,>4 末端柱矮到看不见 |
|
|
40
|
-
| 色相梯度 | `stagger([200, 320])` | 120° 跨度(蓝→紫);跨度 <40° 时色相白给,>200° 会绕回红色让斜坡读作环形 |
|
|
41
|
-
| 位移/模糊梯度 | `stagger([46,14])`px / `stagger([8,2])`px | 这两条是本卡的"值 stagger"主证据——把它们改成常量,动效立刻退化成普通的 stagger 入场 |
|
|
42
|
-
| 第二拍原点 | `from:'center'`,`distC*0.13` | 0.13 是从中心到端点的传播延迟(≈4f);归零则整排同时脉冲,`from` 参数就没有意义了 |
|
|
43
|
-
| 脉冲幅度梯度 | `lerp(1-distC, 0.06, 0.42)` | 中心 42% / 端点 6% 是 7 倍差,波形明显;两端也给大幅度会读作整排一起鼓,中心原点看不出 |
|
|
44
|
-
| 亮度脉冲 | `brightness(1 + pulse*0.55)` | 55% 提亮让脉冲在暗底上可读;这一项没做梯度(全柱同幅),是有意的——太多梯度叠一起观众读不清哪个是主角 |
|
|
45
|
-
|
|
46
|
-
## 已知坑
|
|
47
|
-
- 第一拍与第二拍首尾相接:末柱入场结束于 `0.28+15*0.02 = 0.58`,而中心柱的脉冲在 0.56
|
|
48
|
-
就起。加柱数或加大时间错峰会让入场吃进脉冲段,两拍糊成一件事——加柱必须把 0.56 后推
|
|
49
|
-
- 端点柱的第二拍窗口是 `0.69→0.87`,之后到 t=1 有约 0.13(20f)的完全静止。这是给
|
|
50
|
-
观众看清"终态梯度"的时间,不是空白
|
|
51
|
-
- `distC` 的分母 `C=(N-1)/2` 在 N=1 时会除零;`staggerVal` 里已用 `n<=1 ? 0` 兜住,
|
|
52
|
-
但 `distC` 没有——柱数改成 1 会 NaN
|
|
53
|
-
- 柱位 `left: 8+i*5.4%` 与宽 `3.4%` 是为 N=16 手配的(末柱右缘 8+15*5.4+3.4 = 92.4%)。
|
|
54
|
-
改柱数必须重算这两个百分比,否则柱会溢出或挤在左半边
|
|
55
|
-
- 字幕是 anime.js 的 API 调用字符串,本质是**技法说明**而不是内容。用在真实成片里
|
|
56
|
-
要么换成有语义的标题,要么去掉——否则观众读到的是代码
|
|
57
|
-
- 底部的 16 个小圆点(`bottom:17%`,opacity .35)是静态装饰,不参与任何动画;它们的
|
|
58
|
-
`left` 偏移 `+1.2%` 是与柱宽 3.4% 手对的居中量,改柱宽要一起改
|
|
59
|
-
- 深底(`#0a0b10`)+ 高饱和柱(85%/66%)+ 12px 光晕是一套;浅色主题下光晕与
|
|
60
|
-
brightness 脉冲都失效,需要改用 saturate 或阴影表达脉冲
|
|
61
|
-
|
|
62
|
-
## 参考实现
|
|
63
|
-
demos/ui-entrance/value-stagger-gradient/
|
|
64
|
-
(ValueStaggerGradient.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: value-stagger-gradient
|
|
3
|
+
一句话: 16 根柱入场时 delay 是时间错峰,同时高度/色相/位移/模糊四个属性各自铺成从首到末的数值梯度;第二拍把错峰原点换成中心,脉冲幅度以中心为最大重新铺开
|
|
4
|
+
适用: 技法演示与参数化能力的展示镜头;也可直接当数据/频谱/均衡器类界面的入场
|
|
5
|
+
时长: 约 5.0s(150f@30fps)
|
|
6
|
+
能量: 中高(第一拍是连续铺开,第二拍中心脉冲是明确的一次峰值)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
stagger 通常只被用来错开时间。这张卡要说的是它还能错开**值**——同一个索引既决定
|
|
11
|
+
"什么时候动",也决定"动到多少"。两拍是一组对照实验:第一拍原点在首位(梯度从左到
|
|
12
|
+
右单调铺开),第二拍原点换到中心(梯度以中轴对称铺开)。观众看到的不是两个动画,
|
|
13
|
+
而是同一个配方换了一个参数。屏幕上的代码字幕同步换成对应的 stagger 调用,明说这件事。
|
|
14
|
+
|
|
15
|
+
## 动效核心
|
|
16
|
+
- 核心工具是一个 8 行的 `staggerVal(i, n, a, b, ease)`:把索引归一化成 `k = i/(n-1)`
|
|
17
|
+
再 `lerp(k, a, b)`——等价 anime.js 的 `stagger([a, b])` 值模式,可选 ease 让梯度非线性
|
|
18
|
+
- 静态梯度(写在 setup 里,一次算完):色相 `staggerVal(i,N,200,320)`、
|
|
19
|
+
最大高度 `staggerVal(i,N,92,32)`——16 根柱天生是一道从蓝到紫、从高到矮的斜坡
|
|
20
|
+
- 动态梯度(每帧用):位移量 `staggerVal(i,N,46,14)`、模糊量 `staggerVal(i,N,8,2)`
|
|
21
|
+
——首位柱要走 46px、糊 8px,末位只走 14px、糊 2px。**同一次入场里每根柱的行程都不同**
|
|
22
|
+
- 第一拍时间错峰:`d = i*0.02`,`e = seg(t, 0.06+d, 0.28+d, E.outCubic)`——从首位起,
|
|
23
|
+
16 根摊在 0.3 的窗上;`opacity = e`、`filter = blur((1-e)*b0)`、
|
|
24
|
+
`translateY((1-e)*y0)` + 高度 `hMax*e`(底部锚定按 height 生长,圆角不被 scaleY 压扁),三者都被同一个 e 驱动
|
|
25
|
+
- 第二拍换原点:`distC = |i - 7.5| / 7.5` 是到中心的归一化距离,
|
|
26
|
+
`w = seg(t, 0.56 + distC*0.13, +0.18)`——中心柱先动,波向两端扩,这就是 `from:'center'`
|
|
27
|
+
- 第二拍的幅度也是梯度:`amp = lerp(1-distC, 0.06, 0.42)`,中心柱脉冲 42%、末端只有 6%;
|
|
28
|
+
`pulse = sin(w*π)` 是纯脉冲,同时叠进高度 `hMax*e*(1+pulse*amp)` 与
|
|
29
|
+
`brightness(1+pulse*0.55)`
|
|
30
|
+
- 代码字幕是一条语法着色的代码条,在 t≈0.52 用约 5f 上下交叉换句(旧句上移淡出、新句自下替入),从 `scale: stagger([1, 0.35]) hue: stagger([200, 320])`
|
|
31
|
+
换成 `pulse: stagger([.06, .42], { from: 'center' })`——正好卡在两拍之间
|
|
32
|
+
|
|
33
|
+
## 参数表
|
|
34
|
+
| 参数 | 典型值 | 调节手感 |
|
|
35
|
+
|------|--------|----------|
|
|
36
|
+
| 柱数 | N=16(`left: 8+i*5.4%`,宽 3.4%) | 16 根让梯度有足够分档;<8 根梯度读作"每根都不一样"而非一道斜坡,>24 根柱间距要重算 |
|
|
37
|
+
| 时间错峰 | `d = i*0.02`(≈3f/根,总 0.3) | 3f 是连绵的铺开;>0.05 会变成逐根点名,梯度的"整体感"丢失 |
|
|
38
|
+
| 单柱行程 | 窗 0.22(≈33f,outCubic) | 行程是总错峰的 0.73 倍 → 大部分时间十来根同时在动;行程 < 错峰总量时变成一根接一根 |
|
|
39
|
+
| 高度梯度 | `stagger([92, 32])`px | 首末 2.9 倍差是明确斜坡;比值 <1.5 读不出梯度,>4 末端柱矮到看不见 |
|
|
40
|
+
| 色相梯度 | `stagger([200, 320])` | 120° 跨度(蓝→紫);跨度 <40° 时色相白给,>200° 会绕回红色让斜坡读作环形 |
|
|
41
|
+
| 位移/模糊梯度 | `stagger([46,14])`px / `stagger([8,2])`px | 这两条是本卡的"值 stagger"主证据——把它们改成常量,动效立刻退化成普通的 stagger 入场 |
|
|
42
|
+
| 第二拍原点 | `from:'center'`,`distC*0.13` | 0.13 是从中心到端点的传播延迟(≈4f);归零则整排同时脉冲,`from` 参数就没有意义了 |
|
|
43
|
+
| 脉冲幅度梯度 | `lerp(1-distC, 0.06, 0.42)` | 中心 42% / 端点 6% 是 7 倍差,波形明显;两端也给大幅度会读作整排一起鼓,中心原点看不出 |
|
|
44
|
+
| 亮度脉冲 | `brightness(1 + pulse*0.55)` | 55% 提亮让脉冲在暗底上可读;这一项没做梯度(全柱同幅),是有意的——太多梯度叠一起观众读不清哪个是主角 |
|
|
45
|
+
|
|
46
|
+
## 已知坑
|
|
47
|
+
- 第一拍与第二拍首尾相接:末柱入场结束于 `0.28+15*0.02 = 0.58`,而中心柱的脉冲在 0.56
|
|
48
|
+
就起。加柱数或加大时间错峰会让入场吃进脉冲段,两拍糊成一件事——加柱必须把 0.56 后推
|
|
49
|
+
- 端点柱的第二拍窗口是 `0.69→0.87`,之后到 t=1 有约 0.13(20f)的完全静止。这是给
|
|
50
|
+
观众看清"终态梯度"的时间,不是空白
|
|
51
|
+
- `distC` 的分母 `C=(N-1)/2` 在 N=1 时会除零;`staggerVal` 里已用 `n<=1 ? 0` 兜住,
|
|
52
|
+
但 `distC` 没有——柱数改成 1 会 NaN
|
|
53
|
+
- 柱位 `left: 8+i*5.4%` 与宽 `3.4%` 是为 N=16 手配的(末柱右缘 8+15*5.4+3.4 = 92.4%)。
|
|
54
|
+
改柱数必须重算这两个百分比,否则柱会溢出或挤在左半边
|
|
55
|
+
- 字幕是 anime.js 的 API 调用字符串,本质是**技法说明**而不是内容。用在真实成片里
|
|
56
|
+
要么换成有语义的标题,要么去掉——否则观众读到的是代码
|
|
57
|
+
- 底部的 16 个小圆点(`bottom:17%`,opacity .35)是静态装饰,不参与任何动画;它们的
|
|
58
|
+
`left` 偏移 `+1.2%` 是与柱宽 3.4% 手对的居中量,改柱宽要一起改
|
|
59
|
+
- 深底(`#0a0b10`)+ 高饱和柱(85%/66%)+ 12px 光晕是一套;浅色主题下光晕与
|
|
60
|
+
brightness 脉冲都失效,需要改用 saturate 或阴影表达脉冲
|
|
61
|
+
|
|
62
|
+
## 参考实现
|
|
63
|
+
demos/ui-entrance/value-stagger-gradient/
|
|
64
|
+
(ValueStaggerGradient.tsx)
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wall-reveal-moves
|
|
3
|
-
一句话: 整墙批量入场两式——bento 逐格点亮、蓝图描线成形,全部原位显形不位移,与 deck-deal-flyin 的飞入位移型互补成品类矩阵
|
|
4
|
-
适用: 功能墙/卡片墙/整页界面的整体亮相;内容已在原位、要"显形"而非"涌入"的段落
|
|
5
|
-
时长: 单式约 5s(A 150f / B 150f @30fps,含建立 hold 与静止收尾)
|
|
6
|
-
能量: 中
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 意图
|
|
10
|
-
"一墙内容怎么出场"库内此前只有 deck-deal-flyin 一个答案——高能量、位移型、
|
|
11
|
-
"东西涌进来"。但不是每面墙都该涌:品牌段要庄重、
|
|
12
|
-
"从设计到实物"要讲工序。这两式共同点是**非位移批量入场**——元素原地显形,
|
|
13
|
-
版式从第一帧就成立,观众看的是"状态变化的波前扫过一面墙"而不是"物体飞行"。
|
|
14
|
-
选型先问一句:这面墙该"涌进来"还是"亮起来"?前者去 deck-deal-flyin,后者进本卡。
|
|
15
|
-
|
|
16
|
-
## 两式选型
|
|
17
|
-
| 式 | 做法 | 适用 |
|
|
18
|
-
|----|------|------|
|
|
19
|
-
| A bento-light-up 逐格点亮 | 暗场 3×2 bento 墙(两行宽窄互补 600/420/420 ↔ 420/420/600,暗色卡面)压暗待命,强调色彗星流光逐格描边一圈、内容随即提亮上浮,全亮后镜头缓推收住;墙上方眉标是 video-shotcraft 标志 + 字标,主标题「Every shot, tuned in one place.」 | 内容庄重/暗场品牌段;节奏沉稳的功能总览 |
|
|
20
|
-
| B wireframe-draw-on 蓝图描线成形 | 界面先以 SVG 细线蓝图分组描画,再一条强调色发光竖线左→右扫过,扫过处线框实体化成真实界面(demo 里是 video-shotcraft 工作台,侧栏 logo 方块内描出镜刻标志) | "从设计到实物/从想法到产品"叙事;产品首次整体亮相 |
|
|
21
|
-
|
|
22
|
-
## 参数表
|
|
23
|
-
| 参数 | 典型值 | 调节手感 |
|
|
24
|
-
|------|--------|----------|
|
|
25
|
-
| A 节拍 | hold 20f → 每格间隔 12f 依次激活(六格 ~96f 全亮)→ scale 1→1.04 缓推 25f(bezier 0.33,0,0.2,1)→ 静止收尾 | 12f 级联是"逐格可辨"与"整墙拖沓"的平衡点;格数增多可压到 8–10f,但间隔均匀本身就是这一式的庄重感来源,别学发牌加速 |
|
|
26
|
-
| A 单格 | 暗态 opacity 0.18 + translateY 20px;SVG rect pathLength=100 描边 8f:22% 周长的彗星段(#e8b45e 6px 高斯辉光 + #ffe3ae 2.5px 亮芯)领跑,身后留 1.5px 细边;描边过半(+6f)内容 back-out(0.3,1.4,0.5,1) 弹出 8f 提亮归位;描完 +12f 流光退火到 0.4 常亮细边 | 描边与内容弹出要**接力不同步**——同帧起读作整格闪现;点亮中段辉光脉冲用 lit·(1−lit)·4 抛物线,峰值幅度按格 seed 微差(正弦哈希,禁真随机) |
|
|
27
|
-
| B 描线 | hold 20f → 分组错峰各 30f 描完:侧栏 20f 起/顶栏 30f 起/6 卡 40+i*3f 起/折线图 52f 起;SVG pathLength=1 + dashoffset 1→0,蓝图冷灰蓝 #6c7894(外框 1.6px / 内件 1.25px)round,淡蓝 24px 点阵底 + 卡角裁切标记 | 分组错峰是"手在画"的感觉来源,全部同帧起笔读作打印机;卡内占位线再按 +3f 细错峰,长短用 seed 哈希微差 |
|
|
28
|
-
| B 实体化 | 88–118f 实体层 clip-path inset(0 right% 0 0) 从左向右展开 30f,bezier(0.55,0,0.25,1);前沿跟 4px 强调色竖线(#ffc46b + 双层辉光 boxShadow),86–92f 淡入、112–120f 淡出;竖线身后 260px 一段渐隐暖光(刚显影的余温) | 竖线位置与 clip 前沿必须同一个 scan 值驱动,异步读作穿帮;描线段与扫描段之间留 ~6f 喘息(82→88f),线框画完立刻扫读作赶工 |
|
|
29
|
-
| 静止收尾 | 两式动作全部落定后真静止 ≥15f(A 在缓推结束后、B 在扫描线淡出后起算) | R1 呼吸判例:静止期一切属性锁死,包括辉光/阴影/高光残留 |
|
|
30
|
-
|
|
31
|
-
## 已知坑
|
|
32
|
-
- **demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
|
|
33
|
-
首次实战须以真实素材回验**
|
|
34
|
-
- A/B 的强调色描边/扫描线属"单点高质量光效"范畴(Q4 三约束内合规),但一支片
|
|
35
|
-
整墙点亮 ≤1 次(P4 手法去重)——A 和 B 同片共用即算两次整墙光效,选一
|
|
36
|
-
- B 式线框几何必须与实体层布局逐像素对位(demo 里按 FakeDashboard A 手排),
|
|
37
|
-
换素材要重排线框——对不齐则扫描线扫过瞬间元素跳位,一眼穿帮;改了品牌名 / logo
|
|
38
|
-
也算换素材(字宽变了,面包屑后面的元素会整组右移),线长要按实体层实测字宽重对
|
|
39
|
-
- 两式都是"原位显形",别混入位移入场(如逐格点亮时再加 translateX 飞入)——
|
|
40
|
-
位移需求去 deck-deal-flyin,杂交会两头不像
|
|
41
|
-
- A 式暗态 opacity 0.18 依赖暗底(#2a2a28)成立,亮底下压暗读作褪色故障
|
|
42
|
-
|
|
43
|
-
## 参考实现
|
|
44
|
-
demos/ui-entrance/wall-reveal-moves/
|
|
45
|
-
(BentoLightUp.tsx / WireframeDrawOn.tsx)
|
|
46
|
-
|
|
47
|
-
实现状态:两式均有参考实现与 Gallery 动态样片。
|
|
1
|
+
---
|
|
2
|
+
name: wall-reveal-moves
|
|
3
|
+
一句话: 整墙批量入场两式——bento 逐格点亮、蓝图描线成形,全部原位显形不位移,与 deck-deal-flyin 的飞入位移型互补成品类矩阵
|
|
4
|
+
适用: 功能墙/卡片墙/整页界面的整体亮相;内容已在原位、要"显形"而非"涌入"的段落
|
|
5
|
+
时长: 单式约 5s(A 150f / B 150f @30fps,含建立 hold 与静止收尾)
|
|
6
|
+
能量: 中
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
"一墙内容怎么出场"库内此前只有 deck-deal-flyin 一个答案——高能量、位移型、
|
|
11
|
+
"东西涌进来"。但不是每面墙都该涌:品牌段要庄重、
|
|
12
|
+
"从设计到实物"要讲工序。这两式共同点是**非位移批量入场**——元素原地显形,
|
|
13
|
+
版式从第一帧就成立,观众看的是"状态变化的波前扫过一面墙"而不是"物体飞行"。
|
|
14
|
+
选型先问一句:这面墙该"涌进来"还是"亮起来"?前者去 deck-deal-flyin,后者进本卡。
|
|
15
|
+
|
|
16
|
+
## 两式选型
|
|
17
|
+
| 式 | 做法 | 适用 |
|
|
18
|
+
|----|------|------|
|
|
19
|
+
| A bento-light-up 逐格点亮 | 暗场 3×2 bento 墙(两行宽窄互补 600/420/420 ↔ 420/420/600,暗色卡面)压暗待命,强调色彗星流光逐格描边一圈、内容随即提亮上浮,全亮后镜头缓推收住;墙上方眉标是 video-shotcraft 标志 + 字标,主标题「Every shot, tuned in one place.」 | 内容庄重/暗场品牌段;节奏沉稳的功能总览 |
|
|
20
|
+
| B wireframe-draw-on 蓝图描线成形 | 界面先以 SVG 细线蓝图分组描画,再一条强调色发光竖线左→右扫过,扫过处线框实体化成真实界面(demo 里是 video-shotcraft 工作台,侧栏 logo 方块内描出镜刻标志) | "从设计到实物/从想法到产品"叙事;产品首次整体亮相 |
|
|
21
|
+
|
|
22
|
+
## 参数表
|
|
23
|
+
| 参数 | 典型值 | 调节手感 |
|
|
24
|
+
|------|--------|----------|
|
|
25
|
+
| A 节拍 | hold 20f → 每格间隔 12f 依次激活(六格 ~96f 全亮)→ scale 1→1.04 缓推 25f(bezier 0.33,0,0.2,1)→ 静止收尾 | 12f 级联是"逐格可辨"与"整墙拖沓"的平衡点;格数增多可压到 8–10f,但间隔均匀本身就是这一式的庄重感来源,别学发牌加速 |
|
|
26
|
+
| A 单格 | 暗态 opacity 0.18 + translateY 20px;SVG rect pathLength=100 描边 8f:22% 周长的彗星段(#e8b45e 6px 高斯辉光 + #ffe3ae 2.5px 亮芯)领跑,身后留 1.5px 细边;描边过半(+6f)内容 back-out(0.3,1.4,0.5,1) 弹出 8f 提亮归位;描完 +12f 流光退火到 0.4 常亮细边 | 描边与内容弹出要**接力不同步**——同帧起读作整格闪现;点亮中段辉光脉冲用 lit·(1−lit)·4 抛物线,峰值幅度按格 seed 微差(正弦哈希,禁真随机) |
|
|
27
|
+
| B 描线 | hold 20f → 分组错峰各 30f 描完:侧栏 20f 起/顶栏 30f 起/6 卡 40+i*3f 起/折线图 52f 起;SVG pathLength=1 + dashoffset 1→0,蓝图冷灰蓝 #6c7894(外框 1.6px / 内件 1.25px)round,淡蓝 24px 点阵底 + 卡角裁切标记 | 分组错峰是"手在画"的感觉来源,全部同帧起笔读作打印机;卡内占位线再按 +3f 细错峰,长短用 seed 哈希微差 |
|
|
28
|
+
| B 实体化 | 88–118f 实体层 clip-path inset(0 right% 0 0) 从左向右展开 30f,bezier(0.55,0,0.25,1);前沿跟 4px 强调色竖线(#ffc46b + 双层辉光 boxShadow),86–92f 淡入、112–120f 淡出;竖线身后 260px 一段渐隐暖光(刚显影的余温) | 竖线位置与 clip 前沿必须同一个 scan 值驱动,异步读作穿帮;描线段与扫描段之间留 ~6f 喘息(82→88f),线框画完立刻扫读作赶工 |
|
|
29
|
+
| 静止收尾 | 两式动作全部落定后真静止 ≥15f(A 在缓推结束后、B 在扫描线淡出后起算) | R1 呼吸判例:静止期一切属性锁死,包括辉光/阴影/高光残留 |
|
|
30
|
+
|
|
31
|
+
## 已知坑
|
|
32
|
+
- **demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
|
|
33
|
+
首次实战须以真实素材回验**
|
|
34
|
+
- A/B 的强调色描边/扫描线属"单点高质量光效"范畴(Q4 三约束内合规),但一支片
|
|
35
|
+
整墙点亮 ≤1 次(P4 手法去重)——A 和 B 同片共用即算两次整墙光效,选一
|
|
36
|
+
- B 式线框几何必须与实体层布局逐像素对位(demo 里按 FakeDashboard A 手排),
|
|
37
|
+
换素材要重排线框——对不齐则扫描线扫过瞬间元素跳位,一眼穿帮;改了品牌名 / logo
|
|
38
|
+
也算换素材(字宽变了,面包屑后面的元素会整组右移),线长要按实体层实测字宽重对
|
|
39
|
+
- 两式都是"原位显形",别混入位移入场(如逐格点亮时再加 translateX 飞入)——
|
|
40
|
+
位移需求去 deck-deal-flyin,杂交会两头不像
|
|
41
|
+
- A 式暗态 opacity 0.18 依赖暗底(#2a2a28)成立,亮底下压暗读作褪色故障
|
|
42
|
+
|
|
43
|
+
## 参考实现
|
|
44
|
+
demos/ui-entrance/wall-reveal-moves/
|
|
45
|
+
(BentoLightUp.tsx / WireframeDrawOn.tsx)
|
|
46
|
+
|
|
47
|
+
实现状态:两式均有参考实现与 Gallery 动态样片。
|