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
package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hashtag-to-pill-materialize
|
|
3
|
+
一句话: 话题词打字实体化——居中打出 "#word"(红实心光标恒亮),1 帧硬切变成宽大胶囊标签,hold 后缩小左移落到页面标签位,再 1 帧硬切揭示成品页;"两次硬切一次滑动"的节奏骨架
|
|
4
|
+
适用: 标签/分类/关键词功能的演示段(笔记 app 打 tag、话题聚合);"输入 → 变成 UI 实体 → 归位到成品"的三段式叙事
|
|
5
|
+
时长: 120f(4s)——打字 ~40f + 硬切胶囊 hold ~18f + 缩移 ~14f + 硬切揭示后静置 ~1.2s(原片 18–21.5s)
|
|
6
|
+
能量: 中(干脆利落,靠硬切给劲,不靠弹跳)
|
|
7
|
+
标签: typography
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
文字变实体的常规做法是渐变/morph/展开,原片帧级拆解证明 Bear 反着
|
|
12
|
+
来:**实体化是 1 帧硬切**——上一帧还是文字+光标,下一帧就是完整
|
|
13
|
+
胶囊,无展开无 cross-fade 无回弹。硬切给的是"啪、成了"的确定感,
|
|
14
|
+
任何渐变都会把"实体"软化成"特效"。全段骨架是**两次硬切夹一次
|
|
15
|
+
滑动**:硬切实体化 → 平滑缩移归位 → 硬切揭示成品页。唯一的连续
|
|
16
|
+
运动(缩移)被两记硬切框住,才显得又快又稳。这个节奏骨架是命门,
|
|
17
|
+
三段挪动任何一段的性质(把硬切改渐变、把滑动改硬切)整卡就塌。
|
|
18
|
+
|
|
19
|
+
## 动效核心
|
|
20
|
+
- 打字段:几何无衬线(Futura 气质)居中打 "#word",**红实心光标
|
|
21
|
+
恒亮不闪**(原片实测,别加 blink);人手节奏 4–6f/字带确定性抖动
|
|
22
|
+
- **实体化 = 1 帧硬切**:文字+光标整层消失,同帧出现无描边浅灰
|
|
23
|
+
胶囊 + 图标 + 词(字号不变、原位等大,# 被图标替换);仅允许
|
|
24
|
+
3f 1.03→1 微落定防死板
|
|
25
|
+
- 胶囊 hold ~0.6s → 一段 bezier easeInOut 缩小左移(~0.55x、
|
|
26
|
+
~14f)落到页面标签位,位置/缩放同曲线同起止,中途不分段
|
|
27
|
+
- 落位后**再 1 帧硬切**揭示成品页:底色/标题/正文/胶囊配色同帧
|
|
28
|
+
全变,之后真静止收尾
|
|
29
|
+
- 实现要点:胶囊按大字号绘制、整体 transform 缩放,且
|
|
30
|
+
transformOrigin 必须 0 0 + translate 先行,否则落位中心漂移
|
|
31
|
+
|
|
32
|
+
## 参数表
|
|
33
|
+
| 参数 | 典型值 | 调节手感 |
|
|
34
|
+
|------|--------|----------|
|
|
35
|
+
| 打字节奏 | 4–6f/字(原片 ~6 字/秒),mulberry32 抖动 | 均匀间隔读作机打;光标必须恒亮(**原片实测**不闪烁) |
|
|
36
|
+
| 实体化 | **1 帧硬切**(原片帧级实测无任何过渡)+ 3f 1.03→1 微落定 | 加淡入/展开立刻降级成普通 morph;微落定 >4f 读作弹跳 |
|
|
37
|
+
| 胶囊几何 | 740×236@1920(**原片实测** 493×157@720p ×1.5),无描边 | 胶囊要"宽大过头"才有实体感;加描边读作按钮 |
|
|
38
|
+
| hold | ~18f(0.6s,**原片实测**) | <12f 观众没看清胶囊长啥样就飞了 |
|
|
39
|
+
| 缩移 | ~0.55x(**原片实测** 273/493)、14f、bezier(0.5,0,0.25,1) | 缩放与位移必须同曲线;分开调会读作两个动画 |
|
|
40
|
+
| 揭示 | 落位 +3f 再 1 帧硬切全页 | 揭示若做转场,第二记硬切没了,骨架塌一半 |
|
|
41
|
+
|
|
42
|
+
## 已知坑
|
|
43
|
+
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
|
|
44
|
+
首次实战须以真实素材回验
|
|
45
|
+
- 与 typewriter-moves(打字呈现)、ui-to-brand-morph(渐变变形成形)
|
|
46
|
+
撞领域:本卡命门是**硬切实体化非渐变变形**——只要你想加过渡,
|
|
47
|
+
就该去用那两张卡而不是改这张
|
|
48
|
+
- 早期版本曾杜撰"胶囊飞入下方滑入笔记卡"段,原片对照证伪已砍;
|
|
49
|
+
别复活飞行段
|
|
50
|
+
- transformOrigin 默认 50% 50% 会让缩放落位中心漂移 (1−s)×半宽,
|
|
51
|
+
必须 origin 0 0 + translate 到目标中心再 scale(demo 内注释)
|
|
52
|
+
- 与原片残余差距:Futura 回退字重、揭示帧正文间距 ~10px 级别偏差;
|
|
53
|
+
节奏与硬切时点已密帧对齐。demo 内容已换成 video-shotcraft 的世界
|
|
54
|
+
(原片 "#music" + 音符 → "#shots" + 场记板图标,成品页 "My favorite shots"),
|
|
55
|
+
话题词与原词等长,胶囊几何不变
|
|
56
|
+
|
|
57
|
+
## 参考实现
|
|
58
|
+
demos/interaction/hashtag-to-pill-materialize/
|
|
59
|
+
(HashtagToPillMaterialize.tsx)
|
|
60
|
+
原片出处:bear-app.mp4 18–21.5s
|
package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: picker-carousel-feature-cycle
|
|
3
|
+
一句话: 移动端风竖向选择器——焦点药丸不动、内容穿过它,每项带明显 outQuint 减速吸附后完全静止,按到中心距离分层控制透明度/字号/灰度,落定时药丸做 scaleY 极轻呼吸
|
|
4
|
+
适用: 逐个念出功能名/场景名的列表镜头;"选一个"的交互演示;移动端产品的 picker 类控件展示
|
|
5
|
+
时长: 约3.6s(108f@30fps)
|
|
6
|
+
能量: 中(每一次吸附都是一个节拍点,5 拍匀速推进)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
把"选择"这件事的物理感做出来:焦点框是固定的,是内容在滚动并被吸住。
|
|
11
|
+
每项停下后必须**真的静止几帧**——连续滚动读作 loading 动画,停顿才读作
|
|
12
|
+
"这一项被选中了"。距离衰减(透明度 + 字号 + 灰度三通道同时衰减)是让
|
|
13
|
+
观众视线始终锁在中间那一行的唯一手段。
|
|
14
|
+
|
|
15
|
+
## 动效核心
|
|
16
|
+
- 视口 300×170px(5 行 × rowH 34),焦点药丸固定在第 3 行位置
|
|
17
|
+
(`top: rowH*2`),白底 + 1px `#E3E3E6` 描边 + `0 2px 8px rgba(0,0,0,.06)`
|
|
18
|
+
- 全程 `t 0.05→0.95` 匀速切成 STEPS=5 步;步内位移
|
|
19
|
+
`outQuint(min(1, local/(1−HOLD)))`,HOLD=5/14 的尾段完全不动
|
|
20
|
+
(每步≈0.65s = 走位≈0.42s + 静止≈0.23s)
|
|
21
|
+
- 列表整体 `translateY(rowH*2 − pos*rowH)`——移动的是内容,药丸零位移
|
|
22
|
+
- 距离衰减(`d = |i − pos|`)分三段:opacity `d≤1` 时 1→0.55、
|
|
23
|
+
`1<d≤2` 时 0.55→0.18;fontSize 17→14px(按 `d/2`);
|
|
24
|
+
color `d<0.5` 用 INK、`d<1.5` 用 MID、更远用 `#B9B9BE`
|
|
25
|
+
- 行内图标 opacity `max(0, 1 − d*1.6)`——只有焦点行看得见图标
|
|
26
|
+
- 落定后药丸 `scaleY 1 + sin(min(1, land/0.6)·π)*0.06` 呼吸一下
|
|
27
|
+
(`land` 只在 HOLD 段内 >0,即吸附完成才呼吸)
|
|
28
|
+
- 视口上下各 26% 的 alpha 渐隐遮罩(`mask-image` 透明→不透明),让进出项自然消隐
|
|
29
|
+
|
|
30
|
+
## 参数表
|
|
31
|
+
| 参数 | 典型值 | 调节手感 |
|
|
32
|
+
|------|--------|----------|
|
|
33
|
+
| 行高/可见行数 | rowH 34px × 5 行,焦点在第 3 行 | 可见行数必须是奇数,否则焦点行不在视觉正中 |
|
|
34
|
+
| 步数 | STEPS=5,窗口 t 0.05→0.95 匀速 | 5 拍是 3.6s 的舒适上限;7 拍每拍就压到 0.46s 读不清 |
|
|
35
|
+
| HOLD | 5/14 ≈ 0.357(每步尾段静止≈0.23s) | **命门**:HOLD 归零就变成匀速滚动,完全丢掉"吸附"语义 |
|
|
36
|
+
| 吸附缓动 | outQuint(作用在 local/(1−HOLD) 上) | outQuint 的急减速就是"被磁铁吸住"的手感,outCubic 太软 |
|
|
37
|
+
| opacity 衰减 | 1 → 0.55(d≤1)→ 0.18(d≤2) | 相邻行留 0.55 是让观众感知"上下还有内容";降到 0.3 就孤立了 |
|
|
38
|
+
| fontSize 衰减 | 17→14px,按 min(1, d/2) | 字号差是第二重景深;只做透明度会显得扁 |
|
|
39
|
+
| 图标可见性 | max(0, 1 − d·1.6) | 只有焦点行带图标,是"当前项"的额外标记 |
|
|
40
|
+
| 药丸呼吸 | scaleY 1→1.06→1,落定后 0.6·HOLD 内走完 | 0.06 已到上限;再大就读作药丸自己在动,抢了内容的戏 |
|
|
41
|
+
|
|
42
|
+
## 已知坑
|
|
43
|
+
- 药丸必须是 **`translateY` 零位移的固定层**,`scaleY` 呼吸也不能带
|
|
44
|
+
位移,否则焦点框漂移,"内容穿过焦点"的语义立刻失效
|
|
45
|
+
- 距离衰减写在 `fontSize` 上会触发逐帧重排(行高固定所以布局不跳),
|
|
46
|
+
行高若改成 auto 就会抖;rowH 必须写死
|
|
47
|
+
- 渐隐用 `mask-image` 做 alpha 遮罩,不要叠纸色色块:底色一旦是渐变/有光斑,色块遮罩就会露出矩形边界带
|
|
48
|
+
- 左外侧 24×24 的方形 app 图标(深底 + video-shotcraft 标志反白版)用
|
|
49
|
+
`margin:-12px 0 0 -186px` 相对画面中心定位;改视口宽度必须同改 186px
|
|
50
|
+
- ITEMS 是 video-shotcraft 的 7 条功能名("Shot recipe cards" 等),换成别的功能名时
|
|
51
|
+
字长变化会影响居中观感——单行超过 300px 就要缩字号而不是换行
|
|
52
|
+
|
|
53
|
+
## 参考实现
|
|
54
|
+
demos/interaction/picker-carousel-feature-cycle/
|
|
55
|
+
(PickerCarouselFeatureCycle.tsx)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: segmented-thumb-hero
|
|
3
|
+
一句话: 分段控件 thumb 位移当主角特写——超大胶囊 segmented control 弹簧浮入,描边箭头光标画外滑入按下,白 thumb 8f ease-out 滑到另一段,到位瞬间新图标 spring 弹出、旧图标收起
|
|
4
|
+
适用: "模式切换/二选一"功能的宣告镜头(demo 的 video-shotcraft Prompt→Film、Chat→Agent 式);一个 UI 微交互撑一整镜的特写拍法
|
|
5
|
+
时长: ~3.5s(demo 110f:浮入 18f + 光标 24f + 点击 + 滑动 8f + 图标弹出 + hold)
|
|
6
|
+
能量: 中(微交互特写,精致不轰)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
产品切到新模式,通常拍法是整个界面换掉。本卡反着来:把 segmented
|
|
11
|
+
control 放大到 1080px 宽拍特写,**thumb 那 8 帧位移本身就是叙事**——
|
|
12
|
+
"我们从 A 走到了 B"。没有任何页面上下文,控件即舞台。因果链完整:
|
|
13
|
+
光标滑入(有人来了)→ 按下+涟漪(做了决定)→ thumb 滑动(世界响应)
|
|
14
|
+
→ 新图标弹出(新身份确立)。四拍缺一不可,缺了光标就是 UI 自己在动,
|
|
15
|
+
缺了图标弹出就是切换没有奖励。
|
|
16
|
+
|
|
17
|
+
## 动效核心
|
|
18
|
+
- 控件特写尺寸 1080×220,从下 200px 弹簧浮入
|
|
19
|
+
(spring damping 14 / stiffness 120),大阴影随落位收小(24→12px)
|
|
20
|
+
- 光标是超大描边箭头(130px,白底墨描边):24f Easing.out(cubic)
|
|
21
|
+
从右下画外滑到目标段上;按下 scale 1→0.86→1(3f 下 4f 回)
|
|
22
|
+
- **thumb 严格 8f** Easing.out(cubic)(demo 52→60f)——还原原片手感;
|
|
23
|
+
这 8f 是全镜的心跳,前后各拍都在为它服务
|
|
24
|
+
- 到位瞬间双动作同帧起:新图标 spring(damping 10, stiffness 220)
|
|
25
|
+
过冲弹出;旧图标 6f Easing.in 塌缩且 width 同步归零让文字自然回流
|
|
26
|
+
- 点击涟漪:3px 强调色细环 12f 从点击点(光标尖端)扩散淡出(Easing.out(quad))
|
|
27
|
+
——涟漪确认"按下"发生过,无涟漪点击读作光标路过
|
|
28
|
+
|
|
29
|
+
## 参数表
|
|
30
|
+
| 参数 | 典型值 | 调节手感 |
|
|
31
|
+
|------|--------|----------|
|
|
32
|
+
| 控件尺寸 | 1080×220,thumb 内缩 16px | 缩到 <600px 宽就不是特写了,thumb 位移读不出重量 |
|
|
33
|
+
| thumb 时长 | 8f Easing.out(cubic) | >14f 读作慢动作演示视频;<5f 读作瞬移,"滑"没了 |
|
|
34
|
+
| 光标滑入 | 24f 从画外,ease-out | linear 或 <14f 读作光标被扔进来;起点必须画外 |
|
|
35
|
+
| 按下 | scale 0.86 + 涟漪 12f | 无按下直接滑 thumb,因果链断,读作自动播放 |
|
|
36
|
+
| 图标弹出 | spring damping 10/stiffness 220 | damping <8 弹三下抢 thumb 的戏;旧图标不收起文字会挤出控件 |
|
|
37
|
+
| 收尾 hold | 新态静置 ≥30f | 切换完立刻切镜,"新模式"没被看清 |
|
|
38
|
+
|
|
39
|
+
## 已知坑
|
|
40
|
+
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿,
|
|
41
|
+
首次实战须以真实素材回验
|
|
42
|
+
- 与 cursor-flyover 分工:那张是光标在完整页面里
|
|
43
|
+
点击推近(有上下文),本卡是控件脱离页面拍无背景特写——同片可共存,
|
|
44
|
+
但同一次点击别既拍页面版又拍特写版
|
|
45
|
+
- 图标塌缩用 width 归零而不是只 scale——只 scale 会留空位,文字不回流,
|
|
46
|
+
控件内出现"幽灵缝"(demo 里 width 与 scale 同步驱动)
|
|
47
|
+
- 二段以上(3+ 段)控件慎用:thumb 跨多段滑行 8f 太快读不出停靠,
|
|
48
|
+
拉长又破手感——本卡吃"二选一"最顺
|
|
49
|
+
- 涟漪圆环要 zIndex 压在 thumb 之上、圆心锁点击点——跟着 thumb 走
|
|
50
|
+
就成了 thumb 的拖尾,语义变错
|
|
51
|
+
- 实战替换素材:段标签/图标换成真功能名即可,但"新段图标带表情"
|
|
52
|
+
(demo 笑脸场记板)是奖励感的一半,纯线框图标会淡不少
|
|
53
|
+
|
|
54
|
+
## 参考实现
|
|
55
|
+
demos/interaction/segmented-thumb-hero/
|
|
56
|
+
(SegmentedThumbHero.tsx)
|
|
57
|
+
原片出处:perplexity-promo 2.3–5s
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: theme-switch-moves
|
|
3
|
+
一句话: 主题切换两式——theme-sweep 斜向扫场(边界扫过处就地换肤)与 palette-ripple 组合款(⌘K 面板收缩成点、涟漪从点荡开换肤)
|
|
4
|
+
适用: 深色模式/主题功能的叙事段落;同一 UI "在你眼前变色"而非切到新场景
|
|
5
|
+
时长: A 140f(4.7s)/ B 156f(5.2s)
|
|
6
|
+
能量: A 中 / B 中高(组合款有完整因果链)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
深浅模式切换的两种拍法。A(Notion/Figma/Linear 惯用):15° 斜向
|
|
11
|
+
边界带亮线扫过全画面(demo 从开关所在的右侧扫向左侧),边界经过处浅色**就地**变深色,同布局
|
|
12
|
+
双主题共存一瞬——观众看到的是"同一个 UI 换肤",不是转场。
|
|
13
|
+
B(组合变异):⌘K 面板输入 "dark" 回车,面板收缩成一个亮点,
|
|
14
|
+
深色涟漪**从该点**荡开扫过全 UI——"命令引发换肤"的因果链完整可读。
|
|
15
|
+
组合命门:涟漪圆心必须是面板收缩点、起始帧必须是收缩完成帧。
|
|
16
|
+
|
|
17
|
+
## 两式选型
|
|
18
|
+
| 式 | 做法 | 适用 |
|
|
19
|
+
|----|------|------|
|
|
20
|
+
| A theme-sweep-toggle | 特写顶栏日夜开关(zoom 2.0):指针按下、旋钮弹簧拨到月亮(太阳收光芒长出月牙)→ 深色世界 clip-path polygon 15° 斜边从开关一侧扫过(64f,bezier(.3,0,.35,1)),同时相机 30f 拉开到全景;边界 = 晨昏线:白热核心线 + 亮侧随速度变宽的落日橙暮光带 + 夜侧冷蓝辉;扫完"开灯"(今日胶囊 / 此刻线 / 窗口轮廓光依次亮起)坐实 | 主题功能直接展示 |
|
|
21
|
+
| B palette-theme-ripple | 面板弹簧落下→人手节奏逐字输入→回车面板 CRT 关机式收缩(先纵向压成亮线、再横向收成亮点)+ 亮点与横向余辉钉住 5f→圆形 clip 半径 6→1260px 强 ease-out 荡开,3px 白热环 + 珊瑚外辉 / 白色内辉 + 晚 4f 回声环,深色版 1.035→1 坐实、相机顺势呼气退回 | 命令面板+主题联动的高光段 |
|
|
22
|
+
|
|
23
|
+
## 参数表
|
|
24
|
+
| 参数 | 典型值 | 调节手感 |
|
|
25
|
+
|------|--------|----------|
|
|
26
|
+
| 深色版制作 | 对色板逐键手工映射(bg/card/border 各自定深色值) | 滤镜反转出来的深色是错的(图像/头像全反) |
|
|
27
|
+
| A 斜边超扫 | 斜线在世界坐标外扩 400px 计算多边形,终点越过左下角 | 不超扫角落残留浅色三角 |
|
|
28
|
+
| A 因果 | 扫场起点紧贴开关、按下后 ~6f 边界就扫过开关;相机从开关特写拉开 | 边界从远处出现或晚 10f 以上,读不出"是这个开关引起的" |
|
|
29
|
+
| A 海报帧 | 相机全景到位(40f)早于晨昏线过中线(~44–50f) | 拉开太晚 → 全景里看不到昼夜同屏,手法只剩特写 |
|
|
30
|
+
| A 坐实 | 扫完后夜里才有的光依次亮起(今日胶囊 / 此刻线 / 窗口轮廓光) | 比 scale 0.99 更有语义;不要再叠全屏闪白 |
|
|
31
|
+
| B 因果钉扎 | 亮点在收缩点挂 5f(+ 横向余辉),涟漪圆心=该点坐标、起始帧=亮点结束帧 | 圆心错位/错帧就断了"命令→换肤"因果(组合命门) |
|
|
32
|
+
| B 涟漪半径 | 终值 ≈ 圆心到最远角距离 × 1.1(demo 1260px) | 终值给太大(如 2000+)曲线前段一闪而过,圆形读不出来 |
|
|
33
|
+
| B 浅色层 | 扫场完成后条件卸载 | 真静止前提 |
|
|
34
|
+
|
|
35
|
+
## 已知坑
|
|
36
|
+
- demo 在为镜头设计的 video-shotcraft UI(A 发布周制作排期 / B 样片画廊)上调校通过——参数是调校起点非实战定稿,
|
|
37
|
+
首次实战须以真实素材回验
|
|
38
|
+
- 两版布局必须逐像素一致——布局有出入就读作"切换到另一个页面",
|
|
39
|
+
手法即失效
|
|
40
|
+
- 真实页面实战:深浅两版分别真实截图(Q1),不做滤镜假深色
|
|
41
|
+
- 一支片主题切换 ≤1 次:它是功能叙事不是转场,反复切读作演示事故
|
|
42
|
+
- 声音:A 扫场一声长 whoosh;B 回车一声确认 + 涟漪荡开接 whoosh
|
|
43
|
+
(S4 拟音优先)
|
|
44
|
+
|
|
45
|
+
## 参考实现
|
|
46
|
+
demos/interaction/theme-switch-moves/
|
|
47
|
+
(PaletteThemeRipple.tsx / ThemeSweepToggle.tsx)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: type-and-filter
|
|
3
|
+
一句话: 真实 UI 上打字搜索、网格自己收敛成一张卡、点击穿透进详情页
|
|
4
|
+
适用: 功能演示的"操作叙事"段;搜索/筛选/进入详情的任何交互链路
|
|
5
|
+
时长: 约 2.5s(118–190f)
|
|
6
|
+
能量: 中(发牌高能段之后的从容一拍)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
让观众"跟着做一遍":看清输入了什么、页面怎么响应、点了哪里。这是全片唯一模拟真人操作的镜头,节奏必须像人手,不能像脚本。
|
|
11
|
+
|
|
12
|
+
## 动效核心
|
|
13
|
+
- 相机贴近搜索框(zoom 2.0,输入字有效字高 ≈30px)逐字符打字,光标常亮→闪烁;打完的呼吸位拉开到满幅全景(zoom 1.0)看网格收敛
|
|
14
|
+
- 打完留一口气,然后非目标卡按阅读序错峰淡出下沉,网格收敛
|
|
15
|
+
- 目标卡滑到首行槽位,途中浮起 + 阴影变宽
|
|
16
|
+
- 指针在全景里滑到目标卡(屏幕尺寸恒定),双圈强调色(模板片为琥珀)ripple 点击确认,相机推进穿透进详情页交棒转场
|
|
17
|
+
|
|
18
|
+
## 参数表
|
|
19
|
+
| 参数 | 典型值 | 调节手感 |
|
|
20
|
+
|------|--------|----------|
|
|
21
|
+
| 打字速度 | 3f/字符(TYPE_START=128,"nano-lab" 8 字符 ≈149 收尾) | 初版嫌快返工后的定稿值("unhurried");交互演示按真人操作速度走(R3) |
|
|
22
|
+
| 呼吸位 | 打完到过滤 FILTER_START=160,留 ~11f(0.37s) | 打完立刻过滤读作机器自动,观众跟不上因果 |
|
|
23
|
+
| 光标 | 打字时常亮,之后 8f 周期闪烁;点击 176f,光标 185f 消失 | 打字中闪烁会读作卡顿;常亮→闪烁的切换本身就是"打完了"的信号 |
|
|
24
|
+
| 过滤退场 | 25 张非目标卡按阅读序 0.4f 间隔错峰,各 5f 淡出+下沉 8px | 同时消失读作页面崩溃;错峰哪怕只差 0.4f 也够 |
|
|
25
|
+
| 目标卡滑位 | 10f 滑到首行槽位,bezier(0.35,0,0.2,1),途中 sin 浮起 z 18px、scale +0.02、阴影随浮起变宽 | 终点必须是布局真实槽位(Q9),滑到画面中央悬停就假了 |
|
|
26
|
+
| 点击确认 | 两圈同心强调色 ripple(起点差 3f、各 10f、半径 14→54/78)+ 3px 描边 + 40px 辉光,随后相机 16f 推进 zoom 2.2 | 单圈 ripple 太轻看不见;推进交棒给 flash-cut 盖住换页硬切(组件见 assets/lib/FlashCut.tsx,用法:from = 切点 − 5,跨骑硬切两侧各 5f) |
|
|
27
|
+
| 搜索框 | 页面底色补丁盖掉纹理里的 placeholder(保留放大镜图标),文字层叠上去打 | 直接在截图纹理上叠字会和烤入的 placeholder 重影 |
|
|
28
|
+
|
|
29
|
+
## 声音
|
|
30
|
+
打字段钉 keyboard.mp3 并按 Sequence 截 24f 与动作严格等长(S4);点击钉 click-camera(全片最响 vol 0.6,S2 响度分层);网格飞走钉 whoosh-fast。
|
|
31
|
+
|
|
32
|
+
## 已知坑
|
|
33
|
+
- 初版打字+过滤"太快了"被返工(R3)——交互镜头的第一版几乎总是偏快,起稿就按 3f/字符
|
|
34
|
+
- 过滤后目标卡若不归位到真实槽位、悬浮在网格上方,读作假(Q9,曾因此近乎整文件重写)
|
|
35
|
+
|
|
36
|
+
## 参考实现
|
|
37
|
+
demos/interaction/type-and-filter/TypeAndFilter.tsx(原 template/src/aifl/live/SceneFlyIn.tsx 118–190 段)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: voice-waveform-live
|
|
3
|
+
一句话: 录音胶囊实时声纹——64 根细竖条随"说话"起伏,说话时中部高耸、停顿缩成点线,波形从右往左滚动;说→停→说→提交塌缩的完整表演
|
|
4
|
+
适用: 语音输入/AI 助手"正在听你说"的功能镜头;无 UI 内容可展示但需要持续活性撑画面的段落
|
|
5
|
+
时长: 172f(~5.7s:入场 14f + 说 1.4s + 停 0.8s + 说 1.4s + 提交塌缩 / 收进气泡 0.8s + hold 0.7s)
|
|
6
|
+
能量: 中(功能性活性,不是炫技)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
本卡是**功能性**声纹:"正在听你说"的实时回执。命门在因果:
|
|
11
|
+
波形跟"用户说话"跳、是产品功能本身,不是跟 BGM 跳的装饰包装。
|
|
12
|
+
说话时波形高耸、停顿时缩成一排点线、历史向左滚出——观众从波形的起伏读出"它真的在听",一段 6s+ 的画面全靠这份
|
|
13
|
+
活性撑住,不需要任何别的内容。与 gauge-readout-moves 分工:仪表是
|
|
14
|
+
"报一个数值"的机械仪式,本卡是"持续监听"的生命体征,没有终值。
|
|
15
|
+
|
|
16
|
+
## 动效核心
|
|
17
|
+
- **帧确定的伪随机是命门**:mulberry32 按整数采样点取值 + smoothstep
|
|
18
|
+
相邻插值(值噪声),无 Math.random——渲染可复现且相邻帧连续
|
|
19
|
+
- 滚动感:第 i 条采样时刻 = f - (N-1-i)·1.6,最右条是"现在",
|
|
20
|
+
历史向左流;不是条在平移,是每条在读不同时刻的信号
|
|
21
|
+
- 条高 = 说话包络(梯形 seg 说/停两档 + 音节噪声 0.55+0.45·noise)
|
|
22
|
+
× 中部空间权重 sin^0.8 × 逐条 jitter(0.35+0.65·noise);
|
|
23
|
+
静默钳到 6px 点线
|
|
24
|
+
- 提交:按钮 3f 压缩 scale 1→0.82→1 回弹,波形 12f ease-in 塌缩
|
|
25
|
+
到 0.06,麦克风呼吸环随包络外扩
|
|
26
|
+
- demo 加了一层实时转写(92px 粗体):每个词在它那一拍的音节起点由虚到实升起,刚说出的词是强调色、
|
|
27
|
+
几帧后沉成墨色,停顿时尾光标闪烁;提交时整段转写上移缩小收进强调色消息气泡——
|
|
28
|
+
"停"从字和波形两处同时读得到,结尾帧是一张完整的对话海报
|
|
29
|
+
|
|
30
|
+
## 参数表
|
|
31
|
+
| 参数 | 典型值 | 调节手感 |
|
|
32
|
+
|------|--------|----------|
|
|
33
|
+
| 条数/间隙 | 64 条,gap 5px(1240px 宽胶囊,声纹区 ≈820px) | 少于 40 条读作均衡器;密过 90 条单条读不出起伏 |
|
|
34
|
+
| 滚动速率 | 1.6 帧/采样点 | 快了历史刷太快像故障;慢了"滚动感"消失变成原地抖 |
|
|
35
|
+
| 说停包络 | seg 梯形 rise 5f / fall 7f;demo 说 15–57f、停 80–124f | 停顿段必须真的塌成点线——没有"停"的对比,"说"就不成立 |
|
|
36
|
+
| 音节噪声 | 0.55+0.45·noiseAt(t/4.5) | 去掉音节层波形是平滑山丘,读不出"一句话的顿挫" |
|
|
37
|
+
| 中部权重 | sin^0.8 空间包络 | 无权重全场等高像均衡器;指数 >1.5 中间独秀像单根跳 |
|
|
38
|
+
| 静默钳位 | max 6px 点线(点线用中性弱色,说话条用强调色渐变) | 钳 0 波形消失读作断线;点线是"在听但你没说" |
|
|
39
|
+
| 提交塌缩 | 12f ease-in 到 0.06 + 按钮压缩回弹 3f | 塌缩是"这段话被收走了";淡出读不出提交语义 |
|
|
40
|
+
| 转写节奏 | 词出现帧 = 该词音节起点(包络 rise 段内),8f 由虚到实 | 词比波形早出读作字幕先于声音;晚 10f 以上读作延迟识别 |
|
|
41
|
+
| 收进气泡 | 22f EASE.swift 上移 + 缩到 0.72,气泡底 / 白字 10f 跟进 | 只淡出转写读不出"发出去了" |
|
|
42
|
+
|
|
43
|
+
## 已知坑
|
|
44
|
+
- demo 在 video-shotcraft 语音口述分镜("Shotcraft is listening")的暖色亮场上调校通过——参数是调校起点非实战定稿,
|
|
45
|
+
首次实战须以真实素材回验
|
|
46
|
+
- **有音轨时波形必须跟人声走**:片子若配了真旁白/人声,包络的说停段要对齐音轨的说停,错位一秒就穿帮;无人声配乐片才可用纯合成包络
|
|
47
|
+
- demo 是亮场暖白实底胶囊(顶部 1.5px 内高光 + 两层落地影);暗场片子换成 1.5px 渐变边玻璃胶囊即可,声纹参数不变
|
|
48
|
+
- 麦克风已是 SVG 线性图标(早期 emoji + grayscale 占位已换掉),实战按品牌图标库替换即可
|
|
49
|
+
- 声音:本卡画面就是"声音的形状",配人声最顺;提交钮一声轻 pop + 塌缩配短促下滑音
|
|
50
|
+
|
|
51
|
+
## 参考实现
|
|
52
|
+
demos/interaction/voice-waveform-live/
|
|
53
|
+
(VoiceWaveformLive.tsx)
|
|
54
|
+
原片出处:raycast-teams 19.5–26.0s
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brand-ink-open
|
|
3
|
+
一句话: 墨线十字准星描画→字标逐字压印→打字机副标→满一秒静止再上浮消散
|
|
4
|
+
适用: 品牌开场;任何"先立名号再进产品"的片头
|
|
5
|
+
时长: 约 2.8s(83f)
|
|
6
|
+
能量: 低(起步位,为后续镜头留爬升空间)
|
|
7
|
+
标签: typography
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
第一拍先给品牌记忆点:观众在任何产品画面出现之前,先看清并记住名字。安静、纸墨质感、有一个完整的静止时刻。
|
|
12
|
+
|
|
13
|
+
## 动效核心
|
|
14
|
+
- SVG 十字准星笔画描画(pathLength dashoffset),先竖后横,画完淡出
|
|
15
|
+
- 字标逐字 letterpress:scale 从大压到 1 + blur→0,字底强调色(模板片为琥珀)glint 短划闪过
|
|
16
|
+
- kicker 副标打字机逐字符出现,强调色块光标周期闪烁
|
|
17
|
+
- lockup 完整静止满 1 秒,然后整体上浮 + 缩小 + 淡出,交棒 dashboard
|
|
18
|
+
|
|
19
|
+
## 参数表
|
|
20
|
+
| 参数 | 典型值 | 调节手感 |
|
|
21
|
+
|------|--------|----------|
|
|
22
|
+
| 准星描画 | 竖线 0→9f、横线 8→18f,24→34f 淡出 | 描画完必须淡出,残留准星会和字标抢焦点 |
|
|
23
|
+
| 字标逐字 | 第 i 字 delay=10+i·3、12f;scale 1.6→1(origin center bottom)+ blur 6px→0 | "opacity+位移/scale+blur→0"是全片入场三件套定式,缺 blur 会显得硬 |
|
|
24
|
+
| kicker 打字机 | 0.7f/字符(28 起 ~43.4 完),光标 2f 周期闪、74f 停闪 | 0.7f/字符只适用于装饰性小字;正文交互打字要 3f/字符(对照 type-and-filter,用户嫌快返工过) |
|
|
25
|
+
| 品牌 hold | 46→76 帧整整 1 秒 | 硬底线:用户两轮点名"出现后延长停留1秒"(R1);短于 1s 必返工 |
|
|
26
|
+
| 退场 | 7f 上浮 40px + 缩 12% + 淡出 | 退场快于入场——观众已读完,拖长反而泄气 |
|
|
27
|
+
|
|
28
|
+
## 声音
|
|
29
|
+
品牌落定钉 transition-soft(模板片钉在 f12),brand→dashboard 运镜钉 whoosh-fast(f78)。SFX 逐拍钉帧、声明式表管理(S2);音色走电影系词汇,不用游戏 UI tap(S1)。
|
|
30
|
+
|
|
31
|
+
## 已知坑
|
|
32
|
+
- hold 要给的是 wordmark 落定时刻,不是普通字卡/内容卡(R1)——曾把 hold 错加给普通内容卡后很快回滚;指代含糊的"停留"反馈先确认对象再动手(P3)
|
|
33
|
+
- 开场能量必须低起步:全片能量曲线低开→中段推进→outro 峰值,开场炫技会压死后面的爬升(对照 Q8 的能量曲线要求)
|
|
34
|
+
|
|
35
|
+
## 参考实现
|
|
36
|
+
demos/typography/brand-ink-open/BrandInkOpen.tsx(原 template/src/aifl/live/SceneOpen.tsx 帧 0–83 段)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: crane-rise-reveal
|
|
3
|
+
一句话: 升降臂拉升揭示——开场怼在一行数据特写,相机沿 Y 轴减速升起后拉,行行涌入直到整面 dashboard 铺满全幅
|
|
4
|
+
适用: "从细节到全局"的开场定场;与 drone-dive-landing(全局→单点俯冲)互为反向
|
|
5
|
+
时长: 5.5s(165f:特写 hold 24f + 拉升 102f + 落定/余波/静止 39f)
|
|
6
|
+
能量: 中高(持续单向运动,无冲击拍)
|
|
7
|
+
标签: camera、data
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
开场定场库内已有 drone-dive-landing——从上帝视角砸进 hero 特写,
|
|
12
|
+
"全局→焦点"。本卡是它的镜像:"焦点→全局"——先怼在一行真实数据上
|
|
13
|
+
让观众看清"这是什么",再升降臂式拉升后退,一排排内容涌入画面,
|
|
14
|
+
最后整面产品铺满——"你看到的这一行,只是这一面墙的一格"。
|
|
15
|
+
适合以产品体量/内容丰富度为卖点的开场;两卡同片只用一个方向。
|
|
16
|
+
|
|
17
|
+
## 动效核心
|
|
18
|
+
- transform-origin 固定左上,联动公式 `translate = 屏幕中心 − 对准点×scale`;
|
|
19
|
+
对准点沿 (追踪行左段)→(页面中心) 与 scale 3.0→1.0 **共用同一条
|
|
20
|
+
不对称缓动 bezier(0.2,0,0.25,1) 进度**——一条 p = 一台相机一次机动(同 C 式判例)
|
|
21
|
+
- 减速曲线(先快后慢)是"升降臂"的手感:起步有劲、临顶缓停;零速起步、19% 处达峰
|
|
22
|
+
(≈2.3× 平均速),不从 hold 瞬间跳到最高速;hold 内相机先"吸一口气"推近 1.5% 作预备
|
|
23
|
+
- 对焦:特写 hold 时只有被追踪的那一行是实的(钴蓝底 + 行首呼吸追踪点),其余行压到 38%,
|
|
24
|
+
起吊后 ~26f 回满——先让观众看清"这一个镜头",再看全部
|
|
25
|
+
- 逐行洗光:相机可见区上缘 `visTop = fy − 540/s` 首次越过某行顶边时,
|
|
26
|
+
该行一道强调色洗光从行首掠到行尾(3f 起、6f 后 18f 落,带 1px 强调色描边)——
|
|
27
|
+
"涌入"的可读性来源;触发帧逐帧解出,与运镜严格同步
|
|
28
|
+
- 体量感:页头 KPI(今日渲染帧数)与拉升同期从 0 数到 48,210(expo-out,与运镜同帧收),窗口阴影随拉开
|
|
29
|
+
从贴近升到悬浮高度,舞台点阵按 0.35 视差慢移——窗口最后读作舞台上的一件实物
|
|
30
|
+
- 余波:落定后追踪行的状态胶囊由「Rendering」翻成「Rendered」(弹簧 damping 16 + 对勾描画 + 进度条补满),
|
|
31
|
+
hold 段里唯一的小事件
|
|
32
|
+
- 白底上"提亮"不可见,**加深/上色才可感**(判例:brightness 提亮在白卡上等于没做)
|
|
33
|
+
|
|
34
|
+
## 参数表
|
|
35
|
+
| 参数 | 典型值 | 调节手感 |
|
|
36
|
+
|------|--------|----------|
|
|
37
|
+
| 起点特写 | scale 3.0,对准追踪行左段(镜头号 / 转场 63px 大字;取景下缘停在窗口底边上方,不露窗外) | hold ≥20f 让"这是一行数据"可读再起飞 |
|
|
38
|
+
| 拉升 | 102f bezier(0.2,0,0.25,1),scale 3.0→1.0 | 快于 80f 行洗光追不上;慢于 130f 中段拖 |
|
|
39
|
+
| 对焦 | 非追踪行 38% → 100%,起吊后 26f | 不压暗时特写里每行同权,观众不知道看哪一行 |
|
|
40
|
+
| 行洗光 | 越线触发,强调色从行首掠过 + 细描边,~24f | 洗光跟不上相机(固定间隔触发)立刻穿帮 |
|
|
41
|
+
| 收尾 | 满幅后不再补推,靠状态翻转让 hold 活着,静止 ≥30f | R1;满幅帧即标准构图 |
|
|
42
|
+
|
|
43
|
+
## 已知坑
|
|
44
|
+
- demo 在虚构数据的手搓产品窗口(video-shotcraft 渲染队列)上调校通过——参数是调校起点非实战定稿,
|
|
45
|
+
首次实战须以真实素材回验
|
|
46
|
+
- 起点特写 = 一行内容被放大 3.2 倍盯着看,真实素材先过
|
|
47
|
+
审美准则 Q2 的高分辨率栅格化技法,低倍截图开场即糊
|
|
48
|
+
- 快速拉升段可包 CameraMotionBlur(参数见 deck-deal-flyin 运动模糊行),
|
|
49
|
+
但只包前半程快速段——临顶慢速段包了会抹软文字(轮 #8 判例);
|
|
50
|
+
半透明洗光叠层别放进 CameraMotionBlur(多重采样叠加出竖条伪影),单独一层同相机
|
|
51
|
+
- 与 drone-dive-landing 同片不并用(一升一降互为镜像,观众读作同一招);
|
|
52
|
+
与 crane 语义最近的 tilt-reveal 未入库,别混称
|
|
53
|
+
|
|
54
|
+
## 参考实现
|
|
55
|
+
demos/opening/crane-rise-reveal/
|
|
56
|
+
(CraneRiseReveal.tsx)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dataviz-landscape-open
|
|
3
|
+
一句话: 暗场支流线束地景开场——多条流线汇入主干、虚构 ID 标签浮在线上、相机重景深低速飞越
|
|
4
|
+
适用: 品牌级抽象开场("数据宇宙"隐喻),接亮场产品段或字标;与 glow-flyline-moves 分工:那卡是段落内卡片之间的连线叙事,本卡是开场专用的全画幅地景
|
|
5
|
+
时长: 5–8s(开场氛围段,一支片 ≤1 次;demo 180f)
|
|
6
|
+
能量: 低开缓升(起步位,为后续爬升留空间)
|
|
7
|
+
标签: data、camera
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
Linear Releases 发布片开场实证的品牌级开场品类:把产品背后的数据世界
|
|
12
|
+
拍成一片**暗场地景**——支流线束从画面深处汇入一条主干("无数工作流
|
|
13
|
+
汇成一个产品"的隐喻),真实感来自三样东西:①虚构 issue/任务 ID 标签
|
|
14
|
+
浮在线上(demo 用 video-shotcraft 的镜头号 + 运镜名:每条支流是一个镜头,汇成一支成片)(观众认出"这是我每天看到的那种东西");②重景深——近景大虚焦
|
|
15
|
+
流过、中景标签清晰可读、远景渐隐,三层纵深让平面 SVG 读作空间;
|
|
16
|
+
③相机低速匀稳飞越——这是氛围段不是炫技段,速度感交给后面的镜头。
|
|
17
|
+
手搓 UI 合规依据:非复刻场景(页面上不存在此画面),按核心理念 1
|
|
18
|
+
修订版走质量+表达明确性门槛。
|
|
19
|
+
|
|
20
|
+
## 动作阶段
|
|
21
|
+
| 阶段 | 帧段(@30fps 参考,demo 180f) | 内容 |
|
|
22
|
+
|------|------|------|
|
|
23
|
+
| 1 生长 | f0–70 | 主干由近及远 draw-on 奔向消失点(36f out-cubic,笔尖光点),支流从两侧画外错峰 4–6f 生长、切向汇入 |
|
|
24
|
+
| 2 飞越 | f0–180 | 相机低空沿河道前飞 + 横向缓移(与生长期跨骑),标签 f44–96 非均匀错峰立起,生长完的线上亮脉冲流向汇点 |
|
|
25
|
+
| 3 交棒 | f104–180 | 标签停止新增;消失点亮起一团强调色光,天空落一行大标题;相机 bezier 减速缓停,hold ≥30f |
|
|
26
|
+
|
|
27
|
+
## 参数表
|
|
28
|
+
| 参数 | 典型值 | 调节手感 |
|
|
29
|
+
|------|--------|----------|
|
|
30
|
+
| 线束规模 | 支流 8–14 条汇入 1 条主干(demo 11 条,含 1 条贴镜头掠过的近景支流) | 超过 ~16 条读作屏保/科技模板;主干必须唯一(单主角原则的地景版) |
|
|
31
|
+
| 地景投影 | 线画在真透视地平面上:针孔投影 `sx = 960 + F·(X−camX)/Z'`、`sy = 地平线 + F·camH/Z'`,F 1100、相机高 220、地平线 0.39 帧高 | 平面 SVG 横移要手工凑三层视差;真投影的近大远小、视差、汇聚全部白给 |
|
|
32
|
+
| 汇流拓扑 | 支流以 bezier 切向汇入主干(汇入点切线 = 主干切线),主干走向让消失点落在画面右 1/3 | 垂直相交读作电路图不是水系;消失点居中构图死板 |
|
|
33
|
+
| 景深 | 按投影深度逐段分层:Z' <~1000 进模糊层(blur 11px、线宽 ×1.3)、中景锐利、Z' >2600 起雾化变淡;线宽 = 世界线宽·F/Z' | 近景不虚焦则读作线框图;远景不雾化会在地平线挤成一团亮 |
|
|
34
|
+
| 相机飞越 | 前飞 950 世界单位 / 180f,bezier(0.3,0.3,0.55,1):开场即在飞、尾段减速缓停;叠横向缓移 −140→110 | 快了变追逐镜头(那是 crash-zoom 的活);只前推不横移时远近错动弱 |
|
|
35
|
+
| 线段绘制 | 每条线按弧长等距采样后逐段画(逐段线宽/透明度),**butt 端帽** | round 端帽在半透明线上每个接缝叠一圈,整条线读成串珠 |
|
|
36
|
+
| 流动感 | 生长完成后沿线窄峰亮脉冲低速漂向汇点,只在中远景显形(近处一段在屏上很长,逐段明暗读成台阶) | 生长期结束后无流动元素,后半段退化成"路线图飞越"不是"数据流" |
|
|
37
|
+
| 标签 | 中景 5–9 枚(demo 6):强调色方块图钉落在线上 + 短立杆 + 等宽 ID 胶囊,按 1500/Z' 透视缩放(钳 0.7–1.7);远的先画近的后画 | **立杆世界高度要远低于相机高度**——杆高≈相机高时所有标签都投影到地平线上挤成一排;位置要逐帧投影核过起止两端都不叠 |
|
|
38
|
+
| 生长节奏 | 主干 30–40f out-cubic 先行,支流每条错峰 3–6f | 全部同帧生长读作 loading 动画 |
|
|
39
|
+
| 收尾 | 交棒帧前 ≥15f 标签停止新增、相机减速不急刹;标题(眉题 + 两行 108px)逐词升起 | 氛围段急刹是一次可见的顿挫(glow-orb 收敛判例同源) |
|
|
40
|
+
|
|
41
|
+
## 已知坑
|
|
42
|
+
- 借鉴来源:Linear Releases 开场(进化轮 #3 breakdown #7),单例样本
|
|
43
|
+
——参数给区间不给教条,首次实战以真实素材回验
|
|
44
|
+
- 与 glow-flyline-moves 别混用在相邻段落:两卡都是"暗场发光线",
|
|
45
|
+
背靠背出现读作全片只会一招;同片都要用时中间隔 ≥2 个亮场镜头
|
|
46
|
+
- 暗场进出成本同 glow 卡:接亮场产品段用 shot-transitions 藏切族垫,
|
|
47
|
+
别生切明暗
|
|
48
|
+
- 线条纯白全亮会糊成蛛网——亮度按层拉开(见参数表),中景才是主角层;
|
|
49
|
+
主干/支流给 1–2px 微辉光(soft glow)压出"发光线"氛围,全无辉光读作线框图(Q4 单点光效许可内)
|
|
50
|
+
- 标签字号在目标画幅下 ≥18px 等效,否则"可读"沦为装饰噪点(Q6 同源)
|
|
51
|
+
- 声音:铺 riser/低频 pad 底噪,标签浮现不逐枚打点(批量不逐个发声,
|
|
52
|
+
S2 同源);交棒帧一次 whoosh/impact 交给下一镜头
|
|
53
|
+
|
|
54
|
+
## 参考实现
|
|
55
|
+
demos/opening/dataviz-landscape-open/
|
|
56
|
+
(DatavizLandscapeOpen.tsx)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fracture
|
|
3
|
+
一句话: 5×5 瓦片从 3D 碎片态按中心波纹逐圈聚合成整面海报,停一拍亮字,随后全部碎片背离中心加速旋转飞出画面
|
|
4
|
+
适用: 开场第一镜"从混沌到成形"的品牌/海报揭示;倒放或只取后半可作硬转场
|
|
5
|
+
时长: 约 5.2s(156f@30fps;聚合 0–2.6s · hold 1s · 飞散 1.5s)
|
|
6
|
+
能量: 高(两头高能、中段静止,适合压 BGM 重音起收)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 意图
|
|
10
|
+
把"产品成形"拍成物理事件:碎片从三维空间各自带着旋转飞回原位,观众看着一面完整画面从无序中长出来;hold 读字后再整体炸出画面,把注意力干净地交给下一镜。进出对称,一支素材可正反两用。
|
|
11
|
+
|
|
12
|
+
## 动效核心
|
|
13
|
+
- 25 块瓦片各自持有确定性伪随机的初始姿态:位移 ±450/±300/±490px(x/y/z)+ 三轴 ±180° 旋转,由 `rand(seed)` 生成,渲染可复现
|
|
14
|
+
- 入场按曼哈顿距离波纹 stagger:`delay = (|r-2|+|c-2|) * 0.045`,中心先就位、四角最后,每块 0.34 时长走 `bezier(0.42,0,0.3,1)`(落位前长减速);落位后 ~10f 一次 ≤2.5° 的 rotateX 阻尼小摆 = 入槽"咔哒"
|
|
15
|
+
- 25 块切的是**同一张海报**(每块按格位偏移取自己那一格),拼齐才看见完整画面;瓦片按朝向做明暗(越侧对镜头越暗)
|
|
16
|
+
- opacity 以 `tin * 2.5` 快速升到 1——碎片远处即近乎实体,避免"淡入感"稀释物理感
|
|
17
|
+
- 海报上印眉题 INTRODUCING + video-shotcraft 字标(标志 + 小写字标),随瓦片切片,t=0.42–0.52 亮起占住 hold 段视线;退场不单独淡出,字和标志跟着碎片一起被撕走;hold 段整面极缓推近 3%
|
|
18
|
+
- 退场不淡出:每块沿背离画面中心的方向(`atan2` 计算 + ±0.8 抖动)飞出 620–880px 并加旋 ±150°,`inCubic` 加速,实体出画
|
|
19
|
+
|
|
20
|
+
## 参数表
|
|
21
|
+
| 参数 | 典型值 | 调节手感 |
|
|
22
|
+
|------|--------|----------|
|
|
23
|
+
| 网格 | 5×5,380×230px,perspective 900px | 瓦片更多波纹更细腻但单块存在感下降;persp <700 透视夸张易穿帮 |
|
|
24
|
+
| 初始散布 | dx±450 / dy±300 / dz −210~+490 | 放大散布开场更混沌,但聚合路径变长需同步加 delay 窗口 |
|
|
25
|
+
| 波纹间隔 | 0.045/环(曼哈顿距离) | >0.07 波纹感变"逐圈点名";<0.03 全体近同时到位失去波纹 |
|
|
26
|
+
| 入场时长 | 每块 0.34(inOutCubic) | 缩短更"啪"地成形;配合波纹间隔保证末块 ≤0.6 就位 |
|
|
27
|
+
| 退场窗口 | 0.70 + delay×0.5 起飞,0.18 时长(inCubic) | **窗口必须收在 t≈0.97 前**:曾因 0.72+delay×0.7/0.26 导致角瓦片出画不完、卡在画框边一秒(判例 2026-08-05) |
|
|
28
|
+
| 退场距离 | 620–880px(背离中心 + 随机抖动) | 距离不足会残留在画框边;中心瓦片方向随机(无"背离"可言) |
|
|
29
|
+
| 海报配色 | `ACCENT_HUE=218` 派生整张海报(冷色深场 + 左上柔光 + 底部发光地平线弧) | 改一个色相常量整面换色;拼缝 0.5 设计 px,再宽会把字切缺笔 |
|
|
30
|
+
|
|
31
|
+
## 已知坑
|
|
32
|
+
- 退场用位移出画而非 opacity 淡出——淡出会读作"消失"而非"飞走",物理感尽失;改参数时保持 `opacity = min(1, tin*2.5)` 不挂退场项
|
|
33
|
+
- 所有随机量必须走确定性 `rand(seed)`(等价 Remotion `random()`),真随机会渲染间抖动
|
|
34
|
+
- hold 段(t≈0.6–0.7)是唯一读字窗口,加长文案要同步拉开 label 淡出与首块起飞的间隔,否则字还没读完瓦片已散
|
|
35
|
+
- 标志别跨拼缝:拼缝会把标志切出一条细缝/残边,读作坏图。demo 把字标中心对准第 3 行瓦片中心、字号定 22 让标志整个落在第 2 列瓦片里,碎片飞散时标志随一块瓦片完整飞走;换标志尺寸或网格时同步重算
|
|
36
|
+
- 用作转场时建议只取 t=0.7–1 的飞散段倒放/正放各半,两侧素材分别贴在瓦片面上需另做纹理映射
|
|
37
|
+
|
|
38
|
+
## 参考实现
|
|
39
|
+
demos/opening/fracture/
|
|
40
|
+
(Fracture.tsx)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: icon-field-colorize
|
|
3
|
+
一句话: 灰阶小图标点阵错峰浮现铺满全屏,停一拍后多道品牌色横带波纹极快向下扫翻全场——"功能全景先摆满,品牌一瞬间点亮"的开场/收束卡
|
|
4
|
+
适用: 开场铺陈产品能力面(图标=功能宇宙)再一举打上品牌色;功能集合页、生态/集成规模展示、片头 logo 前垫场
|
|
5
|
+
时长: 浮现 ~45f 错峰 + 静置 ~10f + 翻色 12–45f + 终态静置;全段 3–6s(demo 170f:翻色走 30f 档 + 标题落版 + 终态 hold 1s)
|
|
6
|
+
能量: 中(浮现是铺垫,翻色瞬间是唯一爆点)
|
|
7
|
+
标签: ui-entrance、outro
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 意图
|
|
11
|
+
先用灰阶把"多"摆足——上百个小图标错峰浮进来铺满画面,灰阶保证
|
|
12
|
+
读作背景纹理不抢戏;停一拍让观众意识到"摆满了",然后品牌色以
|
|
13
|
+
横带波纹形式极快扫过全场,灰世界一瞬间被点亮。命门在**翻色不是
|
|
14
|
+
同帧硬翻**:原片实测是 ~0.5s 内多道色波依次向下快扫(蓝先覆盖全场,
|
|
15
|
+
橙/绿/红依次覆盖更低行带),终态呈四色横带分层——波纹感让"点亮"
|
|
16
|
+
有方向和速度,硬翻只读作换了张图。
|
|
17
|
+
|
|
18
|
+
## 动效核心
|
|
19
|
+
- 图标场:150–200 个小图标网格排布(行间半格错位),灰阶 3–4 档
|
|
20
|
+
随机;mulberry32 定分组/灰度/形状;demo 把图标装进键帽式圆角方块——暗场里
|
|
21
|
+
灰阶 = "还没通电"的深色键帽(暖黑底、发丝边、顶沿受光、暗灰字形),
|
|
22
|
+
翻色 = 通电:整块变成发光色块 + 深色字形 + 同色泛光
|
|
23
|
+
- 浮现批次按离画面中心距离(75%)+ 噪声分组,读作从中心向外铺开
|
|
24
|
+
- 浮现:分 10 批错峰淡入(批间 4.4f + 批内 ≤3f 抖动),每个带
|
|
25
|
+
0.6→1.06→1 微弹(overshoot 一次过冲回落)+ 上浮 10px
|
|
26
|
+
- 静置一拍(~18f):让"铺满"被读到;最后 10f 整场压暗 12% 作蓄力(吸气),第一道波到达时回满
|
|
27
|
+
- 翻色:多道色波按行推进,行差 ~1.4f + 列微倾 0.25f + 每图标 ≤1.5f
|
|
28
|
+
抖动(斜切波前沿,不是整行同帧);每道波从自己的起始行向下覆盖,
|
|
29
|
+
后波覆盖更低行带 → 终态多色横带
|
|
30
|
+
- 单枚翻色 4f:新色**自上而下 clip 灌满**键帽(与波方向一致,不做透明度混合)+ 1.22x 正弦 pop,
|
|
31
|
+
灌满后一记 5f 的 screen 白闪 + 泛光过冲,给波前沿"通电"的质感
|
|
32
|
+
- 光溢出:每行亮起后身后舞台染上同色横向光带(强度 = 该行已亮比例),整片原野真的亮起来
|
|
33
|
+
- 落版:光稳定后中心起一层径向暗幕(只压中心,四周光保留),video-shotcraft 字标(眉题位)+ 两行 132px 标题「Every shot, / one place.」逐词升起;第二行别超过暗幕宽度,否则字边压在亮键帽上
|
|
34
|
+
|
|
35
|
+
## 参数表
|
|
36
|
+
| 参数 | 典型值 | 调节手感 |
|
|
37
|
+
|------|--------|----------|
|
|
38
|
+
| 图标数 | 170(17×10 @1080p,格距 108×106,键帽 66px) | <100 读不出"原野";>250 单个太小翻色 pop 看不见 |
|
|
39
|
+
| 浮现总长 | ~48f(10 批 × 4.4f + 尾批淡入 7f) | 太快读作闪现;>60f 观众等不及爆点 |
|
|
40
|
+
| 翻色总长 | 原片 ~12f 全场完成;demo ~30f | 越快越爆;教学/慢节奏场合才拉长 |
|
|
41
|
+
| 波数与色 | 4 道,同色系日出渐变(金 → 琥珀 → 橙 → 珊瑚红) | 1 道=单色点亮也成立;四色跨色相(蓝/橙/绿/红)读作彩虹,同色系分段更像品牌 |
|
|
42
|
+
| 行差 | 1.4f/行 + 列 0.25f 微倾 | 行差 >3f 波读作逐行扫描仪;0 = 硬翻 |
|
|
43
|
+
| 翻色 pop | 1.22x 正弦 4f + clip 灌满 | 无 pop 波前沿读不出来;>1.4x 图标互相打架 |
|
|
44
|
+
|
|
45
|
+
## 已知坑
|
|
46
|
+
- demo 在手绘简笔图标上调校通过——参数是调校起点非实战定稿,
|
|
47
|
+
首次实战须以真实素材回验
|
|
48
|
+
- 翻色别用透明度交叉淡入:暖色半透明叠在暗底上会过一段橄榄/灰泥色(判例),用 clip 擦入;
|
|
49
|
+
白闪也要等新色盖满后再起,否则半透明叠层上的白闪发灰
|
|
50
|
+
- **翻色不许同帧硬翻**——原片密帧核实为多道波纹快扫(bear-app
|
|
51
|
+
25fps 密帧:蓝→橙/绿/红约 0.5s 内完成),硬翻读作换图无"点亮"感
|
|
52
|
+
- 图标需可辨认的实心简笔形(心/星/闪电/对勾…);抽象色块读不出
|
|
53
|
+
"功能宇宙"语义
|
|
54
|
+
- 与 theme-switch-moves 分工:那张是 UI 界面明暗主题切换;本卡
|
|
55
|
+
是装饰性图标场的品牌色点亮,不承载界面语义
|
|
56
|
+
|
|
57
|
+
## 参考实现
|
|
58
|
+
demos/opening/icon-field-colorize/
|
|
59
|
+
(IconFieldColorize.tsx)
|
|
60
|
+
原片出处:bear-app.mp4 ≈0.0–3.0s
|