dsh-drawai 0.3.4 → 0.4.0
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/LICENSE +4142 -0
- package/README.md +43 -10
- package/lib/audio-media.js +147 -0
- package/lib/audio-service.js +66 -0
- package/lib/canvas-format.js +134 -0
- package/lib/client.js +5075 -181
- package/lib/comfyui-default-workflow.mjs +1825 -0
- package/lib/comfyui-workflow.mjs +426 -0
- package/lib/document-commands.js +12 -0
- package/lib/document-core.js +29 -0
- package/lib/drawing-tasks.js +26 -0
- package/lib/imagegen.mjs +596 -0
- package/lib/index.js +1758 -129
- package/lib/media.js +26 -13
- package/lib/mgstyle-core.js +75 -0
- package/lib/motion/apply.js +180 -0
- package/lib/motion/asset-pack-lock.js +10 -0
- package/lib/motion/asset-pack.js +335 -0
- package/lib/motion/assets.js +290 -0
- package/lib/motion/audio.js +103 -0
- package/lib/motion/audiolevel.js +63 -0
- package/lib/motion/audiomix.js +144 -0
- package/lib/motion/beats.js +337 -0
- package/lib/motion/builtin-assets.js +62 -0
- package/lib/motion/canvas-spec.js +442 -0
- package/lib/motion/capture.js +95 -0
- package/lib/motion/cards.js +80 -0
- package/lib/motion/collect.js +447 -0
- package/lib/motion/delivery.js +112 -0
- package/lib/motion/edge-speech.py +90 -0
- package/lib/motion/entry.jsx +73 -0
- package/lib/motion/export.js +200 -0
- package/lib/motion/ffmpeg.js +42 -0
- package/lib/motion/fonts.js +71 -0
- package/lib/motion/jobs.js +113 -0
- package/lib/motion/json.js +4 -0
- package/lib/motion/media-catalog.js +59 -0
- package/lib/motion/mgstyles/BRIEF-TEMPLATE.md +63 -0
- package/lib/motion/mgstyles/briefs/01-flat-vector.md +104 -0
- package/lib/motion/mgstyles/briefs/02-line-art.md +97 -0
- package/lib/motion/mgstyles/briefs/03-isometric.md +108 -0
- package/lib/motion/mgstyles/briefs/05-cel-boil.md +145 -0
- package/lib/motion/mgstyles/briefs/06-collage.md +149 -0
- package/lib/motion/mgstyles/briefs/07-liquid.md +106 -0
- package/lib/motion/mgstyles/briefs/08-morph.md +111 -0
- package/lib/motion/mgstyles/briefs/09-bauhaus.md +150 -0
- package/lib/motion/mgstyles/briefs/10-synthwave.md +151 -0
- package/lib/motion/mgstyles/briefs/12-aurora-glass.md +147 -0
- package/lib/motion/mgstyles/briefs/18-hanazi.md +140 -0
- package/lib/motion/mgstyles/briefs/19-paperclip.md +156 -0
- package/lib/motion/mgstyles/briefs/20-pixel.md +118 -0
- package/lib/motion/mgstyles/briefs/22-hud.md +118 -0
- package/lib/motion/mgstyles/catalog.d/01-flat-vector.json +34 -0
- package/lib/motion/mgstyles/catalog.d/02-line-art.json +34 -0
- package/lib/motion/mgstyles/catalog.d/03-isometric.json +35 -0
- package/lib/motion/mgstyles/catalog.d/05-cel-boil.json +28 -0
- package/lib/motion/mgstyles/catalog.d/06-collage.json +28 -0
- package/lib/motion/mgstyles/catalog.d/07-liquid.json +28 -0
- package/lib/motion/mgstyles/catalog.d/08-morph.json +28 -0
- package/lib/motion/mgstyles/catalog.d/09-bauhaus.json +28 -0
- package/lib/motion/mgstyles/catalog.d/10-synthwave.json +28 -0
- package/lib/motion/mgstyles/catalog.d/12-aurora-glass.json +28 -0
- package/lib/motion/mgstyles/catalog.d/18-hanazi.json +28 -0
- package/lib/motion/mgstyles/catalog.d/19-paperclip.json +28 -0
- package/lib/motion/mgstyles/catalog.d/20-pixel.json +28 -0
- package/lib/motion/mgstyles/catalog.d/22-hud.json +28 -0
- package/lib/motion/mgstyles/catalog.json +1356 -0
- package/lib/motion/mgstyles/upstream/README.md +147 -0
- package/lib/motion/mgstyles/upstream/README.zh-CN.md +147 -0
- package/lib/motion/mgstyles/upstream/demos/01-flat-vector/cues.json +1 -0
- package/lib/motion/mgstyles/upstream/demos/01-flat-vector/index.html +712 -0
- package/lib/motion/mgstyles/upstream/demos/02-line-art/cues.json +331 -0
- package/lib/motion/mgstyles/upstream/demos/02-line-art/film.js +676 -0
- package/lib/motion/mgstyles/upstream/demos/02-line-art/index.html +18 -0
- package/lib/motion/mgstyles/upstream/demos/02-line-art/tools/dump_timing.mjs +26 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/cues.json +109 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/index.html +25 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/anim.js +82 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/main.js +219 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/night5.js +180 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/render.js +202 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/title.js +167 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/title5.js +294 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/ui.js +141 -0
- package/lib/motion/mgstyles/upstream/demos/03-isometric/js/world.js +1399 -0
- package/lib/motion/mgstyles/upstream/demos/05-cel-boil/cues.json +157 -0
- package/lib/motion/mgstyles/upstream/demos/05-cel-boil/index.html +34 -0
- package/lib/motion/mgstyles/upstream/demos/05-cel-boil/js/engine.js +326 -0
- package/lib/motion/mgstyles/upstream/demos/05-cel-boil/js/scene.js +2036 -0
- package/lib/motion/mgstyles/upstream/demos/06-collage/assets/gen/layout.json +157 -0
- package/lib/motion/mgstyles/upstream/demos/06-collage/cues.json +80 -0
- package/lib/motion/mgstyles/upstream/demos/06-collage/index.html +889 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/cues.json +100 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/index.html +108 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/engine.js +153 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/links.js +64 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/lookdev.js +46 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/scene.js +963 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/shaders.js +647 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/textsdf.js +114 -0
- package/lib/motion/mgstyles/upstream/demos/07-liquid/js/type.js +50 -0
- package/lib/motion/mgstyles/upstream/demos/08-morph/cues.json +131 -0
- package/lib/motion/mgstyles/upstream/demos/08-morph/glyphs.json +1 -0
- package/lib/motion/mgstyles/upstream/demos/08-morph/index.html +901 -0
- package/lib/motion/mgstyles/upstream/demos/09-bauhaus/cues.json +270 -0
- package/lib/motion/mgstyles/upstream/demos/09-bauhaus/film.js +697 -0
- package/lib/motion/mgstyles/upstream/demos/09-bauhaus/index.html +12 -0
- package/lib/motion/mgstyles/upstream/demos/10-synthwave/cues.json +44 -0
- package/lib/motion/mgstyles/upstream/demos/10-synthwave/index.html +1028 -0
- package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/cues.json +67 -0
- package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/index.html +16 -0
- package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/main.js +967 -0
- package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/shaders.js +468 -0
- package/lib/motion/mgstyles/upstream/demos/18-hanazi/cues.json +117 -0
- package/lib/motion/mgstyles/upstream/demos/18-hanazi/index.html +541 -0
- package/lib/motion/mgstyles/upstream/demos/19-paperclip/assets/countries-110m.json +1 -0
- package/lib/motion/mgstyles/upstream/demos/19-paperclip/assets/stickers/meta.json +34 -0
- package/lib/motion/mgstyles/upstream/demos/19-paperclip/cues.json +285 -0
- package/lib/motion/mgstyles/upstream/demos/19-paperclip/index.html +599 -0
- package/lib/motion/mgstyles/upstream/demos/20-pixel/cues.json +42 -0
- package/lib/motion/mgstyles/upstream/demos/20-pixel/film.js +914 -0
- package/lib/motion/mgstyles/upstream/demos/20-pixel/index.html +18 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/cues.json +108 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/index.html +125 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/js/holo.js +275 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/js/hud.js +855 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/js/post.js +150 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/js/util.js +65 -0
- package/lib/motion/mgstyles/upstream/demos/22-hud/js/v5.js +142 -0
- package/lib/motion/mgstyles/upstream/harness/render.mjs +319 -0
- package/lib/motion/mgstyles/upstream/manifest.json +269 -0
- package/lib/motion/mgstyles/upstream/prompts/01-flat-vector.md +98 -0
- package/lib/motion/mgstyles/upstream/prompts/02-line-art.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/03-isometric.md +97 -0
- package/lib/motion/mgstyles/upstream/prompts/05-cel-boil.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/06-collage.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/07-liquid.md +98 -0
- package/lib/motion/mgstyles/upstream/prompts/08-morph.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/09-bauhaus.md +96 -0
- package/lib/motion/mgstyles/upstream/prompts/10-synthwave.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/12-aurora-glass.md +96 -0
- package/lib/motion/mgstyles/upstream/prompts/18-hanazi.md +95 -0
- package/lib/motion/mgstyles/upstream/prompts/19-paperclip.md +96 -0
- package/lib/motion/mgstyles/upstream/prompts/20-pixel.md +96 -0
- package/lib/motion/mgstyles/upstream/prompts/22-hud.md +95 -0
- package/lib/motion/mgstyles/upstream/rubric.md +51 -0
- package/lib/motion/mgstyles/upstream/template.md +36 -0
- package/lib/motion/pixelqa.js +198 -0
- package/lib/motion/preview.js +95 -0
- package/lib/motion/project.js +395 -0
- package/lib/motion/qa.js +290 -0
- package/lib/motion/reference-media.jsx +10 -0
- package/lib/motion/render-settings.js +112 -0
- package/lib/motion/render.js +159 -0
- package/lib/motion/scene-kit.js +183 -0
- package/lib/motion/sfx.js +232 -0
- package/lib/motion/shotcraft/ClipCard.tsx +204 -0
- package/lib/motion/shotcraft/catalog.json +2461 -0
- package/lib/motion/shotcraft/upstream/SKILL.md +286 -0
- package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -0
- package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -0
- package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -0
- package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -0
- package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -0
- package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -0
- package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -0
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -0
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -0
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -0
- package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/__pycache__/sfx-source.cpython-313.pyc +0 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -0
- package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -0
- package/lib/motion/shotcraft/upstream/demos/README.md +120 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -0
- package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -0
- package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +389 -0
- package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -0
- package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -0
- package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -0
- package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -0
- package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -0
- package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -0
- package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -0
- package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -0
- package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -0
- package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -0
- package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -0
- package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -0
- package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -0
- package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -0
- package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -0
- package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -0
- package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -0
- package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -0
- package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -0
- package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -0
- package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -0
- package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -0
- package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -0
- package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -0
- package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -0
- package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -0
- package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -0
- package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -0
- package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -0
- package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -0
- package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -0
- package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -0
- package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -0
- package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -0
- package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -0
- package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -0
- package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -0
- package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -0
- package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -0
- package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -0
- package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -0
- package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -0
- package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -0
- package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -0
- package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -0
- package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -0
- package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -0
- package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -0
- package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -0
- package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -0
- package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -0
- package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -0
- package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -0
- package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -0
- package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -0
- package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -0
- package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -0
- package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -0
- package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -0
- package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -0
- package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -0
- package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -0
- package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -0
- package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -0
- package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -0
- package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -0
- package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -0
- package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -0
- package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -0
- package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -0
- package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -0
- package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -0
- package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -0
- package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -0
- package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -0
- package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -0
- package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -0
- package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -0
- package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -0
- package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -0
- package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -0
- package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -0
- package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -0
- package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -0
- package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -0
- package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -0
- package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -0
- package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -0
- package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -0
- package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -0
- package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -0
- package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -0
- package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -0
- package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -0
- package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -0
- package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -0
- package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -0
- package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -0
- package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -0
- package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -0
- package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -0
- package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -0
- package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -0
- package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -0
- package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -0
- package/lib/motion/shotcraft/upstream/manifest.json +2715 -0
- package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -0
- package/lib/motion/shotcraft/upstream/references/final-review.md +121 -0
- package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -0
- package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -0
- package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -0
- package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -0
- package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -0
- package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -0
- package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -0
- package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -0
- package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -0
- package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -0
- package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -0
- package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -0
- package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -0
- package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -0
- package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -0
- package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -0
- package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -0
- package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -0
- package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -0
- package/lib/motion/shotcraft/upstream/references/workbench.md +157 -0
- package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -0
- package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -0
- package/lib/motion/shotcraft/upstream/template/package.json +20 -0
- package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -0
- package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -0
- package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +389 -0
- package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -0
- package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -0
- package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -0
- package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -0
- package/lib/motion/spec.js +113 -0
- package/lib/motion/style-engine.js +153 -0
- package/lib/motion/style-frames.js +268 -0
- package/lib/motion/sync.js +214 -0
- package/lib/motion/theme.js +121 -0
- package/lib/motion/voice.js +417 -0
- package/lib/motion-agent-files.js +82 -0
- package/lib/motion-agent-protocol.js +66 -0
- package/lib/motion-agent-tools.js +196 -0
- package/lib/motion-agent.js +171 -0
- package/lib/motion-capture.js +92 -0
- package/lib/motion-core.js +238 -0
- package/lib/motion-film-review.js +71 -0
- package/lib/motion-library.js +210 -0
- package/lib/motion-planner.js +254 -0
- package/lib/motion-project.js +80 -0
- package/lib/motion-render-worker.js +145 -0
- package/lib/motion-session.js +32 -0
- package/lib/motion-source.js +49 -0
- package/lib/motion-tasks.js +452 -0
- package/lib/motion-vision.js +43 -0
- package/lib/mxfile.js +27 -7
- package/lib/routing/node-runtime.js +14 -0
- package/lib/routing/router.js +211 -0
- package/lib/routing/vendor/README.md +96 -0
- package/lib/routing/vendor/libavoid-routing.js +753 -0
- package/lib/routing/vendor/libavoid.min.js +59 -0
- package/lib/shotcard-core.js +39 -0
- package/lib/shotcard-reference.js +56 -0
- package/lib/style-kernel.js +37 -3
- package/lib/task-patches.js +26 -2
- package/lib/video-export.js +17 -2
- package/package.json +29 -4
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: letterspace-materialize
|
|
3
|
+
一句话: 大字距字标全字符并行连续描画结晶——所有字母同帧起笔、笔画像手写一样连续生长、同帧齐收成词;氛围底景上的品牌字标显影
|
|
4
|
+
适用: 片尾/片头品牌字标登场(大字距细骨架字标;demo 为 video-shotcraft 全小写);章节题字;needs 静谧/高级感的收束帧
|
|
5
|
+
时长: 静置 ~15f + 描画 ~50f + 终态静置 ≥30f;全段 3–4s
|
|
6
|
+
能量: 低(静谧仪式感,一次呼吸完成)
|
|
7
|
+
标签: typography、outro
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
字标不是淡入也不是打字机,而是"结晶":全部字母的笔画同时
|
|
12
|
+
开始连续生长,像一只看不见的手同时写所有字母,同一瞬间齐收
|
|
13
|
+
成词。两个命门:**连续**(笔画必须是连续画出的过程,不许遮罩
|
|
14
|
+
分段——先半截再另半截会被读穿;任何中间帧都该像"写到一半");
|
|
15
|
+
**同步**(所有字母同帧起笔、同帧完成——逐字错峰是打字机语义,
|
|
16
|
+
这里是整词一体的仪式感)。
|
|
17
|
+
|
|
18
|
+
## 动效核心
|
|
19
|
+
- 每个字符用骨架笔画 SVG path(单线条字形),pathLength 归一 +
|
|
20
|
+
strokeDashoffset 从 1→0 连续描画
|
|
21
|
+
- 全字符共享同一进度 p:同帧起笔、pathLength 归一保证不同笔画
|
|
22
|
+
长度的字母同帧齐收(不做 per-char delay/jitter)
|
|
23
|
+
- 字形比例:方正略宽(字面宽高比 ≈1.07,实测判例:竖长字形被
|
|
24
|
+
裁"太竖长");细笔画+大字距(letterSpacing ≈0.6em)。demo 字标是
|
|
25
|
+
video-shotcraft(品牌规范要求全小写):几何小写单线体,字碗为正圆,
|
|
26
|
+
64 高视框里基线 59 / x 高 22 / 升部 5,整体 ×1.3 放大、笔画反向缩放保持 5.5px
|
|
27
|
+
- 描画曲线:整体 ease-in-out,中段略快首尾略缓(起笔收笔的手感)
|
|
28
|
+
- 底景:氛围渐变/实拍空镜(暮色山景类),字标是画面唯一动作
|
|
29
|
+
|
|
30
|
+
## 参数表
|
|
31
|
+
| 参数 | 典型值 | 调节手感 |
|
|
32
|
+
|------|--------|----------|
|
|
33
|
+
| 描画时长 | ~50f(f16 起 f68 收 @30fps) | <30f 读不出"画"的过程;>80f 拖 |
|
|
34
|
+
| 同步性 | 全字符同帧起收、零错峰 | 判例:逐字错峰版被裁"所有字母是在同一个时间完成书写" |
|
|
35
|
+
| 连续性 | pathLength 连续生长、无分段跳变 | 判例:遮罩分段版被裁"应该是连续的笔画画出来" |
|
|
36
|
+
| 字形 | 骨架单线、字面宽高比 ~1.07、笔画细 | 竖长(比 <0.8)被裁;粗笔画丢结晶感 |
|
|
37
|
+
| 字距 | ~0.6em | 大字距是本卡身份;<0.3em 改用普通描画卡 |
|
|
38
|
+
| 终态静置 | ≥30f | 结晶完成后必须让观众读一次整词 |
|
|
39
|
+
|
|
40
|
+
## 已知坑
|
|
41
|
+
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
|
|
42
|
+
首次实战须以真实素材回验
|
|
43
|
+
- 与 draw-svg-trace 分工:那张是通用描画(图标/插画/单元素);
|
|
44
|
+
本卡命门是**全字符同步**的整词结晶仪式,且限品牌字标语境
|
|
45
|
+
- 与 type-assembly-moves 分工:那张是字块组装(位移拼合);
|
|
46
|
+
本卡笔画从无到有生长,字符不位移
|
|
47
|
+
- 骨架字形需手绘 path(现成字体轮廓是双线勾边,描画观感不同);
|
|
48
|
+
demo 的 13 个小写字形(v i d e o - s h t c r a f)每个带自己的宽度 w,
|
|
49
|
+
实战优先复用 demo 里的字形库;多子笔画字母(i 的点、t/f 的横)按
|
|
50
|
+
描画顺序排在路径末尾,pathLength 归一后仍同帧齐收
|
|
51
|
+
- 原片(superhuman-promo)底景是实拍暮色山景+水面倒影;demo 为
|
|
52
|
+
渐变近似,实战建议用实拍/AI 生成空镜
|
|
53
|
+
|
|
54
|
+
## 参考实现
|
|
55
|
+
demos/opening/letterspace-materialize/
|
|
56
|
+
(LetterspaceMaterialize.tsx)
|
|
57
|
+
原片出处:superhuman-promo.mp4 ≈4.5–6.5s
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: magician-card-flourish
|
|
3
|
+
一句话: 午夜蓝暗场上蓝色星芒闪现 0.3s(X 形针状光束旋转 90°+中心辉光放射小光芒),卡片从闪光点弹射而出——极速自旋弧线飞向镜头、自旋随靠近衰减、瞬间硬定格(卡高 86% 画高)、光脉冲 + sheen 扫光,右侧文案随后逐行揭示
|
|
4
|
+
适用: 单张卡片/海报/封面的魔术性登场(片头主视觉、产品卡揭晓);纯黑暗场;需要"变出来"仪式感的爆点
|
|
5
|
+
时长: 156f(闪光 0.3s + 飞行 1.6s + 定格/扫光/文案揭示 + hold 3.3s;全段 5.2s)
|
|
6
|
+
能量: 高(一次性爆点,定格后即静)
|
|
7
|
+
标签: ui-entrance、effects
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
魔术师甩牌:一道蓝色星芒闪过,卡片仿佛从光里被变出来——从画面
|
|
12
|
+
中心极远处(视觉上一个小点)弹射而出,沿弧线极速自旋飞向镜头,
|
|
13
|
+
到达中心瞬间硬定格成近满幅展示。三个魔术感命门:**闪光先行**
|
|
14
|
+
(光是"变"的仪式,0.3s 短促干脆)、**弹射节奏**(起飞慢速蓄力→
|
|
15
|
+
急加速踢出→弧线段减速抵达,slow-in→burst→decelerating arc)、
|
|
16
|
+
**定格即静**(无减速尾巴无回弹,13 整圈自旋保证定格恰为正面)。
|
|
17
|
+
|
|
18
|
+
## 动效核心
|
|
19
|
+
- 开场星芒(用户参考图 IMG_2505 逐轮收敛的最终形态):
|
|
20
|
+
- X 形**对角**针状光束(-38°/52° 起始),闪光期间整体**动态旋转
|
|
21
|
+
90°**(easeInOut);长轴 840/短轴 420(比例 2:1)
|
|
22
|
+
- 光束纯饱和蓝(#3f9bff→#2277f2 贯穿全长,白段只留根部 5%),
|
|
23
|
+
每轴三层:宽糊辉光包层 + 明亮主束 + 过曝细芯
|
|
24
|
+
- 中心**不是白球**:极小亮点(26px)+ 蓝辉光晕(140px)+ 一圈
|
|
25
|
+
10 根长短相间放射短刺(随星芒反向缓转)
|
|
26
|
+
- 节奏:渐亮 2.5f → 微闪 → 坍缩,9f(0.3s)完
|
|
27
|
+
- 弹射飞行:闪光点 = 落点(画面左 1/3,cx=700)极远(scale≈0.11)出发,
|
|
28
|
+
真透视 scale=F/(F+z)(z 14000→0);行程曲线 slow-in(前 14% 时间走 6%)
|
|
29
|
+
→斜率跳变弹射→easeOut(cubic) 减速;正弦单拱弧线向右上荡出(经过日后
|
|
30
|
+
文案的位置)再收回落点;飞行中卡带一圈蓝色辉光,被运动模糊拖成光尾
|
|
31
|
+
- 自旋:沿卡片对角线轴 13 整圈;前 40% 行程近匀速极快,后 60%
|
|
32
|
+
角速度 2.4 次幂衰减(越近镜头转越慢),整圈数保证定格正面
|
|
33
|
+
- 定格:f=57(TAKEOFF+48)全量冻结,卡高 ≈86% 画面高;落定瞬间一圈与卡同形的
|
|
34
|
+
蓝色光脉冲从卡边外扩淡出(22f),卡后背光与舞台主光同时亮起(闪光期舞台压暗,
|
|
35
|
+
让星芒是唯一光源)
|
|
36
|
+
- 扫光:定格稳 8f 后 sheen 斜带左→右一次扫过(screen 叠加,裁进圆角)
|
|
37
|
+
- 卡面:深海军蓝 video-shotcraft「Launch Film」首映票——品牌行(标志 + 小写字标)、中心
|
|
38
|
+
video-shotcraft 标志托在同心细环 + 交叉针线上(开场星芒"留在卡上";环与针线从标志外缘
|
|
39
|
+
起,不从取景框开口里穿过)、58px 大字标题(定格后 ≈100px)、mono 票根行;徽记区一层
|
|
40
|
+
全息箔垫在标志下面,色相随自旋角滚动(飞行中流光、定格即冻结);卡背中心也是标志
|
|
41
|
+
- 右侧文案(定格后):眉题 NOW SHOWING 字距收拢 63f → 132px 标题「Craft / the shot.」两行升起 67/74f →
|
|
42
|
+
36px 副文「Cinematic product videos, crafted by your agent.」逐词 86f
|
|
43
|
+
- 卡片按定格尺寸(×1.72)布局、CSS zoom 栅格化,飞行只做缩小——定格帧文字锐利(Q2)
|
|
44
|
+
|
|
45
|
+
## 参数表
|
|
46
|
+
| 参数 | 典型值 | 调节手感 |
|
|
47
|
+
|------|--------|----------|
|
|
48
|
+
| 闪光时长 | 9f(0.3s,用户精确定值;曾 1.5s→0.8s→0.5s 逐轮压短) | 光是仪式不是主角;>15f 抢卡片的戏 |
|
|
49
|
+
| 星芒旋转 | 闪光期间动态转 90°(判例:静态摆角被裁"没看到旋转") | 旋转要逐帧可见;>120° 读作螺旋桨 |
|
|
50
|
+
| 光束颜色 | 纯饱和蓝贯穿全长 | 白段过长/衰减过快被裁"不够还原";青蓝偏灰被裁"要蓝色的" |
|
|
51
|
+
| 中心 | 小亮点+辉光+放射短刺 | **白色圆球被裁**——中心是光学辉光不是实体球 |
|
|
52
|
+
| 弹射曲线 | slow-in 14%→burst→减速弧线 | 直接匀速/纯 easeOut 没有"弹射"的蓄力感 |
|
|
53
|
+
| 自旋衰减 | 后 60% 行程 2.4 次幂减速 | 匀速到底被裁"靠近镜头时应随距离衰减";整圈数=定格正面的保证 |
|
|
54
|
+
| 定格尺寸 | 卡高 86% 画面高(右侧留给文案) | 初版 1.0x 被裁"更近更大基本靠近上下界";单卡居中无文案时可回到 94% |
|
|
55
|
+
| 硬定格 | 全量冻结零回弹 | 魔术感=瞬间静止;回弹读作物理玩具 |
|
|
56
|
+
|
|
57
|
+
## 已知坑
|
|
58
|
+
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
|
|
59
|
+
首次实战须以真实素材回验
|
|
60
|
+
- **光效质感判例链**(本卡贡献的全局方法论):几何色块被裁"5毛
|
|
61
|
+
特效"→光学实感重做→游戏感+真实→用户给参考图一轮收敛。
|
|
62
|
+
质感类意见文字损耗大,**主动请用户丢参考图**
|
|
63
|
+
- 工程坑:细针光束**不能放进 CameraMotionBlur**——旋转被模糊采样
|
|
64
|
+
拆成条纹分身("廉价感"的隐性来源);闪光层独立于运动模糊渲染
|
|
65
|
+
- 工程坑:星芒 SVG viewBox 要 ≥ 光束长+旋转扫掠半径,否则端点
|
|
66
|
+
被裁出直边
|
|
67
|
+
- 与 card-flip-reveal/deck-deal-flyin 分工:那两张是翻牌/发牌的
|
|
68
|
+
多卡节奏戏;本卡是单卡"变出来"的魔术仪式,一次只变一张
|
|
69
|
+
|
|
70
|
+
## 参考实现
|
|
71
|
+
demos/opening/magician-card-flourish/
|
|
72
|
+
(MagicianCardFlourish.tsx)
|
|
73
|
+
原片出处:无(用户口述定制,多轮迭代收敛)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orbit-ring-title-open
|
|
3
|
+
一句话: 石墨暗场上八张 16:9 暗色内容卡按 45° 均布在 720×380 椭圆上匀速公转(卡身永不倾斜,纵深只由 sin θ 给出 ±12% 缩放、z 序与远处压暗失焦),环撑开期间卡内容冻结首帧、f24 之后八张一起开播;居中两级标题逐字解糊下沉落定,关键词到位那一刻荧光马克块自左横扫铺满、扫过处字反白为墨,mono 副行随后浮出;可选末段整行失焦淡出、环继续转着交棒下一镜
|
|
4
|
+
适用: 开场第一镜 = 「这个产品有一整套东西」;素材库/模板库/功能矩阵/案例集的门面拍;需要用真实运动的产品画面托住一句主张,而不是把截图摆成静态九宫格
|
|
5
|
+
时长: 150f(5s@30fps;马克块 f64 落定后 2.9s 稳态巡回 + 极缓推近;开 HANDOFF_EXIT 时 f118 起退场交棒)
|
|
6
|
+
能量: 中(唯一的持续运动是匀速公转,全片只有马克块横扫一次冲击)
|
|
7
|
+
标签: ui-entrance
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
开场想说"我们有一整套东西",最常见的做法是把截图排成网格——但网格是静止的,观众
|
|
12
|
+
读到的是"一堆图片",不是"一套会动的产品"。这张卡把陈列改成**环形巡回**:八张卡沿
|
|
13
|
+
椭圆匀速公转,永远有卡在进画、有卡在出画,画面自带"还有更多"的暗示,而标题稳稳
|
|
14
|
+
钉在正中间不受影响。
|
|
15
|
+
|
|
16
|
+
关键的取舍是**卡内容要真的在播**。静态截图上环,观众只会认出"轮播图";卡里跑着真
|
|
17
|
+
动效,同一个环立刻变成"产品在工作"。但八张卡同时开播会八个动效抢戏,谁也读不进去
|
|
18
|
+
——所以入场期把卡内容**冻结在首帧**,等环撑开、标题起手之后再统一开播。观众的注意
|
|
19
|
+
力顺序因此是:先认出这是一圈产品画面 → 读标题 → 才注意到卡里都在动。
|
|
20
|
+
|
|
21
|
+
## 动效核心
|
|
22
|
+
- **环上定位**:`θ = -π/2 + i·2π/8 + t·0.3`,`x = 960 + cos θ·RX·ringScale`、
|
|
23
|
+
`y = 540 + sin θ·RY·ringScale`。RY/RX ≈ 0.53 的椭圆读作"俯视的环";正圆会读作转盘。
|
|
24
|
+
椭圆轨道本身画成一圈 16% 透明度的强调色发丝线,入场 0–30f 用 pathLength 描出来
|
|
25
|
+
- **卡身永不倾斜**:卡只跟着 θ 换位置,自身 transform 只有缩放,没有任何旋转。
|
|
26
|
+
纵深完全交给 `depth = sin θ`(+1 = 画面下方,近;−1 = 上方,远):
|
|
27
|
+
`scale = 1 + 0.12·depth`、`zIndex = 10 + round(depth·5)`;远处(depth<0)再叠
|
|
28
|
+
`blur(1.6·|depth|px)` + 压暗层(景深 + 空气透视),近处带一点顶光。缩放、z 序、
|
|
29
|
+
明暗必须由同一个 depth 驱动,否则会出现"远处的卡压住近处的卡"
|
|
30
|
+
- **环入场**:f0–24 `ringScale 0.62→1`(expo-out,前 1/3 时间走完八成)从中心撑开;
|
|
31
|
+
同时逐卡淡入,第 i 张从 `2+1.5i` 帧起 11f 淡入并 0.9→1 长大。撑开与淡入叠在一起,
|
|
32
|
+
读作"环长出来"而不是"卡片一张张贴上来"
|
|
33
|
+
- **冻结首帧再开播**:卡内容包在 `<Freeze frame={max(0, frame - 24)}>` 里。f24 之前
|
|
34
|
+
八张卡都停在自己的第 0 帧,f24 起同时进入正常时间轴
|
|
35
|
+
- **卡内坐标解耦**:卡内容按 960×540 作画,外层用 `scale((CW·s)/960)` 缩到卡宽 +
|
|
36
|
+
`transform-origin: top left`。内容组件不需要知道自己被缩小了,落地换成真实截图或
|
|
37
|
+
库内其他镜头卡组件时不用改一行。描线类卡用 `pathLength={1}` 做 dash,路径长短不影响首帧
|
|
38
|
+
- **两级标题 blur-slide 逐字**:上行 64px 次级灰(f10 起、错峰 1f、单字 27f),下行
|
|
39
|
+
156px 主角大字(f18 起、错峰 2f、单字 32f——更重更慢)。每字两条通道同起不同终:
|
|
40
|
+
解糊走满单字时长(`blur (1-p)·fontSize/6`),下沉只占前 1/3(`translateY (1-p)·fontSize·0.22`),
|
|
41
|
+
缓动 quint-out。位移先停、模糊后停,字才有"落定后继续对上焦"的手感
|
|
42
|
+
- **马克块横扫 + 反白**:`spring(frame-50, damping 20, stiffness 190)` 驱动 `scaleX`
|
|
43
|
+
(封顶 1.03),`transform-origin: left center`,块比字宽出左右各 0.14em 垫在字底下。
|
|
44
|
+
字画两层:白字层裁掉块前沿左侧、墨字层(onAccent)裁掉前沿右侧,前沿位置按
|
|
45
|
+
`(m·(W+0.28em) − 0.14em)/W` 换算到字盒——扫过即反白,读作"被荧光笔划过"
|
|
46
|
+
- **标题 scrim**:卡层之上、字层之下垫一团暗色径向 scrim,近处卡从标题背后经过时被压暗
|
|
47
|
+
- **hold**:f40–150 整个画面 smooth 推近 2.5%,环继续匀速公转
|
|
48
|
+
- **退场(可选,HANDOFF_EXIT)**:f118 起 10f 整行 `opacity 1→0` + `blur 0→6.5px`,
|
|
49
|
+
之后只有环在转——成片里接 crash-zoom / 穿浅场直切时打开;单镜头演示停在完整海报
|
|
50
|
+
## 参数表
|
|
51
|
+
| 参数 | 典型值 | 调节手感 |
|
|
52
|
+
|------|--------|----------|
|
|
53
|
+
| 椭圆半径 | RX=720 / RY=380(卡 400×225) | RY/RX≈0.53 是"俯视环"的甜点;比值 →1 读作正圆转盘,→0.3 卡会在上下缘挤成一条 |
|
|
54
|
+
| 卡数 | 8(方位角间隔 45°) | 8 张在这个半径上任意转角互不遮挡;≥10 张必须同步加大 RX/RY,否则近处卡压边 |
|
|
55
|
+
| 公转速度 | 0.3 rad/s(5s 转约 86°) | **别因为"看起来慢"就调快**:>0.5 rad/s 时卡扫过画面边缘会有频闪感,且喧宾夺主 |
|
|
56
|
+
| 环入场 | f0–24,scale .62→1,expo-out | <15f 像弹窗;>30f 标题起手时环还在长,两件事互相盖 |
|
|
57
|
+
| 逐卡淡入 | 第 i 张 `2+1.5i` 帧起 11f | 步长 1.5f 刚够读出"依次";>3f 最后一张会晚到标题之后 |
|
|
58
|
+
| 开播帧 | PLAY_START=24f | 必须 ≥ 环撑开结束帧;提前会让八个动效在入场期一起抢戏 |
|
|
59
|
+
| 纵深 | 缩放 ±12%,远处失焦 ≤1.6px + 压暗 | 缩放 >15% 顶部卡会缩成图标,环读作"透视隧道";失焦 >3px 远处卡读作脏 |
|
|
60
|
+
| 标题 | 上行 64px/500 灰 + 下行 156px/600 白 | 环一直在动,主角行必须够大够重才压得住;两行同字号会失去层级 |
|
|
61
|
+
| 逐字节奏 | 上行错峰 1f/单字 27f;下行错峰 2f/单字 32f | 错峰 1–2f 是"整体解糊"的手感;≥3f 会读成逐字打字机 |
|
|
62
|
+
| 马克块 | f50 起,spring damping 20,荧光黄绿 #c6f432 | damping <14 会回弹出色块边缘;暗场里它是唯一高饱和色块,别给第二处 |
|
|
63
|
+
| 副行 | video-shotcraft 标志 + 小写字标 30px + mono 26px「SHOT RECIPE CARDS」(字距 0.2em),f60 起 16f 浮出 | 大字距 mono 是"产品代号"的读法;跟标题同字体会读作第二行标题;别写卡片数这类会过时的数字 |
|
|
64
|
+
| 退场(可选) | f118–128,blur 0→6.5px | 整行统一失焦;**逐字退场会读作第二次入场** |
|
|
65
|
+
## 已知坑
|
|
66
|
+
- **卡不能跟着 θ 倾斜**。给卡加 `rotate(θ)` 后环立刻从"陈列"变成"过山车",而且卡内
|
|
67
|
+
文字会歪,可读性直接归零。卡只换位置,不换角度
|
|
68
|
+
- 卡内容首帧必须自带静态骨架(底色/边框/标签/暗底轨迹)。冻结期显示的就是第 0 帧,
|
|
69
|
+
如果卡的动效是"从零画出来",入场那 24f 就是八张空白卡。demo 里每个占位卡都补了
|
|
70
|
+
暗底 sparkline / 淡稿线 / 常驻提示符,就是为了让首帧不空
|
|
71
|
+
- `zIndex` 必须跟着 depth 走。只做缩放不排 z 序时,DOM 顺序会让后面的卡压住前面的,
|
|
72
|
+
近大远小的立体感当场作废
|
|
73
|
+
- 马克色块和字的层级是一对:色块 `zIndex:0` + 字 `position:relative; zIndex:1`。漏掉
|
|
74
|
+
字上的 relative,色块会盖住字(stacking context 里 static 元素排在 positioned 之后)
|
|
75
|
+
- 标题 `white-space: nowrap` 是马克块的前提——块的左右外扩 0.14em 与反白裁切都假设高亮
|
|
76
|
+
词组在同一行盒里。换行后色块会跨行断裂成两截。改了高亮词的字数要同步改前沿换算里的 W
|
|
77
|
+
- 环是背景层但它一直在动,所以**不要在环上再叠第二个动的东西**(粒子、扫光、渐变
|
|
78
|
+
呼吸)。已经有一个持续运动在场,第二个会让画面读不出主次
|
|
79
|
+
- 与 `carousel-3d` 的分工:那张卡是真 3D(`rotateY + translateZ` + backface-hidden),
|
|
80
|
+
卡会转到环背面,适合无缝 loop 的纯陈列;这张卡是 2D 椭圆伪纵深,卡永远正面朝观众,
|
|
81
|
+
适合"环托底 + 前景标题"的开场。要卡片翻面用前者,要标题压得住用后者
|
|
82
|
+
- demo 的八张卡是原创通用 DOM 占位(暗色产品卡 + 唯一荧光强调色,卡框阴影/明暗随纵深变化),不含任何产品截图;
|
|
83
|
+
落地时整块替换成你自己的镜头卡组件或真实页面截图即可,环的语法一行都不用改
|
|
84
|
+
|
|
85
|
+
## 参考实现
|
|
86
|
+
demos/opening/orbit-ring-title-open/
|
|
87
|
+
(OrbitRingTitleOpen.tsx)
|
|
@@ -0,0 +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 段,第二轮改为暗场剧场版)
|
|
@@ -0,0 +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)
|
|
@@ -0,0 +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)
|
|
@@ -0,0 +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)
|
|
@@ -0,0 +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)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: neon-triple-marquee
|
|
3
|
+
一句话: 三行对向霓虹跑马灯 recap——三连词空心霓虹灯管巨字上中下排满一面斜拍的砖墙,奇偶行反向匀速无限横滚,三行按 1/3 相位轮流点亮,结尾逐行断电
|
|
4
|
+
适用: 片尾主题词复读机段落;三连词口号的"余韵"拍法;音乐段无旁白铺陈
|
|
5
|
+
时长: 4–5s(demo 150f:18f 逐行点火上电 + 循环体 + 18f 逐行断电 + 8f 熄灯 hold)
|
|
6
|
+
能量: 中高(持续流动 + 逐行脉冲,无瞬时冲击)
|
|
7
|
+
标签: typography
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
一行 marquee 只是网页装饰;三行叠起来、奇偶反向、再让亮度按相位轮流
|
|
12
|
+
走,就成了"主题词在观众眼前列队巡游"。命门是**明暗轮唱**:任一时刻
|
|
13
|
+
只有一行是霓虹主角,其余压暗成细描边背景——三行全亮是灯牌事故,
|
|
14
|
+
轮流亮才是 recap。反向对滚制造"包围感":上下行向右、中行向左,
|
|
15
|
+
视线被夹在中间,词从两侧源源不断流过,读作"这三个词说不完"。
|
|
16
|
+
|
|
17
|
+
## 动效核心
|
|
18
|
+
- 无缝回绕:副本按固定 unitW 等距绝对定位,`(frame*speed) % unitW`
|
|
19
|
+
取模平移——匀速 linear(marquee 类是库内 linear 豁免项)
|
|
20
|
+
- 空心灯管字三层:`-webkit-text-stroke`,color transparent——暗态玻璃管(同色 0.3 透明度、常亮,三行结构永远在)
|
|
21
|
+
→ 通电彩色管体(描边 6→10px + 三层 drop-shadow 辉光 9/36/90px)→ 近白热芯(2→3.8px);亮度同时驱动
|
|
22
|
+
身后砖墙上的同色溢光(screen 叠加,砖缝被照出来)——只调 opacity 不调辉光读不出"霓虹通电"
|
|
23
|
+
- 轮唱:周期 42f,每行一个 14f 槽,槽长 16f(与下一行重叠 2f 交接,不出现全暗空拍);槽内前 2 帧启辉闪烁
|
|
24
|
+
(0.6 → 0.25 → 满)、3f 升满、平台、末 5f ease-in 熄灭——保证"一亮俩暗"永远成立
|
|
25
|
+
- 机位:整面墙放在 perspective 1700 的 3D 平面里斜拍,rotateY −17°→−9° 全程 smooth 极缓摇近 + scale 1→1.05;
|
|
26
|
+
墙脚下一条湿地面,最下一行的翻转倒影(模糊 3px + 渐隐遮罩)与三行各自的地面色光池随亮度呼吸
|
|
27
|
+
- 三行配色冰青/洋红/钠灯琥珀(#38d9ff/#ff3d9a/#ffae34),蓝黑砖墙 #0a0b14;中行反向且略快(9/11/9 px/f)
|
|
28
|
+
- 上电 / 断电:开场三行按 0/5/10f 依次跑一段确定性点火闪烁序列;124f 起自上而下每行错峰 6f 闪两下熄灭,
|
|
29
|
+
落到只剩暗态玻璃管的熄灯海报(不淡到死黑)
|
|
30
|
+
- 字体 Avenir Next Condensed Heavy 286px(回退 DIN Condensed / Impact),词距按 canvas 实测宽度排,分隔用空心菱形 ◇(边框与同层灯管同色同粗)
|
|
31
|
+
|
|
32
|
+
## 参数表
|
|
33
|
+
| 参数 | 典型值 | 调节手感 |
|
|
34
|
+
|------|--------|----------|
|
|
35
|
+
| 字号/行距 | 286px 窄体,行距 290px 排满墙面 | 行间留白 >80px 读作三条横幅广告而非一面词墙 |
|
|
36
|
+
| 滚速 | 9/11/9 px/f,中行反向 | 窄体字更密,比宽体慢一档;>20 读不清词只见光带;三行同速同向读作整版平移 |
|
|
37
|
+
| 脉冲周期 | 42f,每行 14f 槽 + 2f 交接重叠 | 周期 <30f 三行抢闪读作故障;>70f 轮唱感断掉;不留重叠会每 14f 出现一次全暗空拍 |
|
|
38
|
+
| 亮度区间 | 暗态玻璃 0.3 + 通电描边 6→10px + 三层辉光 | 暗态 <0.2 暗行消失,"三行"结构丢了 |
|
|
39
|
+
| 辉光 | 三层 drop-shadow,亮态 9/36/90px + 墙面溢光 0.55 | 单层或 <20px 读作普通描边字不读作霓虹;没有墙面溢光读作"屏上的字"不是"墙上的灯" |
|
|
40
|
+
| 斜拍 | rotateY −17°→−9°,perspective 1700 | >25° 远端词挤成一团读不清;0° 回到平铺,失去纵深 |
|
|
41
|
+
| 上电/断电 | 入:逐行错峰 5f 点火;出:124f 起逐行错峰 6f 断电 | 硬切进出读作素材没铺满;整组同时淡出没有"关灯"的仪式感 |
|
|
42
|
+
|
|
43
|
+
## 已知坑
|
|
44
|
+
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
|
|
45
|
+
首次实战须以真实素材回验
|
|
46
|
+
- 与 page-waterfall-wall 分工:那卡是页面截图纵向瀑布做"内容体量感",
|
|
47
|
+
本卡是文字行横向对滚做"主题词余韵"——素材是词不是页,位置在片尾不在中段
|
|
48
|
+
- 与 outro-group-photo-launch 分工:全家福是峰值终镜(元素合影+发布会收场),
|
|
49
|
+
本卡是终镜前的 recap 铺垫或低成本备选终镜,两者可串(本卡→淡出→全家福)不可叠
|
|
50
|
+
- 副本数按 `ceil(1920/unitW)+3` 留冗余——短词(≤4 字符)unitW 小,
|
|
51
|
+
副本不足会在回绕瞬间露右侧空缺
|
|
52
|
+
- 实战品牌色版:三行可统一品牌色靠明暗区分,但辉光对比须 ≥ demo 的
|
|
53
|
+
暗态 0.3 → 通电满亮 + 三层辉光的幅度,不然轮唱读不出来
|
|
54
|
+
- 3D 斜拍平面里的 drop-shadow 辉光开销不小(demo 1080p 约 7s 渲完 150f);倒影层只画管体不画辉光(cheap)
|
|
55
|
+
|
|
56
|
+
## 参考实现
|
|
57
|
+
demos/outro/neon-triple-marquee/
|
|
58
|
+
(NeonTripleMarquee.tsx)
|
|
59
|
+
原片出处:clickup-30 61–64.5s
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: outro-group-photo-launch
|
|
3
|
+
一句话: 全片元素从四面八方飞来围住字标合影,crane 落机位+舞台光+金尘做成发布会收场
|
|
4
|
+
适用: outro/品牌收尾;多功能产品的"全家福"式终镜
|
|
5
|
+
时长: 约 4.8s(145f)
|
|
6
|
+
能量: 峰值(全片最高点)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
把看过的每个功能各抽一个代表元素叫回来合影,字标压轴登场——观众离场前最后记住的是"这些东西属于同一个产品"。规格必须是发布会级:能量推到全片最高。
|
|
11
|
+
|
|
12
|
+
## 动效核心
|
|
13
|
+
- 9 个页面元素(nav/卡片/内容条/搜索框/统计条/文档头)从四方带旋转飞入,飞行段按速度做方向性运动模糊,落地压实(接触影收紧 + 1.5% 轻压,不逐个发光,Q4)
|
|
14
|
+
- 字标(demo:video-shotcraft 标志 + 字标,眉题是品牌短句)letterpress 逐字登场,全员"退后排"让主角;rule 长出、延长线射出
|
|
15
|
+
- crane 运镜:合影层整体 rotateX 4°→0 + scale 落下,之后缓推
|
|
16
|
+
- 发布会氛围三件套:开场光带扫过、字标背后舞台光、金尘上飘
|
|
17
|
+
- 背景页面 blur 化作景深
|
|
18
|
+
|
|
19
|
+
## 参数表
|
|
20
|
+
| 参数 | 典型值 | 调节手感 |
|
|
21
|
+
|------|--------|----------|
|
|
22
|
+
| 元素飞入 | 9 元素 cue 从 4 起每 3f 一个,各飞 12f;起点偏移 ±360–500px;渲染顺序=cue 顺序,后到者叠上 | 每个已展示过的功能都要有代表元素(Q8 自检项),缺谁观众都会察觉 |
|
|
23
|
+
| 飞入缓动 | bezier(0.34,1.4,0.44,1) | 代码注释点名教训:旧 bezier(0.25,0.9,0.3,1) "never crossed 1" 没有真过冲——落地要弹 y1 必须 >1 |
|
|
24
|
+
| 飞行姿态 | 飞行中 rot×2→settled rot(±5° 内)、scale ×1.12→1;按屏幕速度的方向性运动模糊(0.3×px/帧,封顶 22);落地 cue+9→16f 接触影收紧 + 1.5% 轻压 | 落定角度收进 ±5° 内——合影要整齐但不刻板 |
|
|
25
|
+
| 退后排 | 字标登场时 42–50f 全员 opacity −12%、saturate −8% | 主角登场配角必须让位,不让位字标压不住 9 个元素 |
|
|
26
|
+
| crane 运镜 | `perspective(1400px) rotateX(4°→0) scale(1.06→1)` 前 40f 落下,之后缓推 +0.035(36f 起 in-out 零速起步,接 crane 不突变) | crane 幅度就这么小(4°)已经够"落机位"读感,大了会晕(推测) |
|
|
27
|
+
| 氛围三件套 | 光带 2–14f(600px 宽 overlay 峰值 opacity 0.12);舞台光 42→50→58f 0→0.5→0.25;金尘 20 颗 2.4–4.2px 带暖光晕、opacity 0.35–0.7 微闪 + 6 颗前景失焦光斑、全参数 index 派生确定性 | 粒子/光效参数必须确定性派生(硬规则:渲染必须可复现);金尘超过 30 颗开始像雪(推测) |
|
|
28
|
+
| 字标 | demo 为 video-shotcraft 标志 + 全小写字标(品牌字体 118px):标志 38f 先压,字母 delay=42+i·1.8、8f,同一套 letterpress;rule 58→70f 长出、两端 190px 延长线 8f 射出 6f 淡去;字距 62–66f 呼吸;背景页 24f 内 blur 0→14;落定后 sign-off hold 30f | 字标落定 hold 满 1 秒(R1 定案);outro 不加解说 caption 保持干净(C1 例外项) |
|
|
29
|
+
|
|
30
|
+
## 声音
|
|
31
|
+
固定三拍句式:riser-cine 铺进组装(模板片钉在 f945)→ impact-deep-whoosh 钉字标 stamp(f980,vol 0.55 全片峰值)→ sparkle 点 rule(f1005)。这是模板片定稿后唯一从未改动的段落句式(S2;详见 sound-design 4.3)。
|
|
32
|
+
|
|
33
|
+
## 已知坑
|
|
34
|
+
- 初版收尾几乎总是偏保守(Q8:安静签名式→合影→发布会三级加码)——起稿就按"像一个产品发布"的规格给足 crane/舞台光/粒子
|
|
35
|
+
- 结构先于特效:先有"四方飞入合影"结构再加码氛围;直接堆特效没有骨架
|
|
36
|
+
- outro tagline 与字标下方文案查重(P4 dedupe 判例),同一句话全片只出现一次
|
|
37
|
+
|
|
38
|
+
## 参考实现
|
|
39
|
+
demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx(原 template/src/aifl/live/SceneOutroLive.tsx;30f sign-off hold 时长见 template/src/aifl/Main.tsx 时间线)
|