dsh-drawai 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/lib/index.js +7777 -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/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/render.js +179 -179
- 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-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/video-trace-pool.js +128 -128
- package/package.json +1 -1
- package/LICENSE +0 -4175
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: spotlight-hero-card
|
|
3
|
-
一句话: 关灯的剧场里一束钨丝聚光(带体积光柱)扫过页面锁定一张卡,斜侧推进后卡片弹起悬浮、香槟色光束沿轮廓两圈、连同 3D 注记一起贴回原位
|
|
4
|
-
适用: "单一主角"式产品开场;把一个核心对象(卡片/条目/模块)立成全片主角
|
|
5
|
-
时长: 172f(约 5.7s;锁定 f34 → 触地 f142 → 30f 真静止 hold)
|
|
6
|
-
能量: 中(质感最高的一镜,节奏慢而稳)
|
|
7
|
-
标签: effects、camera
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 意图
|
|
11
|
-
开场只讲一件事:这一张卡就是产品的原子单位。聚光灯替观众做视线引导,弹起悬浮给它体积和重量,轮廓光束是"扫描/检视"的隐喻,最后贴回原位表示它属于这个页面。
|
|
12
|
-
|
|
13
|
-
## 动效核心
|
|
14
|
-
- **关灯**:真实页面截图(Q1)整页 multiply 压到 ~6–14% 亮度(暖黑 rgba(14,12,10),保色相),只有光池里是页面本色;
|
|
15
|
-
开灯是"推闸":f1–6 亮 → 回闪到 62% → 稳住
|
|
16
|
-
- **光池**:近高斯衰减的多段 stop(中心透明 → 边缘全暗,不是一圈硬边)+ 低强度钨丝暖白 soft-light;
|
|
17
|
-
游走 3 个中间站(站间 2–3f 停顿,smooth in-out)后锁定卡心,光池收拢 + 锁定瞬间 6% 脉冲,光池外再压暗一档;
|
|
18
|
-
锁定后(f38–58,随推进)屏幕空间的圆光池交叉过渡成**页面空间的卡形光**:同一台相机下一层整页暗场
|
|
19
|
-
(translateZ 1px,0.94 暖黑)在卡位挖一个卡形软孔(紧孔 σ22 + 一圈 15% 的宽溢光 σ60),卡在 z 上高于
|
|
20
|
-
这层暗场,所以从边到边全亮、保持原生文字对比,衰减只发生在卡外;soft-light 暖光同步退掉(卡上不叠泛光);
|
|
21
|
-
卡边一圈暖白发丝轮廓光 + 极淡外溢让轮廓在暗页上读清;hold 段暗场 ±1.2% 极缓呼吸
|
|
22
|
-
- **体积光柱**:光源在画面上方偏右远处,梯形光柱打到光池(外层 blur 28px、内层 clip-path,边缘软),
|
|
23
|
-
柱内一层确定性浮尘;推进后光柱减淡 45%
|
|
24
|
-
- 相机从全页正视推进到斜侧特写(左侧机位主导),焦点左移让卡落在画面偏右、左侧留给注记;推进后完全锁死
|
|
25
|
-
- 卡片 rise(带过冲)→ 悬停 sin bob → reseat(落地微压 + 一圈香槟色落地光);悬浮投影落向左下(光从右上来)
|
|
26
|
-
- SVG rounded-rect 轮廓光束跑两圈:第一圈快而亮、第二圈慢而弱(香槟金 + 白芯)
|
|
27
|
-
- 卡起飞后原位铺页面底色补丁 + 香槟色描边,落地瞬间增亮消失
|
|
28
|
-
- 3D 悬空注记(hover-3d-annotation 手法,C3):卡左侧白色粗黑体两行 video-shotcraft 宣传语「Your product, / in motion.」(34px 页面空间,
|
|
29
|
-
推进后 ≈100px),关键词背后 12f 长出香槟色马克条(字翻成墨色),注记下垫暗色衬底压住邻卡文字;
|
|
30
|
-
注记层用与页面同一套相机数学(camAt)单独画在灯光层之上——它是自发光的字,不被关灯压暗。
|
|
31
|
-
reseat 时注记同步落回页面平面(translateZ 92→4),不提前退场,结尾是一张完整海报
|
|
32
|
-
## 参数表
|
|
33
|
-
| 参数 | 典型值 | 调节手感 |
|
|
34
|
-
|------|--------|----------|
|
|
35
|
-
| 选卡 | cards[3],中心 x 恰为 960(页面中心) | 主角卡先按"推进后构图"选,不是随便挑一张 |
|
|
36
|
-
| 相机 | 静止全页 zoom 0.8(0–40f)→ 18f 推进 zoom 2.6;rotY 34° 主导 + rotX 仅 8°,persp 1200;焦点取卡心左移 105px、上移 10px;推进后锁死到尾 | 侧向水平机位读感优于俯拍("从左侧拍摄而不是从下方",Q6);收尾禁用 zoom 2.6→2.58 一类尾漂,呼吸交给光而不是相机(R1) |
|
|
37
|
-
| 关灯 | 光池外 multiply 0.90→0.94(≈6–10% 亮度) | <0.8 读作"调暗的页面"不是剧场;>0.96 邻卡完全消失、失去"在页面里"的上下文 |
|
|
38
|
-
| 聚光灯 | 3 个中间站(4→28f),光池半径 400→300,锁定 +6% 脉冲;soft-light 暖白 0.24;锁定后换成卡形光 | 圆光池罩卡会两头落暗、中间打爆("手电筒照页面")——主角卡要用卡形软孔从边到边打亮;中间站让"随机照射"可信 |
|
|
39
|
-
| 体积光柱 | 光源 (pool.x+420, −720),柱宽 0.6×光池;screen 0.34→0.06 纵向渐变 | 光源太近读作手电筒;柱太宽会和光池糊成一团 |
|
|
40
|
-
| 动作弧 | rise 10f(bezier(0.2,1.25,0.3,1) 过冲)→ 悬停 58f(sin bob 振幅 4px 周期 40f,z=110px·lift)→ reseat 18f,落地 press 0.997 | 锁定→落地 ≈108f≈3.6s——质感镜头要"放慢到 3 秒"(R3),初版几乎总是偏快 |
|
|
41
|
-
| 轮廓光束 | lap1 68→82f(strokeWidth 5+2.5 双层)、lap2 88→108f(3.5+1.75、整体 opacity 0.62);strokeDasharray "0.16 1" 走 dashoffset | 两圈快慢有别才读作"持续扫描",一圈是眨眼;光束只给主角一次(Q4) |
|
|
42
|
-
| 双层影 | 偏左下 `-10·lift, 10·lift …, -36·lift 48·lift 90·lift` 随高度生长 | 影子不随高度长,悬浮就不成立;方向要和光源一致 |
|
|
43
|
-
## 声音
|
|
44
|
-
开灯推闸钉一记低沉的 light-clunk(f2),弹起钉 whoosh-big(本 demo f56;模板片钉在 f127),光束扫描钉 sparkle(f68),reseat 钉 transition-snap(f142)——弹起/光效/落定各有专属音(S2、S4)。
|
|
45
|
-
|
|
46
|
-
## 已知坑
|
|
47
|
-
- 开场多卡群舞撑不起第一印象(Q5)——开场曾反复推倒多次才收敛到单卡;直接从单主角+完整动作弧起稿
|
|
48
|
-
- 推进特写下卡上文字会糊,根因是纹理栅格化分辨率不是 DoF——配套技法展开见审美准则 Q2
|
|
49
|
-
- 逐卡 glint 闪烁被两次否决("不需要每个卡片都闪烁一下",Q4),光效严格只给主角
|
|
50
|
-
- 卡形光的暗场必须在页面空间(PageCam 内、translateZ 介于页面与卡之间),屏幕空间的遮罩跟不上透视与卡的抬升;卡 translateZ 至少 +2px,reseat 后才不会和暗场共面闪烁
|
|
51
|
-
- 注记的暗色衬底右缘要止于卡左缘之前,否则会在卡面左侧压出一道暗楔
|
|
52
|
-
- 注记若画在 PageCam 内、灯光层之下,会被关灯的 multiply 一起压暗成灰字——注记层要单独套同一台相机画在灯光之上
|
|
53
|
-
|
|
54
|
-
## 参考实现
|
|
55
|
-
demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx(源自 template/src/aifl/live/SceneOpen.tsx 82–220 段,第二轮改为暗场剧场版)
|
|
1
|
+
---
|
|
2
|
+
name: spotlight-hero-card
|
|
3
|
+
一句话: 关灯的剧场里一束钨丝聚光(带体积光柱)扫过页面锁定一张卡,斜侧推进后卡片弹起悬浮、香槟色光束沿轮廓两圈、连同 3D 注记一起贴回原位
|
|
4
|
+
适用: "单一主角"式产品开场;把一个核心对象(卡片/条目/模块)立成全片主角
|
|
5
|
+
时长: 172f(约 5.7s;锁定 f34 → 触地 f142 → 30f 真静止 hold)
|
|
6
|
+
能量: 中(质感最高的一镜,节奏慢而稳)
|
|
7
|
+
标签: effects、camera
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
开场只讲一件事:这一张卡就是产品的原子单位。聚光灯替观众做视线引导,弹起悬浮给它体积和重量,轮廓光束是"扫描/检视"的隐喻,最后贴回原位表示它属于这个页面。
|
|
12
|
+
|
|
13
|
+
## 动效核心
|
|
14
|
+
- **关灯**:真实页面截图(Q1)整页 multiply 压到 ~6–14% 亮度(暖黑 rgba(14,12,10),保色相),只有光池里是页面本色;
|
|
15
|
+
开灯是"推闸":f1–6 亮 → 回闪到 62% → 稳住
|
|
16
|
+
- **光池**:近高斯衰减的多段 stop(中心透明 → 边缘全暗,不是一圈硬边)+ 低强度钨丝暖白 soft-light;
|
|
17
|
+
游走 3 个中间站(站间 2–3f 停顿,smooth in-out)后锁定卡心,光池收拢 + 锁定瞬间 6% 脉冲,光池外再压暗一档;
|
|
18
|
+
锁定后(f38–58,随推进)屏幕空间的圆光池交叉过渡成**页面空间的卡形光**:同一台相机下一层整页暗场
|
|
19
|
+
(translateZ 1px,0.94 暖黑)在卡位挖一个卡形软孔(紧孔 σ22 + 一圈 15% 的宽溢光 σ60),卡在 z 上高于
|
|
20
|
+
这层暗场,所以从边到边全亮、保持原生文字对比,衰减只发生在卡外;soft-light 暖光同步退掉(卡上不叠泛光);
|
|
21
|
+
卡边一圈暖白发丝轮廓光 + 极淡外溢让轮廓在暗页上读清;hold 段暗场 ±1.2% 极缓呼吸
|
|
22
|
+
- **体积光柱**:光源在画面上方偏右远处,梯形光柱打到光池(外层 blur 28px、内层 clip-path,边缘软),
|
|
23
|
+
柱内一层确定性浮尘;推进后光柱减淡 45%
|
|
24
|
+
- 相机从全页正视推进到斜侧特写(左侧机位主导),焦点左移让卡落在画面偏右、左侧留给注记;推进后完全锁死
|
|
25
|
+
- 卡片 rise(带过冲)→ 悬停 sin bob → reseat(落地微压 + 一圈香槟色落地光);悬浮投影落向左下(光从右上来)
|
|
26
|
+
- SVG rounded-rect 轮廓光束跑两圈:第一圈快而亮、第二圈慢而弱(香槟金 + 白芯)
|
|
27
|
+
- 卡起飞后原位铺页面底色补丁 + 香槟色描边,落地瞬间增亮消失
|
|
28
|
+
- 3D 悬空注记(hover-3d-annotation 手法,C3):卡左侧白色粗黑体两行 video-shotcraft 宣传语「Your product, / in motion.」(34px 页面空间,
|
|
29
|
+
推进后 ≈100px),关键词背后 12f 长出香槟色马克条(字翻成墨色),注记下垫暗色衬底压住邻卡文字;
|
|
30
|
+
注记层用与页面同一套相机数学(camAt)单独画在灯光层之上——它是自发光的字,不被关灯压暗。
|
|
31
|
+
reseat 时注记同步落回页面平面(translateZ 92→4),不提前退场,结尾是一张完整海报
|
|
32
|
+
## 参数表
|
|
33
|
+
| 参数 | 典型值 | 调节手感 |
|
|
34
|
+
|------|--------|----------|
|
|
35
|
+
| 选卡 | cards[3],中心 x 恰为 960(页面中心) | 主角卡先按"推进后构图"选,不是随便挑一张 |
|
|
36
|
+
| 相机 | 静止全页 zoom 0.8(0–40f)→ 18f 推进 zoom 2.6;rotY 34° 主导 + rotX 仅 8°,persp 1200;焦点取卡心左移 105px、上移 10px;推进后锁死到尾 | 侧向水平机位读感优于俯拍("从左侧拍摄而不是从下方",Q6);收尾禁用 zoom 2.6→2.58 一类尾漂,呼吸交给光而不是相机(R1) |
|
|
37
|
+
| 关灯 | 光池外 multiply 0.90→0.94(≈6–10% 亮度) | <0.8 读作"调暗的页面"不是剧场;>0.96 邻卡完全消失、失去"在页面里"的上下文 |
|
|
38
|
+
| 聚光灯 | 3 个中间站(4→28f),光池半径 400→300,锁定 +6% 脉冲;soft-light 暖白 0.24;锁定后换成卡形光 | 圆光池罩卡会两头落暗、中间打爆("手电筒照页面")——主角卡要用卡形软孔从边到边打亮;中间站让"随机照射"可信 |
|
|
39
|
+
| 体积光柱 | 光源 (pool.x+420, −720),柱宽 0.6×光池;screen 0.34→0.06 纵向渐变 | 光源太近读作手电筒;柱太宽会和光池糊成一团 |
|
|
40
|
+
| 动作弧 | rise 10f(bezier(0.2,1.25,0.3,1) 过冲)→ 悬停 58f(sin bob 振幅 4px 周期 40f,z=110px·lift)→ reseat 18f,落地 press 0.997 | 锁定→落地 ≈108f≈3.6s——质感镜头要"放慢到 3 秒"(R3),初版几乎总是偏快 |
|
|
41
|
+
| 轮廓光束 | lap1 68→82f(strokeWidth 5+2.5 双层)、lap2 88→108f(3.5+1.75、整体 opacity 0.62);strokeDasharray "0.16 1" 走 dashoffset | 两圈快慢有别才读作"持续扫描",一圈是眨眼;光束只给主角一次(Q4) |
|
|
42
|
+
| 双层影 | 偏左下 `-10·lift, 10·lift …, -36·lift 48·lift 90·lift` 随高度生长 | 影子不随高度长,悬浮就不成立;方向要和光源一致 |
|
|
43
|
+
## 声音
|
|
44
|
+
开灯推闸钉一记低沉的 light-clunk(f2),弹起钉 whoosh-big(本 demo f56;模板片钉在 f127),光束扫描钉 sparkle(f68),reseat 钉 transition-snap(f142)——弹起/光效/落定各有专属音(S2、S4)。
|
|
45
|
+
|
|
46
|
+
## 已知坑
|
|
47
|
+
- 开场多卡群舞撑不起第一印象(Q5)——开场曾反复推倒多次才收敛到单卡;直接从单主角+完整动作弧起稿
|
|
48
|
+
- 推进特写下卡上文字会糊,根因是纹理栅格化分辨率不是 DoF——配套技法展开见审美准则 Q2
|
|
49
|
+
- 逐卡 glint 闪烁被两次否决("不需要每个卡片都闪烁一下",Q4),光效严格只给主角
|
|
50
|
+
- 卡形光的暗场必须在页面空间(PageCam 内、translateZ 介于页面与卡之间),屏幕空间的遮罩跟不上透视与卡的抬升;卡 translateZ 至少 +2px,reseat 后才不会和暗场共面闪烁
|
|
51
|
+
- 注记的暗色衬底右缘要止于卡左缘之前,否则会在卡面左侧压出一道暗楔
|
|
52
|
+
- 注记若画在 PageCam 内、灯光层之下,会被关灯的 multiply 一起压暗成灰字——注记层要单独套同一台相机画在灯光之上
|
|
53
|
+
|
|
54
|
+
## 参考实现
|
|
55
|
+
demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx(源自 template/src/aifl/live/SceneOpen.tsx 82–220 段,第二轮改为暗场剧场版)
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: stroke-segment-build
|
|
3
|
-
一句话: 断笔成字——标题拆成十几段互不相连的笔画乱序逐段点亮,前 70% 不可读,末段落位瞬间语义"啪"地成立
|
|
4
|
-
适用: 开场吊悬念的产品名/大数字揭晓;一支片 ≤1 次;与 type-assembly/draw-svg-trace 分工:那些是"看着字被组装/描画",本卡是"意义延迟揭晓"
|
|
5
|
-
时长: 165f(5.5s;揭晓 f105 后 hold 2s)
|
|
6
|
-
能量: 低起中收(悬念型,落位帧是能量点)
|
|
7
|
-
标签: typography
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 意图
|
|
11
|
-
《异形》片头判例:标题不是被画出来的,是"显影"出来的——拆成离散
|
|
12
|
-
笔画段乱序点亮,观众前 70% 时间只看到神秘碎段,最后几段落位的瞬间
|
|
13
|
-
突然读出是什么字。"认出的那一刻"就是钩子,钩子的强度取决于
|
|
14
|
-
不可读期撑多久、钥匙段压多晚。
|
|
15
|
-
|
|
16
|
-
## 动作阶段
|
|
17
|
-
| 阶段 | 帧段参考 | 内容 |
|
|
18
|
-
|------|------|------|
|
|
19
|
-
| 1 暗场 | f0–12 | 深紫墙 + 极淡墙面光静置(不是死黑) |
|
|
20
|
-
| 2 乱序点亮 | f12–72 | 前 13 段起点按 ease-out 分布(间隔 9f 越来越密到 3f);每段是 7f 霓虹起辉抖闪(亮—灭—亮—半亮—亮),之后以 0.58 亮度稳住 |
|
|
21
|
-
| 3 屏息 | f72–86 | 14f 不新增任何段,只有灯管电流的微弱嗡动——悬念最紧的一拍 |
|
|
22
|
-
| 4 钥匙段 | f86 / f93 / f99 | S 下脊 → H 中横 → P 碗底,三拍落下 |
|
|
23
|
-
| 5 揭晓 | f105 | 全部灯管 0.58→1、电流涌起冲到 1.25 再回落(灯牌自身宽泛光涌一次)、整字 scale 1→1.02、墙与地面被照亮 |
|
|
24
|
-
| 6 定格 | f113–165 | 副题升起后 hold,镜头全程 1→1.035 极缓推近 |
|
|
25
|
-
|
|
26
|
-
## 参数表
|
|
27
|
-
| 参数 | 典型值 | 调节手感 |
|
|
28
|
-
|------|--------|----------|
|
|
29
|
-
| 拆段粒度 | 4 字母 16 段(单线几何字 260×400/字,灯管线宽 30,圆端帽,两端各留 4% 电极缝) | 段太少悬念期短;太碎读作噪点。S 拆成两段反向弧各 3 段 |
|
|
30
|
-
| 乱序表 | 手工排:跨字母乱跳,"可读性钥匙段"(S 下脊 / H 中横 / P 碗底)压到最后 3 段 | 顺序点亮 = 没有悬念;钥匙段早出 = 提前泄底 |
|
|
31
|
-
| 点亮节奏 | 疏→密(9f→3f,`stagger(.., EASE.out)`)→ 屏息 14f → 三拍 7f/6f | 匀速等间隔没有张力;屏息 <8f 感觉不到,>20f 读作卡住 |
|
|
32
|
-
| 不可读期 | 前 13 段(约 60% 时长)读不出字 | QA 抽中段帧自问"能猜出来吗",能猜出就重排 |
|
|
33
|
-
| 半亮 → 满亮 | 悬念期 0.58,揭晓 1.0 + 涌起 1.25 | 悬念期太亮(>0.8)揭晓就没有"通电"的对比 |
|
|
34
|
-
| 落位脉冲 | scale 1.02 + 光的涌起 | 霓虹是挂在墙上的物件,大幅缩放会假;冲击交给光 |
|
|
35
|
-
| 墙面受光 | 环境光 = 0.12 + 0.5×已亮段占比 + 揭晓/涌起 | 灯越多墙越亮,物理上可信;常量墙光会让点亮失去分量 |
|
|
36
|
-
| 地面倒影 | 沿地面交线镜像、blur 5px、opacity 0.42、离地越远越淡 | 遮罩写在镜像前的本地坐标里,交线以上必须全透明 |
|
|
37
|
-
| 未亮段 | 条件不渲染(非 opacity 0) | 收尾真静止与"不泄底"的前提 |
|
|
38
|
-
## 已知坑
|
|
39
|
-
- demo 是霓虹灯牌版(aurora 暗场);换别的材质(LED 段码、发光描边)时起辉曲线与半亮值要重调
|
|
40
|
-
- 暗底上的辅助文字用亮灰——demo 首版顶部标题深灰压深底不可见(P1 自检抓到)
|
|
41
|
-
- 揭晓泛光别另画一团径向光斑——会在字中间形成一个脏亮点;让灯牌自己的宽泛光(形状就是字)涌起一次
|
|
42
|
-
- 倒影是整块灯牌渲染两遍(每遍两层 SVG 高斯模糊),单镜头渲染成本翻倍;性能吃紧时先砍倒影
|
|
43
|
-
- 字数上限:4–6 字母词最佳;长词不可读期难控制,段数爆炸
|
|
44
|
-
- 本卡吃"识别瞬间",标题必须是观众认识的词(产品名/SHIP/LIVE 类),
|
|
45
|
-
生造词没有"认出"可言
|
|
46
|
-
- 声音:逐段点亮配霓虹起辉的短促电流 tick(稀疏、音量阶梯递减),屏息段只留低频嗡声,落位帧一声 impact + 可接 riser 铺底
|
|
47
|
-
|
|
48
|
-
## 参考实现
|
|
49
|
-
demos/opening/stroke-segment-build/
|
|
50
|
-
(StrokeSegmentBuild.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: stroke-segment-build
|
|
3
|
+
一句话: 断笔成字——标题拆成十几段互不相连的笔画乱序逐段点亮,前 70% 不可读,末段落位瞬间语义"啪"地成立
|
|
4
|
+
适用: 开场吊悬念的产品名/大数字揭晓;一支片 ≤1 次;与 type-assembly/draw-svg-trace 分工:那些是"看着字被组装/描画",本卡是"意义延迟揭晓"
|
|
5
|
+
时长: 165f(5.5s;揭晓 f105 后 hold 2s)
|
|
6
|
+
能量: 低起中收(悬念型,落位帧是能量点)
|
|
7
|
+
标签: typography
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
《异形》片头判例:标题不是被画出来的,是"显影"出来的——拆成离散
|
|
12
|
+
笔画段乱序点亮,观众前 70% 时间只看到神秘碎段,最后几段落位的瞬间
|
|
13
|
+
突然读出是什么字。"认出的那一刻"就是钩子,钩子的强度取决于
|
|
14
|
+
不可读期撑多久、钥匙段压多晚。
|
|
15
|
+
|
|
16
|
+
## 动作阶段
|
|
17
|
+
| 阶段 | 帧段参考 | 内容 |
|
|
18
|
+
|------|------|------|
|
|
19
|
+
| 1 暗场 | f0–12 | 深紫墙 + 极淡墙面光静置(不是死黑) |
|
|
20
|
+
| 2 乱序点亮 | f12–72 | 前 13 段起点按 ease-out 分布(间隔 9f 越来越密到 3f);每段是 7f 霓虹起辉抖闪(亮—灭—亮—半亮—亮),之后以 0.58 亮度稳住 |
|
|
21
|
+
| 3 屏息 | f72–86 | 14f 不新增任何段,只有灯管电流的微弱嗡动——悬念最紧的一拍 |
|
|
22
|
+
| 4 钥匙段 | f86 / f93 / f99 | S 下脊 → H 中横 → P 碗底,三拍落下 |
|
|
23
|
+
| 5 揭晓 | f105 | 全部灯管 0.58→1、电流涌起冲到 1.25 再回落(灯牌自身宽泛光涌一次)、整字 scale 1→1.02、墙与地面被照亮 |
|
|
24
|
+
| 6 定格 | f113–165 | 副题升起后 hold,镜头全程 1→1.035 极缓推近 |
|
|
25
|
+
|
|
26
|
+
## 参数表
|
|
27
|
+
| 参数 | 典型值 | 调节手感 |
|
|
28
|
+
|------|--------|----------|
|
|
29
|
+
| 拆段粒度 | 4 字母 16 段(单线几何字 260×400/字,灯管线宽 30,圆端帽,两端各留 4% 电极缝) | 段太少悬念期短;太碎读作噪点。S 拆成两段反向弧各 3 段 |
|
|
30
|
+
| 乱序表 | 手工排:跨字母乱跳,"可读性钥匙段"(S 下脊 / H 中横 / P 碗底)压到最后 3 段 | 顺序点亮 = 没有悬念;钥匙段早出 = 提前泄底 |
|
|
31
|
+
| 点亮节奏 | 疏→密(9f→3f,`stagger(.., EASE.out)`)→ 屏息 14f → 三拍 7f/6f | 匀速等间隔没有张力;屏息 <8f 感觉不到,>20f 读作卡住 |
|
|
32
|
+
| 不可读期 | 前 13 段(约 60% 时长)读不出字 | QA 抽中段帧自问"能猜出来吗",能猜出就重排 |
|
|
33
|
+
| 半亮 → 满亮 | 悬念期 0.58,揭晓 1.0 + 涌起 1.25 | 悬念期太亮(>0.8)揭晓就没有"通电"的对比 |
|
|
34
|
+
| 落位脉冲 | scale 1.02 + 光的涌起 | 霓虹是挂在墙上的物件,大幅缩放会假;冲击交给光 |
|
|
35
|
+
| 墙面受光 | 环境光 = 0.12 + 0.5×已亮段占比 + 揭晓/涌起 | 灯越多墙越亮,物理上可信;常量墙光会让点亮失去分量 |
|
|
36
|
+
| 地面倒影 | 沿地面交线镜像、blur 5px、opacity 0.42、离地越远越淡 | 遮罩写在镜像前的本地坐标里,交线以上必须全透明 |
|
|
37
|
+
| 未亮段 | 条件不渲染(非 opacity 0) | 收尾真静止与"不泄底"的前提 |
|
|
38
|
+
## 已知坑
|
|
39
|
+
- demo 是霓虹灯牌版(aurora 暗场);换别的材质(LED 段码、发光描边)时起辉曲线与半亮值要重调
|
|
40
|
+
- 暗底上的辅助文字用亮灰——demo 首版顶部标题深灰压深底不可见(P1 自检抓到)
|
|
41
|
+
- 揭晓泛光别另画一团径向光斑——会在字中间形成一个脏亮点;让灯牌自己的宽泛光(形状就是字)涌起一次
|
|
42
|
+
- 倒影是整块灯牌渲染两遍(每遍两层 SVG 高斯模糊),单镜头渲染成本翻倍;性能吃紧时先砍倒影
|
|
43
|
+
- 字数上限:4–6 字母词最佳;长词不可读期难控制,段数爆炸
|
|
44
|
+
- 本卡吃"识别瞬间",标题必须是观众认识的词(产品名/SHIP/LIVE 类),
|
|
45
|
+
生造词没有"认出"可言
|
|
46
|
+
- 声音:逐段点亮配霓虹起辉的短促电流 tick(稀疏、音量阶梯递减),屏息段只留低频嗡声,落位帧一声 impact + 可接 riser 铺底
|
|
47
|
+
|
|
48
|
+
## 参考实现
|
|
49
|
+
demos/opening/stroke-segment-build/
|
|
50
|
+
(StrokeSegmentBuild.tsx)
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: text-as-mask
|
|
3
|
-
一句话: 文字视频遮罩——瓷白舞台上切出超粗大标题字,字内部透出缓慢平移的暗色实时产品面板,结尾吸一口气后字形指数冲入放大 46 倍溢出、内部画面接管全屏
|
|
4
|
-
适用: 品牌词/口号与产品画面二合一的开场或章节卡;字是门、产品在门里
|
|
5
|
-
时长: 165f(入场 18f + 字内漂移 78f + 吸气 8f + 冲入接管 24f + 落定/hold 37f)
|
|
6
|
-
能量: 中高(漂移段沉稳,接管段一次爆发)
|
|
7
|
-
标签: typography
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 意图
|
|
11
|
-
标题和产品画面抢屏幕是老问题——先字后画慢,画上压字挤。这一式让
|
|
12
|
-
两者同体:字形就是遮罩,产品只透过笔画显形,观众同时读到词和画面
|
|
13
|
-
质感;结尾字形胀开溢出画幅,产品自然接管全屏——"从品牌词走进产品"
|
|
14
|
-
一条镜头说完,兼任章节转场(与 transition-travel A 字腔穿越同族:
|
|
15
|
-
那边是镜头钻进字腔,这边是字形自己胀开,前者相机动、后者门动)。
|
|
16
|
-
|
|
17
|
-
## 动效核心
|
|
18
|
-
- 亮场舞台(porcelain 冷白 + 主光 + 暗角)+ SVG 白字黑底 data-URI 交给 CSS `mask-image`,遮罩层套住产品画面;
|
|
19
|
-
字形下垫一层同字形、带色相的模糊投影(同样走 data-URI 图片),字像被"挖"进舞台的窗
|
|
20
|
-
- 窗里的内容要有大块饱和色与亮线:demo 是 video-shotcraft 的暗色渲染看板(钴蓝→青流式面积图持续向左流、渲染帧数计数、渲染队列柱状图呼吸;眉题是 video-shotcraft 字标,副题 From one prompt to a finished launch film.),
|
|
21
|
-
漂移期面板上移 110px 让亮线正好穿过字的腰线、面积渐变铺满字的下半截——白卡/浅色 UI 透进白底字里会读成普通字
|
|
22
|
-
- 入场:遮罩从基线向上擦出(clip-path 底边收起,16f)+ 1.04→1 落定;眉题字距收拢、副题升起
|
|
23
|
-
- 字内漂移:产品层 scale 1.32 + translateX +150→-150(f18–96,bezier(0.3,0,0.7,1) 两端轻缓)——
|
|
24
|
-
字形静止、内容流动,"窗外有世界"的错觉即手法本体
|
|
25
|
-
- 吸气:f96–104 字 1→0.965(swift),眉题/副题 ease-in 退场——大动作前的预备
|
|
26
|
-
- 冲入 24f(f104–128):mask wrapper `scale(0.965→46)`,对数空间里按 t^1.8 插值
|
|
27
|
-
(`S = s0·(46/s0)^(t^1.8)`,每帧放大比例越来越大 = 越冲越快);
|
|
28
|
-
**transform-origin 必须钉在实心笔画内**(demo 取 L 竖笔中线 1236,546)——钉在字腔空洞里则放大后透出的是底色;
|
|
29
|
-
冲入同时 wrapper 平移 `(960−Ox, 540−Oy)·t`,把竖笔拉回画面中线(否则偏右的竖笔要到 30× 才盖住左缘)
|
|
30
|
-
- 内容层反向补偿:套一层 `scale(1/S) translate(−d)`(同一 origin)抵消 wrapper 的放大与平移,产品画面
|
|
31
|
-
不随遮罩几何畸变;面板同时 1.32→1、漂移归零(expo-out,f104–132,比冲入晚 4f 收敛 = 跟随)
|
|
32
|
-
- 接管保险:另叠一个共享同一 translate/scale 变换的无遮罩全屏层,只在竖笔已撑满全屏(t^1.8 ∈ [0.86, 0.95],S≈24×)
|
|
33
|
-
之后淡入——更早淡入会在亮底上叠出一层半透明灰纱
|
|
34
|
-
- 收尾:f132–165 全屏面板 hold,流式图仍缓慢流动(产品活着,不是死帧)
|
|
35
|
-
## 参数表
|
|
36
|
-
| 参数 | 典型值 | 调节手感 |
|
|
37
|
-
|------|--------|----------|
|
|
38
|
-
| 字号/字重 | 470px / 900(system-ui Black,字距 −22) | 笔画就是视口——细字重等于把产品塞进门缝;字宽占画幅 ~72% |
|
|
39
|
-
| 漂移速度 | ~3.8px/f(300px/78f) | 快了字内画面读不清;漂移方向选画面信息密的轴 |
|
|
40
|
-
| 吸气 | 8f,1→0.965 | 没有吸气的冲入读作"突然胀开";>0.94 读作字在缩小退场 |
|
|
41
|
-
| 放大倍率 | 46×(按竖笔宽/画幅比配:88px 竖笔需 ≥24× 才撑满) | 不足则接管帧还看得到字边残影 |
|
|
42
|
-
| 冲入曲线 | 对数空间 t^1.8,24f | 线性对数 = 匀速冲入;指数 >2.5 前半段几乎不动、最后 3f 猛胀 |
|
|
43
|
-
| 收尾 | 接管后 hold ≥30f | R1;接管完成帧产品应落在标准构图 |
|
|
44
|
-
## 已知坑
|
|
45
|
-
- demo 用的是为镜头设计的 video-shotcraft 渲染看板(Render throughput,侧栏是品牌标志)——实战换真实截图时先看笔画里透出的是不是大块色与亮线,
|
|
46
|
-
浅色页面要先调暗或换暗色主题,否则字读不出"窗"
|
|
47
|
-
- 别给字形做描边高光:system-ui 等可变字体的字形由重叠轮廓拼成,描边会画出 A 的横杠/顶角等内部轮廓线
|
|
48
|
-
- 字内透出的产品画面全程被特写盯着看——真实素材先过
|
|
49
|
-
审美准则 Q2 的高分辨率栅格化技法,低倍截图在笔画里糊成一片
|
|
50
|
-
- 换词/换字体后 origin 手推值必失效——渲后看放大方向,洞不对中就微调
|
|
51
|
-
origin(同 transition-travel A 字腔穿越的腔心漂移坑)
|
|
52
|
-
- 与 transition-travel A 字腔穿越同片不并用——同为"字里长出世界",
|
|
53
|
-
观众读作同一招使两次(P4)
|
|
54
|
-
- mask 层与内容层的 transform 必须分离驱动(wrapper 放大/内容反向补偿),
|
|
55
|
-
合在一层则产品跟着字形一起胀成 26 倍废片
|
|
56
|
-
|
|
57
|
-
## 参考实现
|
|
58
|
-
demos/opening/text-as-mask/
|
|
59
|
-
(TextAsMask.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: text-as-mask
|
|
3
|
+
一句话: 文字视频遮罩——瓷白舞台上切出超粗大标题字,字内部透出缓慢平移的暗色实时产品面板,结尾吸一口气后字形指数冲入放大 46 倍溢出、内部画面接管全屏
|
|
4
|
+
适用: 品牌词/口号与产品画面二合一的开场或章节卡;字是门、产品在门里
|
|
5
|
+
时长: 165f(入场 18f + 字内漂移 78f + 吸气 8f + 冲入接管 24f + 落定/hold 37f)
|
|
6
|
+
能量: 中高(漂移段沉稳,接管段一次爆发)
|
|
7
|
+
标签: typography
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
标题和产品画面抢屏幕是老问题——先字后画慢,画上压字挤。这一式让
|
|
12
|
+
两者同体:字形就是遮罩,产品只透过笔画显形,观众同时读到词和画面
|
|
13
|
+
质感;结尾字形胀开溢出画幅,产品自然接管全屏——"从品牌词走进产品"
|
|
14
|
+
一条镜头说完,兼任章节转场(与 transition-travel A 字腔穿越同族:
|
|
15
|
+
那边是镜头钻进字腔,这边是字形自己胀开,前者相机动、后者门动)。
|
|
16
|
+
|
|
17
|
+
## 动效核心
|
|
18
|
+
- 亮场舞台(porcelain 冷白 + 主光 + 暗角)+ SVG 白字黑底 data-URI 交给 CSS `mask-image`,遮罩层套住产品画面;
|
|
19
|
+
字形下垫一层同字形、带色相的模糊投影(同样走 data-URI 图片),字像被"挖"进舞台的窗
|
|
20
|
+
- 窗里的内容要有大块饱和色与亮线:demo 是 video-shotcraft 的暗色渲染看板(钴蓝→青流式面积图持续向左流、渲染帧数计数、渲染队列柱状图呼吸;眉题是 video-shotcraft 字标,副题 From one prompt to a finished launch film.),
|
|
21
|
+
漂移期面板上移 110px 让亮线正好穿过字的腰线、面积渐变铺满字的下半截——白卡/浅色 UI 透进白底字里会读成普通字
|
|
22
|
+
- 入场:遮罩从基线向上擦出(clip-path 底边收起,16f)+ 1.04→1 落定;眉题字距收拢、副题升起
|
|
23
|
+
- 字内漂移:产品层 scale 1.32 + translateX +150→-150(f18–96,bezier(0.3,0,0.7,1) 两端轻缓)——
|
|
24
|
+
字形静止、内容流动,"窗外有世界"的错觉即手法本体
|
|
25
|
+
- 吸气:f96–104 字 1→0.965(swift),眉题/副题 ease-in 退场——大动作前的预备
|
|
26
|
+
- 冲入 24f(f104–128):mask wrapper `scale(0.965→46)`,对数空间里按 t^1.8 插值
|
|
27
|
+
(`S = s0·(46/s0)^(t^1.8)`,每帧放大比例越来越大 = 越冲越快);
|
|
28
|
+
**transform-origin 必须钉在实心笔画内**(demo 取 L 竖笔中线 1236,546)——钉在字腔空洞里则放大后透出的是底色;
|
|
29
|
+
冲入同时 wrapper 平移 `(960−Ox, 540−Oy)·t`,把竖笔拉回画面中线(否则偏右的竖笔要到 30× 才盖住左缘)
|
|
30
|
+
- 内容层反向补偿:套一层 `scale(1/S) translate(−d)`(同一 origin)抵消 wrapper 的放大与平移,产品画面
|
|
31
|
+
不随遮罩几何畸变;面板同时 1.32→1、漂移归零(expo-out,f104–132,比冲入晚 4f 收敛 = 跟随)
|
|
32
|
+
- 接管保险:另叠一个共享同一 translate/scale 变换的无遮罩全屏层,只在竖笔已撑满全屏(t^1.8 ∈ [0.86, 0.95],S≈24×)
|
|
33
|
+
之后淡入——更早淡入会在亮底上叠出一层半透明灰纱
|
|
34
|
+
- 收尾:f132–165 全屏面板 hold,流式图仍缓慢流动(产品活着,不是死帧)
|
|
35
|
+
## 参数表
|
|
36
|
+
| 参数 | 典型值 | 调节手感 |
|
|
37
|
+
|------|--------|----------|
|
|
38
|
+
| 字号/字重 | 470px / 900(system-ui Black,字距 −22) | 笔画就是视口——细字重等于把产品塞进门缝;字宽占画幅 ~72% |
|
|
39
|
+
| 漂移速度 | ~3.8px/f(300px/78f) | 快了字内画面读不清;漂移方向选画面信息密的轴 |
|
|
40
|
+
| 吸气 | 8f,1→0.965 | 没有吸气的冲入读作"突然胀开";>0.94 读作字在缩小退场 |
|
|
41
|
+
| 放大倍率 | 46×(按竖笔宽/画幅比配:88px 竖笔需 ≥24× 才撑满) | 不足则接管帧还看得到字边残影 |
|
|
42
|
+
| 冲入曲线 | 对数空间 t^1.8,24f | 线性对数 = 匀速冲入;指数 >2.5 前半段几乎不动、最后 3f 猛胀 |
|
|
43
|
+
| 收尾 | 接管后 hold ≥30f | R1;接管完成帧产品应落在标准构图 |
|
|
44
|
+
## 已知坑
|
|
45
|
+
- demo 用的是为镜头设计的 video-shotcraft 渲染看板(Render throughput,侧栏是品牌标志)——实战换真实截图时先看笔画里透出的是不是大块色与亮线,
|
|
46
|
+
浅色页面要先调暗或换暗色主题,否则字读不出"窗"
|
|
47
|
+
- 别给字形做描边高光:system-ui 等可变字体的字形由重叠轮廓拼成,描边会画出 A 的横杠/顶角等内部轮廓线
|
|
48
|
+
- 字内透出的产品画面全程被特写盯着看——真实素材先过
|
|
49
|
+
审美准则 Q2 的高分辨率栅格化技法,低倍截图在笔画里糊成一片
|
|
50
|
+
- 换词/换字体后 origin 手推值必失效——渲后看放大方向,洞不对中就微调
|
|
51
|
+
origin(同 transition-travel A 字腔穿越的腔心漂移坑)
|
|
52
|
+
- 与 transition-travel A 字腔穿越同片不并用——同为"字里长出世界",
|
|
53
|
+
观众读作同一招使两次(P4)
|
|
54
|
+
- mask 层与内容层的 transform 必须分离驱动(wrapper 放大/内容反向补偿),
|
|
55
|
+
合在一层则产品跟着字形一起胀成 26 倍废片
|
|
56
|
+
|
|
57
|
+
## 参考实现
|
|
58
|
+
demos/opening/text-as-mask/
|
|
59
|
+
(TextAsMask.tsx)
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: grain-dissolve
|
|
3
|
-
一句话: 整行字爆裂成沸腾颗粒噪点并浮现斜纹选区框,噪点云急速凝聚成更大号发光短字标,位移衰减归零定格
|
|
4
|
-
适用: 收尾"XX. Now Live"式上线宣告;长句信息压缩成品牌短标的能量聚合拍
|
|
5
|
-
时长: 约 2.0s(60f@30fps;砂化 0.26–0.56s · 凝聚 1.2–1.42s · 凝固回落收尾)
|
|
6
|
-
能量: 中高(短促、一次性的能量脉冲,天然的 outro 卡点)
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 意图
|
|
10
|
-
把"一句话浓缩成一个词"拍成物理事件:句子先失稳沸腾成颗粒(信息解体),选区框暗示"正在选中提取",然后所有颗粒能量向中心坍缩成更大更亮的短字标——观众读到的是"这一切归结为它"。
|
|
11
|
-
|
|
12
|
-
## 动效核心
|
|
13
|
-
- 滤镜链是唯一引擎:`feTurbulence`(fractalNoise,baseFrequency 0.9→1.3)+ `feDisplacementMap`(scale 0→52)+ `feGaussianBlur`(0→1.1px),三者由同一条 `burst` 曲线(t=0.13–0.28,outCubic)驱动
|
|
14
|
-
- 噪点"沸腾"靠 `seed = floor(t*46)` 逐帧换种子——每帧一幅新噪声图,颗粒永不静止
|
|
15
|
-
- t=0.60–0.71 交叉淡化:整行字(26px)淡出、短字标(44px 粗体)淡入,两者共用同一滤镜——切换发生在最沸腾时,观众看不到换字
|
|
16
|
-
- t=0.68–0.90 `lock` 曲线把 displacement scale 和 blur 拉回 0,颗粒"凝固"成清晰字形
|
|
17
|
-
- 白辉光三段式:砂化期 0.3 弱光 → 凝聚冲高 0.7 → t=0.88 后回落 0.45,滤镜链内"紧光 + 宽光"两层冷白 bloom(feGaussianBlur → feColorMatrix → feMerge,半径约 4–33px)同步呼吸;SVG 按原生 1920×1080 栅格化,颗粒才细
|
|
18
|
-
- 斜纹选区框(45° 线阵 + 四角像素棋盘手柄)随 burst 浮现、t=0.55–0.64 撤掉——在凝聚前退场,不抢主体
|
|
19
|
-
|
|
20
|
-
## 参数表
|
|
21
|
-
| 参数 | 典型值 | 调节手感 |
|
|
22
|
-
|------|--------|----------|
|
|
23
|
-
| displacement scale | 峰值 52 | <30 只是"轻微毛边";>80 颗粒散到认不出轮廓,"隐约可辨"是砂化质感的底线 |
|
|
24
|
-
| baseFrequency | 0.9 → +0.4 | 越高颗粒越细;低于 0.5 变成大块扭曲不是"砂" |
|
|
25
|
-
| seed 换帧率 | floor(t*46),2s 内 46 次 | 降低会看出噪声图重复;保持 ≥20 次/秒的换图率 |
|
|
26
|
-
| 砂化窗口 | 0.13–0.28(outCubic) | 前 0.13 的干净字停留是"失稳前的常态",砍掉则没有对比 |
|
|
27
|
-
| 凝聚交叉 | 0.60–0.71(inOutCubic) | 必须落在最沸腾段内完成换字;提前会穿帮看到两行字叠影 |
|
|
28
|
-
| 辉光包络 | burst·0.3 + cond·0.7 − settle·0.45 | 凝聚冲高是卡点位,压 BGM 重音;回落别到 0,留柔光"余温" |
|
|
29
|
-
|
|
30
|
-
## 已知坑
|
|
31
|
-
- demo 的文案是 `{ video-shotcraft. Now Live }` → 凝聚成 `video-shotcraft` 字标(全小写);换项目短标时两行 `<text>` 都要改:整行句式 `{ XX. Now Live }` 与短标 XX 必须指同一对象,否则叙事断裂
|
|
32
|
-
- 短标变长(>6 字符)需同步缩字号或加宽选区框 bw,否则凝聚后超出框位视觉重心偏移——demo 的 15 字符品牌名把整行字从 33px 缩到 26px、短标从 54px 缩到 44px,游离砂粒的落点范围同步放宽到字标字面
|
|
33
|
-
- `feDisplacementMap` 在 Safari 上性能较差,这张卡是 2s 短拍可接受;拉长时长需实测帧率
|
|
34
|
-
- 选区框撤场(0.55–0.64)必须早于凝聚完成(0.71)——框留到凝固后会读作"还没选完",语义反了
|
|
35
|
-
|
|
36
|
-
## 参考实现
|
|
37
|
-
demos/outro/grain-dissolve/
|
|
38
|
-
(GrainDissolve.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: grain-dissolve
|
|
3
|
+
一句话: 整行字爆裂成沸腾颗粒噪点并浮现斜纹选区框,噪点云急速凝聚成更大号发光短字标,位移衰减归零定格
|
|
4
|
+
适用: 收尾"XX. Now Live"式上线宣告;长句信息压缩成品牌短标的能量聚合拍
|
|
5
|
+
时长: 约 2.0s(60f@30fps;砂化 0.26–0.56s · 凝聚 1.2–1.42s · 凝固回落收尾)
|
|
6
|
+
能量: 中高(短促、一次性的能量脉冲,天然的 outro 卡点)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
把"一句话浓缩成一个词"拍成物理事件:句子先失稳沸腾成颗粒(信息解体),选区框暗示"正在选中提取",然后所有颗粒能量向中心坍缩成更大更亮的短字标——观众读到的是"这一切归结为它"。
|
|
11
|
+
|
|
12
|
+
## 动效核心
|
|
13
|
+
- 滤镜链是唯一引擎:`feTurbulence`(fractalNoise,baseFrequency 0.9→1.3)+ `feDisplacementMap`(scale 0→52)+ `feGaussianBlur`(0→1.1px),三者由同一条 `burst` 曲线(t=0.13–0.28,outCubic)驱动
|
|
14
|
+
- 噪点"沸腾"靠 `seed = floor(t*46)` 逐帧换种子——每帧一幅新噪声图,颗粒永不静止
|
|
15
|
+
- t=0.60–0.71 交叉淡化:整行字(26px)淡出、短字标(44px 粗体)淡入,两者共用同一滤镜——切换发生在最沸腾时,观众看不到换字
|
|
16
|
+
- t=0.68–0.90 `lock` 曲线把 displacement scale 和 blur 拉回 0,颗粒"凝固"成清晰字形
|
|
17
|
+
- 白辉光三段式:砂化期 0.3 弱光 → 凝聚冲高 0.7 → t=0.88 后回落 0.45,滤镜链内"紧光 + 宽光"两层冷白 bloom(feGaussianBlur → feColorMatrix → feMerge,半径约 4–33px)同步呼吸;SVG 按原生 1920×1080 栅格化,颗粒才细
|
|
18
|
+
- 斜纹选区框(45° 线阵 + 四角像素棋盘手柄)随 burst 浮现、t=0.55–0.64 撤掉——在凝聚前退场,不抢主体
|
|
19
|
+
|
|
20
|
+
## 参数表
|
|
21
|
+
| 参数 | 典型值 | 调节手感 |
|
|
22
|
+
|------|--------|----------|
|
|
23
|
+
| displacement scale | 峰值 52 | <30 只是"轻微毛边";>80 颗粒散到认不出轮廓,"隐约可辨"是砂化质感的底线 |
|
|
24
|
+
| baseFrequency | 0.9 → +0.4 | 越高颗粒越细;低于 0.5 变成大块扭曲不是"砂" |
|
|
25
|
+
| seed 换帧率 | floor(t*46),2s 内 46 次 | 降低会看出噪声图重复;保持 ≥20 次/秒的换图率 |
|
|
26
|
+
| 砂化窗口 | 0.13–0.28(outCubic) | 前 0.13 的干净字停留是"失稳前的常态",砍掉则没有对比 |
|
|
27
|
+
| 凝聚交叉 | 0.60–0.71(inOutCubic) | 必须落在最沸腾段内完成换字;提前会穿帮看到两行字叠影 |
|
|
28
|
+
| 辉光包络 | burst·0.3 + cond·0.7 − settle·0.45 | 凝聚冲高是卡点位,压 BGM 重音;回落别到 0,留柔光"余温" |
|
|
29
|
+
|
|
30
|
+
## 已知坑
|
|
31
|
+
- demo 的文案是 `{ video-shotcraft. Now Live }` → 凝聚成 `video-shotcraft` 字标(全小写);换项目短标时两行 `<text>` 都要改:整行句式 `{ XX. Now Live }` 与短标 XX 必须指同一对象,否则叙事断裂
|
|
32
|
+
- 短标变长(>6 字符)需同步缩字号或加宽选区框 bw,否则凝聚后超出框位视觉重心偏移——demo 的 15 字符品牌名把整行字从 33px 缩到 26px、短标从 54px 缩到 44px,游离砂粒的落点范围同步放宽到字标字面
|
|
33
|
+
- `feDisplacementMap` 在 Safari 上性能较差,这张卡是 2s 短拍可接受;拉长时长需实测帧率
|
|
34
|
+
- 选区框撤场(0.55–0.64)必须早于凝聚完成(0.71)——框留到凝固后会读作"还没选完",语义反了
|
|
35
|
+
|
|
36
|
+
## 参考实现
|
|
37
|
+
demos/outro/grain-dissolve/
|
|
38
|
+
(GrainDissolve.tsx)
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: logo-shrink-wordmark-lockup
|
|
3
|
-
一句话: 霓虹切口大环快速收束成中央实心小白 O、过冲刹车时换成 video-shotcraft 标志,图标左移让位,字标字母逐个滑入完成 lockup,强调色标语收尾
|
|
4
|
-
适用: 片尾品牌定妆:从满屏图形能量收束到"图标+字标+标语"的标准 lockup
|
|
5
|
-
时长: 约 4.4s(132f@30fps;收束 0.1–1.2s · 让位 1.5–2.1s · 字母 2–2.7s · 标语 3.2–3.7s)
|
|
6
|
-
能量: 中(收束段有冲击力,整体是沉稳的落定节奏)
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 意图
|
|
10
|
-
片尾的"盖章"动作:满屏的霓虹大环携能量坍缩成一枚小图标,愈合缺口、转为纯白(从演出态到标准态),然后按品牌 lockup 的规范一步步落位——图标让位、字标进场、标语押尾。观众看到的是品牌从动态里"站定"。
|
|
11
|
-
|
|
12
|
-
## 动效核心
|
|
13
|
-
- 收束主曲线:scale 5.4→1(t=0.02–0.28,inOutCubic),t=0.26–0.37 叠 `sin(π)*0.06` 的过冲刹车——到位瞬间胀 6% 再回落,"急停带惯性"
|
|
14
|
-
- 缺口愈合与变色和收束同轨(t=0.10–0.28):霓虹辉光层淡出、描边从 #dfe9ff 过半切 #fff、实心白 O 淡入——三层交叉在缩小过程中完成,落位时已是干净白标
|
|
15
|
-
- t=0.24–0.32 白 O 交叉换成 video-shotcraft「镜刻」标志(反白版,与刹车、冲击波同拍;换标时已缩到最终尺寸);环在内层旋转,标志所在的外层只缩放不旋转——斜切角度始终不变
|
|
16
|
-
- t=0.34–0.47 图标整体左移让位(inOutCubic,−90.5px = 整组 lockup 宽的一半减半个图标),为字标腾出中轴右侧
|
|
17
|
-
- 字标 `video-shotcraft`(15 字符,22px / 700,全小写)按 `0.46 + i*(0.24/15)` stagger 滑入:opacity 0→1 + translateX 8px→0,各 0.10 时长 outCubic
|
|
18
|
-
- 标语是品牌短句 `FRAME MOTION. CRAFT THE SHOT.`(强调色 `ACCENT`,12.5px 宽字距)t=0.72–0.84 整行淡入,不逐字——层级低于字标一档
|
|
19
|
-
|
|
20
|
-
## 参数表
|
|
21
|
-
| 参数 | 典型值 | 调节手感 |
|
|
22
|
-
|------|--------|----------|
|
|
23
|
-
| 收束幅度 | scale 5.4→1 | 起始倍率决定"从多满收到多小";<3 冲击力不足,>7 初始态糊出画 |
|
|
24
|
-
| 刹车过冲 | +6%,sin 包络 0.26–0.37 | 砍掉读作硬冻结;>10% 变果冻 |
|
|
25
|
-
| 愈合窗口 | 0.10–0.28(与收束同步) | 愈合必须在落位前完成——落位后还在变色读作"没准备好" |
|
|
26
|
-
| 左移让位 | −90.5px(由 `WORD_W`/`GAP`/`ICON` 推出),0.34–0.47 | 与字母首入(0.46)几乎无缝衔接,拉开间隔会有"空等"感 |
|
|
27
|
-
| 字母 stagger | `(0.7-0.46)/n`(15 字符 = 0.016/字),各 0.10 时长 | 5 字母的短词可放宽到 0.035/字;字多时按 `(0.7-0.46)/n` 反算间隔保证 0.7 前全部起跑 |
|
|
28
|
-
| 标语入场 | 0.72–0.84 整行淡入 | 有意不逐字:标语是注脚不是主角;`ACCENT` 常量换项目色 |
|
|
29
|
-
|
|
30
|
-
## 已知坑
|
|
31
|
-
- `WORDMARK` = `BRAND.name`,标语 = `PITCH.en.motto`;换品牌词时字母 stagger 节奏依赖字数(已按字数自动反算),标语字符数变化时同步调字距,否则宽字距排版会溢出或过疏
|
|
32
|
-
- 图标是"演出态→标准态"两层结构:SVG 双弧切口环(辉光/彩色)愈合成白 O,刹车时再交叉换成 video-shotcraft 标志(纯净态,不加辉光);换别的 logo 时同样别让 logo 跟着环一起旋转
|
|
33
|
-
- 左移量与字标宽度耦合:`WORD_W` 是字标行实测宽(换字体/字号要重新量),`SHIFT` 与字母行左缘 `ROW_LEFT` 都由它推出,让 lockup 整体在画面居中
|
|
34
|
-
- 收尾后无循环回位设计,作 outro 最后一镜使用;需要循环时在 t=1 后接 1s 静帧
|
|
35
|
-
|
|
36
|
-
## 参考实现
|
|
37
|
-
demos/outro/logo-shrink-wordmark-lockup/
|
|
38
|
-
(LogoShrinkWordmarkLockup.tsx)
|
|
1
|
+
---
|
|
2
|
+
name: logo-shrink-wordmark-lockup
|
|
3
|
+
一句话: 霓虹切口大环快速收束成中央实心小白 O、过冲刹车时换成 video-shotcraft 标志,图标左移让位,字标字母逐个滑入完成 lockup,强调色标语收尾
|
|
4
|
+
适用: 片尾品牌定妆:从满屏图形能量收束到"图标+字标+标语"的标准 lockup
|
|
5
|
+
时长: 约 4.4s(132f@30fps;收束 0.1–1.2s · 让位 1.5–2.1s · 字母 2–2.7s · 标语 3.2–3.7s)
|
|
6
|
+
能量: 中(收束段有冲击力,整体是沉稳的落定节奏)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
片尾的"盖章"动作:满屏的霓虹大环携能量坍缩成一枚小图标,愈合缺口、转为纯白(从演出态到标准态),然后按品牌 lockup 的规范一步步落位——图标让位、字标进场、标语押尾。观众看到的是品牌从动态里"站定"。
|
|
11
|
+
|
|
12
|
+
## 动效核心
|
|
13
|
+
- 收束主曲线:scale 5.4→1(t=0.02–0.28,inOutCubic),t=0.26–0.37 叠 `sin(π)*0.06` 的过冲刹车——到位瞬间胀 6% 再回落,"急停带惯性"
|
|
14
|
+
- 缺口愈合与变色和收束同轨(t=0.10–0.28):霓虹辉光层淡出、描边从 #dfe9ff 过半切 #fff、实心白 O 淡入——三层交叉在缩小过程中完成,落位时已是干净白标
|
|
15
|
+
- t=0.24–0.32 白 O 交叉换成 video-shotcraft「镜刻」标志(反白版,与刹车、冲击波同拍;换标时已缩到最终尺寸);环在内层旋转,标志所在的外层只缩放不旋转——斜切角度始终不变
|
|
16
|
+
- t=0.34–0.47 图标整体左移让位(inOutCubic,−90.5px = 整组 lockup 宽的一半减半个图标),为字标腾出中轴右侧
|
|
17
|
+
- 字标 `video-shotcraft`(15 字符,22px / 700,全小写)按 `0.46 + i*(0.24/15)` stagger 滑入:opacity 0→1 + translateX 8px→0,各 0.10 时长 outCubic
|
|
18
|
+
- 标语是品牌短句 `FRAME MOTION. CRAFT THE SHOT.`(强调色 `ACCENT`,12.5px 宽字距)t=0.72–0.84 整行淡入,不逐字——层级低于字标一档
|
|
19
|
+
|
|
20
|
+
## 参数表
|
|
21
|
+
| 参数 | 典型值 | 调节手感 |
|
|
22
|
+
|------|--------|----------|
|
|
23
|
+
| 收束幅度 | scale 5.4→1 | 起始倍率决定"从多满收到多小";<3 冲击力不足,>7 初始态糊出画 |
|
|
24
|
+
| 刹车过冲 | +6%,sin 包络 0.26–0.37 | 砍掉读作硬冻结;>10% 变果冻 |
|
|
25
|
+
| 愈合窗口 | 0.10–0.28(与收束同步) | 愈合必须在落位前完成——落位后还在变色读作"没准备好" |
|
|
26
|
+
| 左移让位 | −90.5px(由 `WORD_W`/`GAP`/`ICON` 推出),0.34–0.47 | 与字母首入(0.46)几乎无缝衔接,拉开间隔会有"空等"感 |
|
|
27
|
+
| 字母 stagger | `(0.7-0.46)/n`(15 字符 = 0.016/字),各 0.10 时长 | 5 字母的短词可放宽到 0.035/字;字多时按 `(0.7-0.46)/n` 反算间隔保证 0.7 前全部起跑 |
|
|
28
|
+
| 标语入场 | 0.72–0.84 整行淡入 | 有意不逐字:标语是注脚不是主角;`ACCENT` 常量换项目色 |
|
|
29
|
+
|
|
30
|
+
## 已知坑
|
|
31
|
+
- `WORDMARK` = `BRAND.name`,标语 = `PITCH.en.motto`;换品牌词时字母 stagger 节奏依赖字数(已按字数自动反算),标语字符数变化时同步调字距,否则宽字距排版会溢出或过疏
|
|
32
|
+
- 图标是"演出态→标准态"两层结构:SVG 双弧切口环(辉光/彩色)愈合成白 O,刹车时再交叉换成 video-shotcraft 标志(纯净态,不加辉光);换别的 logo 时同样别让 logo 跟着环一起旋转
|
|
33
|
+
- 左移量与字标宽度耦合:`WORD_W` 是字标行实测宽(换字体/字号要重新量),`SHIFT` 与字母行左缘 `ROW_LEFT` 都由它推出,让 lockup 整体在画面居中
|
|
34
|
+
- 收尾后无循环回位设计,作 outro 最后一镜使用;需要循环时在 t=1 后接 1s 静帧
|
|
35
|
+
|
|
36
|
+
## 参考实现
|
|
37
|
+
demos/outro/logo-shrink-wordmark-lockup/
|
|
38
|
+
(LogoShrinkWordmarkLockup.tsx)
|