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,118 @@
|
|
|
1
|
+
# 20-pixel · 像素冒险 / 8-bit
|
|
2
|
+
|
|
3
|
+
上游:`src/motion/mgstyles/upstream/demos/20-pixel/film.js`(70 973 B / 914 行)、`cues.json`(888 B)。内部分辨率写死 `const W = 320, H = 180`,输出 1920×1080 正好 ×6;150 BPM / 30fps / 10.000s(一拍 12 帧)。`window.DEMO.motionBlur` 只 `samples:1`,味道全来自 CRT 后期。提示词原文用 `mg_style {action:"read",slug:"20-pixel"}` 取。
|
|
4
|
+
|
|
5
|
+
## 1. 一眼认出
|
|
6
|
+
|
|
7
|
+
- **每个像素是 6×6 输出方块**:1px 描边在成片里是 6px 实心块,没有抗锯齿,没有亚像素位移。
|
|
8
|
+
- **同屏 ≤32 色**,全部来自 `film.js:17` 的 `HEX`(QUEST-32);渐变只有 4×4 Bayer(`BAY` / `bay(x,y)`),天空 5 级色阶。
|
|
9
|
+
- **动作是阶梯的**:跑步 `Math.floor(f/3)`(10fps)、星星 `Math.floor(f/4)`、金币 `Math.floor(f/2)`(15fps)。
|
|
10
|
+
- **横向卷轴**:`GROUND = 150`,主角屏幕 x 钉在 96(`cam(f) = hx(f) - 96`),相机停在 `CAM_END = 260`;视差 ×0.125 / ×0.3 / ×0.55 / ×1.4。
|
|
11
|
+
- **CRT 包住一切**:桶形 `k = 0.03`、按源像素行扫描线(6 输出 px 一条)、8 方向辉光、四角暗角。
|
|
12
|
+
|
|
13
|
+
## 2. 色板
|
|
14
|
+
|
|
15
|
+
| 角色 | hex | 用在哪 |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| 描边紫黑 | `#0d0b1a` | 精灵 1px 描边(slot 0)、夜间最暗部 |
|
|
18
|
+
| 夜蓝 | `#1b1a33` | 天空底、对话框最外层 |
|
|
19
|
+
| 天蓝 | `#5b9bea` | 正午天空、水面高光(远山 `#2a2f5a`、云 `#8cc8f5`) |
|
|
20
|
+
| 暖黄 | `#ffd166` | 金币、LOGO 立体面、光池 |
|
|
21
|
+
| 白 | `#ffffff` | 高光点、白闪、`PRESS START` |
|
|
22
|
+
| 品牌红 | `#d23c3c` | 主角围巾、丝带、UI 强调 |
|
|
23
|
+
|
|
24
|
+
机制两级间接:`IB` 是 slot 索引(非 RGB),`SM` 每 slot 存 DAY/AFT/GOLD/SUNS/DUSK/NIGHT 六列索引,`makeLUT(f)` 每帧展开成 `HEX` 的最终色号;换 stage 就是换 LUT(`stageOf(f)` 选列,转场 4 帧用 `mixIdx` 两级混合)。`theme.ts` 只放 6–8 个常量,其余留 `PALETTE: string[]` 按下标取。
|
|
25
|
+
|
|
26
|
+
**禁止色**:任何不在 `HEX` 里的颜色。尤其 `#808080` 灰、`#000000`(描边是带紫的 `#0d0b1a`)、任何高饱和紫——一出现就不像 8-bit。
|
|
27
|
+
|
|
28
|
+
## 3. 字体与字排
|
|
29
|
+
|
|
30
|
+
**当前优先使用插件内置字体:** 英文 HUD 使用 Press Start 2P,中文使用 Fusion Pixel 12;仍需在低分辨率网格上排版并用最近邻放大。
|
|
31
|
+
|
|
32
|
+
下方保留原片排版参数及旧版系统替代方案;只有内置字体不适合或不可用时才参考旧系统栈及其损失说明。
|
|
33
|
+
|
|
34
|
+
原片写 `'Press Start 2P'`(HUD 数字 8px)和 `'Fusion Pixel 12'`(中文 12px),但**字体不是关键**:`glyph(ch, fam, size)` 先把字画进离屏 canvas,再按 alpha 阈值二值化成 1-bit mask(`gcache` 缓存),`text()` 用 1px 偏移补描边。像素感来自字被量化到源像素栅格。
|
|
35
|
+
|
|
36
|
+
旧版没有内置字体时使用的系统替代栈:等宽 `"Consolas","JetBrains Mono",monospace`;中文 `"Microsoft YaHei","PingFang SC","Noto Sans SC",sans-serif`;粗标题 `"Arial Black","Impact",sans-serif`。
|
|
37
|
+
|
|
38
|
+
**损失**:Consolas 是矢量字,12px 中文会糊成灰块,直接 `fillText` 就破了 1-bit。必须照抄 `glyph()`:按 1× 画到 320×180 离屏 canvas,`getImageData` 后 alpha > 0.5 记 1,再 ×6 放大。字号只取 8/12/16,字距按整数源 px。
|
|
39
|
+
|
|
40
|
+
## 4. 动效语法
|
|
41
|
+
|
|
42
|
+
- **150 BPM = 12 帧/拍**;`beat 0.4 / bar 1.6`。
|
|
43
|
+
- **缓动只有两种**:物理用**整数关键帧表**——落地挤压 `SQT = {0:[6,6],1:[3,3],2:[-4,-2],3:[-4,-2]}`、回弹 `BOUNCE = {0:0,1:-5,2:-2,3:0}`、震屏 `logoShake(f)` 6 帧 `[3,-3,2,-1,1,0]`;位移用抛物线 `dy = Math.round(-128*(1-(i/12)**2))`。**没有** `Easing.bezier`,也不该有。
|
|
44
|
+
- **禁用**:`spring()`、作用在像素坐标上的连续缓动(必出半像素)、超过 2 帧的 opacity 渐变、`<CameraMotionBlur>`。
|
|
45
|
+
- 签名动作:
|
|
46
|
+
1. **跑跳**(`jumps 0.3 / 2.0`,落地 `lands 0.9 / 2.8`):12 帧抛物线 + 4 帧挤压,落地同帧 4 粒 `bay` 扬尘。
|
|
47
|
+
2. **金币三连**(`coins 0.4/0.5/0.6`):12×12 精灵 4 帧旋转,每枚隔 3 帧,`Math.floor(f/2)`。
|
|
48
|
+
3. **开箱打字**(`box_open 4.6` → `type 4.8–5.6` → `box_close 5.8`):`n = min(9, floor((f - fType)/3) + 1)`,3 帧一字,头像每 3 帧张嘴。
|
|
49
|
+
4. **LOGO 砸落**(`logo 7.2`,`shine 7.6`):12 帧自由落体 + 4 帧挤压 + 2 帧白闪 `M(8)/M(15)`,扫光每帧 18px、沿 `u = i + j*0.7` 判定。
|
|
50
|
+
5. **入夜**(`night 8.0`,`night_wave 8.0–8.3`):`waveR(f)` 按 `[150,110,70,36]` 四档收光池。
|
|
51
|
+
- **网格**:320×180 硬栅格;对话框 176×30 @ (72,99),安全边距 8px。图层自下而上:`drawSky` → 远山 ×0.125 → `MID` ×0.3 → `HILLS` ×0.55 → 地面 → 主角 → `drawFG` ×1.4 → 对话框/HUD → CRT。
|
|
52
|
+
|
|
53
|
+
## 5. Remotion 落地配方
|
|
54
|
+
|
|
55
|
+
必须换掉:
|
|
56
|
+
|
|
57
|
+
1. `window.renderAt(t)` / `requestAnimationFrame` → `useCurrentFrame()`,`t = frame/30`。
|
|
58
|
+
2. `Date.now()` / `performance.now()` → 不需要。`rng(seed)` 在模块级只建一次(`const R = rng(7)`)。
|
|
59
|
+
3. `Math.random()` → 用 `hash(x, y)` / `rng()`(mulberry32)。别用 Remotion 的 `random()`:它按 seed 全局推进,重排会串。
|
|
60
|
+
4. **Canvas 2D 逐帧**:保留,改成 `useEffect(() => paint(ctx, frame), [frame])` 同步画;canvas 固定 `width={320} height={180}`,CSS 放大 6 倍 + `imageRendering:'pixelated'`。
|
|
61
|
+
5. CSS `transition` / `animation` → 全删,只留静态叠加层。
|
|
62
|
+
6. 运动模糊:上游 `samples:1`,**不加**。
|
|
63
|
+
|
|
64
|
+
**CRT 近似与损失**:`film.js:760` 的 `fs` 逐像素做 `sharp()` 像素中心重采样、桶形、扫描线(`sy = fract(uc.y*uSrc.y)`,每源像素行一条)、8 方向 glow。Remotion 拆静态层:`repeating-linear-gradient` 6px 周期 `rgba(0,0,0,.30)`、canvas 副本 `filter: blur(6px)` + `mixBlendMode:'screen'` 当辉光、`radial-gradient` 暗角、两条 1px 红/青偏移层 `screen` 当色偏。**损失**:无桶形(直边不弯)、无像素中心重采样(扫描线与像素格拍频出摩尔纹)、辉光是均匀高斯而非随亮度加权的 8 tap(暗部被抬灰)。
|
|
65
|
+
|
|
66
|
+
```tsx
|
|
67
|
+
import { AbsoluteFill, Easing, interpolate, useCurrentFrame } from 'remotion';
|
|
68
|
+
import { useEffect, useRef } from 'react';
|
|
69
|
+
|
|
70
|
+
const W = 320, H = 180, Z = 6; // 1920/320,必须整除
|
|
71
|
+
|
|
72
|
+
export const PixelScene: React.FC = () => {
|
|
73
|
+
const frame = useCurrentFrame();
|
|
74
|
+
const ref = useRef<HTMLCanvasElement>(null);
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
const ctx = ref.current!.getContext('2d')!;
|
|
77
|
+
ctx.imageSmoothingEnabled = false;
|
|
78
|
+
ctx.fillStyle = '#1b1a33'; ctx.fillRect(0, 0, W, H);
|
|
79
|
+
// 12 帧坠落:先在源像素里取整,再画
|
|
80
|
+
const dy = Math.round(interpolate(frame, [216, 228], [-128, 0],
|
|
81
|
+
{ extrapolateRight: 'clamp', easing: Easing.in(Easing.quad) }));
|
|
82
|
+
ctx.fillStyle = '#ffd166'; ctx.fillRect(132, 60 + dy, 56, 28);
|
|
83
|
+
ctx.fillStyle = '#0d0b1a'; ctx.fillRect(132, 60 + dy, 56, 2);
|
|
84
|
+
}, [frame]);
|
|
85
|
+
return (
|
|
86
|
+
<AbsoluteFill style={{ background: '#0d0b1a' }}>
|
|
87
|
+
<canvas ref={ref} width={W} height={H}
|
|
88
|
+
style={{ width: W * Z, height: H * Z, imageRendering: 'pixelated' }} />
|
|
89
|
+
<AbsoluteFill style={{ background:
|
|
90
|
+
'repeating-linear-gradient(to bottom, rgba(0,0,0,.30) 0 2px, transparent 2px 6px)' }} />
|
|
91
|
+
</AbsoluteFill>
|
|
92
|
+
);
|
|
93
|
+
};
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 6. 镜头结构模板
|
|
97
|
+
|
|
98
|
+
| 时间 | 意图 | 画面 |
|
|
99
|
+
| --- | --- | --- |
|
|
100
|
+
| 0.0–0.9 | CRT 开机 | 点→线→张开(`PWR.on` 11 帧) |
|
|
101
|
+
| 0.9–3.2 | 跑跳 | 跳 0.3/2.0、落 0.9/2.8、6 金币、踩敌 2.4 |
|
|
102
|
+
| 3.2–4.4 | 减速 | `skid 4.0` 扬尘、`stop 4.4` 相机停,转 sunset |
|
|
103
|
+
| 4.6–5.8 | 开箱对话 | 箱开 4.6、打字 4.8–5.6、箱关 5.8 |
|
|
104
|
+
| 6.0–6.47 | 抖动→爆光 | `chest_open 6.4`、1 帧白闪、推镜 8→12 |
|
|
105
|
+
| 7.2–8.0 | LOGO 落地 | 12 帧坠落 + 4 帧挤压 + 扫光 7.6 + 震屏 |
|
|
106
|
+
| 8.0–10 | 入夜收尾 | 光池收拢、萤火虫、丝带、`PRESS START` 闪 |
|
|
107
|
+
|
|
108
|
+
## 7. 坑
|
|
109
|
+
|
|
110
|
+
1. 一处漏 `Math.floor` 就糊:`cam(f)`、`cx*0.125`、精灵 x/y 全要取整。
|
|
111
|
+
2. canvas 的 CSS 尺寸只能是 6 的整数倍,别套带小数的 `transform: scale()`。
|
|
112
|
+
3. `IB` 是 slot 索引不是 RGB,直接当颜色画会得一片噪点,必须先过 `makeLUT`。
|
|
113
|
+
4. 文字别交给 `<span>`:DOM 抗锯齿毁 1-bit,必须走 canvas 二值化。
|
|
114
|
+
5. 扫描线周期要整除 1080(2/3/6px),否则出摩尔纹。
|
|
115
|
+
|
|
116
|
+
## 8. 版权与素材
|
|
117
|
+
|
|
118
|
+
上游 mg-styles-15 为 MIT。本风格无外部图片/视频:精灵、6×7 字模 `LG`、地形、云全由代码生成。`SCORE`、`PRESS START` 类文案可替换;别用任天堂的角色名与商标。
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# 22-hud · 赛博朋克 HUD / FUI
|
|
2
|
+
|
|
3
|
+
上游:`demos/22-hud/`(`index.html` 9 805 B、`js/hud.js` 65 650 B / 855 行、`js/holo.js` 17 026 B、`js/post.js` 8 773 B、`cues.json` 1 411 B)。three.js 线框地球 → `UnrealBloomPass` → 文字层 → CRT。1920×1080 / 30fps / 10.000s;120 BPM = 15 帧/拍,LOCK 6.400s = 第 192 帧。提示词原文用 `mg_style {action:"read",slug:"22-hud"}` 取。
|
|
4
|
+
|
|
5
|
+
## 1. 一眼认出
|
|
6
|
+
|
|
7
|
+
- **96% 是黑**:底 `#020A0D`,只剩 1–1.5px 青线、11–21px 全大写等宽字和一束辉光(`UnrealBloomPass(res, 0.75, 0.45, 0.32)`)。
|
|
8
|
+
- **中央 401px 扫描环**:`318 * SS`(`SS = 1.26`),`SEGS` 生成 40 段长短弧(4–34°,间隔 3–13°),四角 34px 直角框(`frameCorners`,`m = 40`)。
|
|
9
|
+
- **数字先乱码后定值**:`scramble` 5 帧跳 `GL` 字符、`roll` 4 帧跳数字、`flick` 4 帧 `[0.7,0.1,1.0,0.45]` 抖完才稳。
|
|
10
|
+
- **一切都不太干净**:3px 扫描线 ±5%、径向色差、54 条 glitch 切片、0.028 颗粒。
|
|
11
|
+
|
|
12
|
+
## 2. 色板
|
|
13
|
+
|
|
14
|
+
| 角色 | hex | 用在哪 |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| 墨底 | `#020A0D` | 全屏背景,`INK` 也是文字挖洞色 |
|
|
17
|
+
| 深青 | `#0E3A42` | 面板底、`DEEP` |
|
|
18
|
+
| 暗青 | `#0B7C8C` | 次级刻度、坐标行,`DIM` |
|
|
19
|
+
| 主青 | `#00E5FF` | 90% 的线、括号、状态框,`CYA` |
|
|
20
|
+
| 高光白青 | `#E8FEFF` | 主数字、锁定标题,`HOT` |
|
|
21
|
+
| 警报红 | `#FF2A1F` | REC 点、失败状态,`RED` |
|
|
22
|
+
| 锁定/信标 | `#FF2A8A` / `#FF5A4E` | 锁定环与四段弧 / 信号点与脉冲环 |
|
|
23
|
+
|
|
24
|
+
色板只有这 8 个(`MKC` 是色盲替换表)。**禁止色**:纯白 `#FFFFFF`、绿色、任何暖色——唯一例外是 lock 时 `COMP_FS` 的 `reink()`,整屏压成 `vec3(1.0,0.40,0.0)` 橙调。
|
|
25
|
+
|
|
26
|
+
## 3. 字体与字排
|
|
27
|
+
|
|
28
|
+
**当前优先使用插件内置字体:** 中文用 HarmonyOS Sans SC,拉丁标题用 Rajdhani 或 Chakra Petch,数据用 JetBrains Mono。
|
|
29
|
+
|
|
30
|
+
下方保留原片排版参数及旧版系统替代方案;只有内置字体不适合或不可用时才参考旧系统栈及其损失说明。
|
|
31
|
+
|
|
32
|
+
原片加载 4 族:`"JetBrains Mono"`、`Rajdhani`、`"Chakra Petch"`、`"HarmonyOS Sans SC"`,等 `fonts.ready` 后才出首帧。拉丁一律大写 + `letterSpacing 1–9`。
|
|
33
|
+
|
|
34
|
+
旧版没有内置字体时使用的系统替代栈:等宽 `"Consolas","JetBrains Mono",monospace`;拉丁窄体 `"Bahnschrift SemiCondensed","Arial Narrow",sans-serif`;中文 `"Microsoft YaHei UI","Microsoft YaHei",sans-serif`。
|
|
35
|
+
|
|
36
|
+
**损失**:Rajdhani 窄体换 Bahnschrift 宽 8–12%,同一行 `ls:3` 会撑破 300px 栏,字距降到 1.5–2;JetBrains Mono 0.6em vs Consolas 0.55em,滚动数字左右跳,需 `tabular-nums` + 固定宽盒;HarmonyOS 900 在 Windows 无此字重(YaHei 仅 400/700),58px 标题会细一档。
|
|
37
|
+
|
|
38
|
+
## 4. 动效语法
|
|
39
|
+
|
|
40
|
+
- **120 BPM = 15 帧/拍**。0.4 / 4.4 / 6.4 / 7.1 四个冲击帧用闭快门单独渲染(`HARD` 集合),别让运动模糊糊掉。
|
|
41
|
+
- 缓动全在 `util.js`:`E.outC = 1-(1-x)³`、`E.outE = 1-2^(-10x)`、`E.inOutC`、`E.inQ = x²`、`E.outQ`、`E.outBack(1.70158)`、`sstep`。所有位移 3–10 帧到位后彻底静止。
|
|
42
|
+
- **禁用**:`spring()`、超过 0.35s 的位移、`rotate` 动画(HUD 是平面图,转起来就假)、opacity 渐变长于 4 帧。
|
|
43
|
+
- 签名动作:
|
|
44
|
+
1. **开机 0–1.2s**:十字准星 0.04–0.22(`outE`),4 次 ping 每帧错峰、`318*E.outC` 落环;外环 0.40–0.90 画出;六边形网格 1.2 起 1500px 波前推开(`uHex`)。
|
|
45
|
+
2. **雷达 2.4s 起**:`radar_period 2.0`、`theta0 52°`,4 个 blip 按 `(brg-52)/180` 秒依次亮。
|
|
46
|
+
3. **捕获 5.9–6.33**:括号 8 帧 `outCubic` 从 (872,476) 收到 (176,176),再 2 帧 `(F>>1)&1` 在 176/204 间跳,`snap 6.2333` 起 3 帧 `[1.35,1.08,0.96,1.0]` 过冲;锁环 36 段按 `E.inQ` 填满。
|
|
47
|
+
4. **LOCK 6.400**:标题 1.15→1(3 帧),首帧纯 `HOT`;扫描环换 `#FF2A8A` 并 `+0.62*DIVE` 推近;侧栏 `x ±120px` 外推 + `blur(4px)`。
|
|
48
|
+
5. **关机 9.767**:0.2s 内 `csy = pow(1-cz/0.6, 2.2)` 压成一条线,再横向收成点。
|
|
49
|
+
- **网格**:安全边距 96px,角标 40px,顶栏 y=76,分隔线 y=100.5,左栏 `CW=300`。字号 11/13/14/15/17/21/26/58/60;线宽 1/1.5/2/3/4/6。
|
|
50
|
+
|
|
51
|
+
## 5. Remotion 落地配方
|
|
52
|
+
|
|
53
|
+
必须换掉:
|
|
54
|
+
|
|
55
|
+
1. `window.renderAt(t)` / `requestAnimationFrame` → `useCurrentFrame()`;`holo.update(t)` 的 `h`、`zAt(t)`、`SURGE(t)` 全改成 `frame` 纯函数。
|
|
56
|
+
2. `Date.now()` / `document.fonts.ready` → 删;字体同步给。
|
|
57
|
+
3. `Math.random()` → `util.js` 的 `hash(...a)` 与 `mulberry(seed)`。
|
|
58
|
+
4. **Canvas 2D 逐帧**:保留,但合成两遍——几何一层、文字一层(上游 `drawHUD(t,S,'geo')` / `'txt'` 就这么分),文字层不参与 blur/bloom,否则滚动数字双曝光。
|
|
59
|
+
5. CSS `transition`/`animation` → 删。`ctx.filter='blur()'` 可用,但只在整层用一次。
|
|
60
|
+
6. 运动模糊:`samples:1`,**不加** `<CameraMotionBlur>`,动感靠 dive 推镜和 glitch。
|
|
61
|
+
|
|
62
|
+
**1px 刻线在 1080p**:上游按 `dpr`(通常 2)画 `W*dpr` 画布,1.25 逻辑 px 实为 2.5 device px;Remotion 输出就是 1920×1080,1 逻辑 px = 1 像素,所以坐标 `+0.5`、`lineWidth: 1.25`,否则线要么消失要么发灰。**不要**画 3840 再缩,线变 0.6px 灰线。
|
|
63
|
+
|
|
64
|
+
**后期近似**:bloom 用副本 `brightness(1.6) contrast(2.4) blur(10px)` + `screen`,靠提对比度当阈值;扫描线 3px `repeating-linear-gradient`、幅度 5%(对应 `0.90+0.10*cos`);色差用两份通道副本 `translate ±1.5px`;glitch 54 条切片按 `hash(slice,frame)` 挑 22%(≤67px);白闪只抬亮部。**损失**:单次高斯 ≠ 5 级 mip bloom,1px 线光晕半径不对;平移色差无径向权重;无 `TEXT_FS` 双环采样,暗底字偏薄。
|
|
65
|
+
|
|
66
|
+
```tsx
|
|
67
|
+
import { AbsoluteFill, Easing, interpolate, useCurrentFrame } from 'remotion';
|
|
68
|
+
import { useEffect, useRef } from 'react';
|
|
69
|
+
|
|
70
|
+
const CX = 960, CY = 540, R = 401; // 318 * SS(1.26)
|
|
71
|
+
|
|
72
|
+
export const HudScene: React.FC = () => {
|
|
73
|
+
const frame = useCurrentFrame();
|
|
74
|
+
const ref = useRef<HTMLCanvasElement>(null);
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
const ctx = ref.current!.getContext('2d')!;
|
|
77
|
+
// 0.40–0.90s 外环;192 帧起括号 3 帧收 130px
|
|
78
|
+
const d = interpolate(frame, [12, 27], [0, 1],
|
|
79
|
+
{ extrapolateRight: 'clamp', easing: Easing.out(Easing.exp) });
|
|
80
|
+
const k = interpolate(frame, [192, 195], [1.4, 1],
|
|
81
|
+
{ extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
|
|
82
|
+
ctx.lineWidth = 1.25; ctx.globalAlpha = 0.9; ctx.strokeStyle = '#00E5FF';
|
|
83
|
+
ctx.beginPath(); ctx.arc(CX + 0.5, CY + 0.5, R, -Math.PI / 2, -Math.PI / 2 + d * 6.2832);
|
|
84
|
+
ctx.stroke();
|
|
85
|
+
ctx.strokeStyle = frame >= 192 ? '#FF2A8A' : '#00E5FF';
|
|
86
|
+
ctx.strokeRect(CX - 130 * k, CY - 130 * k, 260 * k, 260 * k);
|
|
87
|
+
}, [frame]);
|
|
88
|
+
return (
|
|
89
|
+
<AbsoluteFill style={{ background: '#020A0D' }}>
|
|
90
|
+
<canvas ref={ref} width={1920} height={1080} />
|
|
91
|
+
<AbsoluteFill style={{ background:
|
|
92
|
+
'repeating-linear-gradient(to bottom, rgba(0,0,0,.10) 0 2px, transparent 2px 3px)' }} />
|
|
93
|
+
</AbsoluteFill>
|
|
94
|
+
);
|
|
95
|
+
};
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## 6. 镜头结构模板
|
|
99
|
+
|
|
100
|
+
| 时间 | 意图 | 画面 |
|
|
101
|
+
| --- | --- | --- |
|
|
102
|
+
| 0.0–1.4 | 开机自检 | 十字 → ping 落环 → 侧栏 0.9/1.15 左右开 → 六边形波前 |
|
|
103
|
+
| 1.4–2.4 | 地球出现 | 线框球 1.35 起长到 1,扫描面上下走,日志 4 行依次打 |
|
|
104
|
+
| 2.4–4.4 | 数据活起来 | 雷达扫描、6 组数字 7.5 帧一滚、sparkline 2.9 |
|
|
105
|
+
| 4.4–6.4 | 捕获信号 | 状态框转 `SIGNAL DETECTED` 闪烁、地球转向、候选 `NO MATCH`、括号飞入 |
|
|
106
|
+
| 6.4–7.1 | 锁定冲击 | 白闪、橙调 re-ink 0.45s 扫过、标题砸落、dive 推近、侧栏失焦 |
|
|
107
|
+
| 7.1–10 | 展开与收尾 | 暗带打开、坐标打字、`alert_pulses` 脉冲、outro 淡出、9.767 压线收点 |
|
|
108
|
+
|
|
109
|
+
## 7. 坑
|
|
110
|
+
|
|
111
|
+
1. 文字层必须在 bloom 之上单独合成,和几何一起过 blur 就会糊成两行字。
|
|
112
|
+
2. 1px 线整数坐标会闪:`.5` 偏移 + `lineWidth ≥ 1.25`;扫描线 3px 周期要整除 1080。
|
|
113
|
+
3. `knock()`(`destination-out` 挖洞)是文字可读性的关键,漏掉就有线穿字。
|
|
114
|
+
4. 别把 `drawHUD` 返回的 `scopeR` 写死:dive 时它要涨 62%,锁定环靠这个才"飞过镜头"。
|
|
115
|
+
|
|
116
|
+
## 8. 版权与素材
|
|
117
|
+
|
|
118
|
+
上游 mg-styles-15 为 MIT。`KESTREL-9`、`隼眼-9` 与城市代号都是虚构;`land-50m.json`(Natural Earth 衍生)随仓库使用。刻线、括号、锁定环是通用 FUI 语汇,可自由重画。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "01-flat-vector",
|
|
3
|
+
"name": "扁平矢量·一点成城",
|
|
4
|
+
"oneLiner": "一点落地弹成太阳,长出一座城,再收进窗里变回一个点。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"全片零渐变零阴影零描边,只有 #2B2BFF 底上五档纯色块",
|
|
7
|
+
"每次落地竖向压到 60%、横向撑到 136%,2–6 帧内回弹",
|
|
8
|
+
"入场一律「预备 4 帧—冲出 4 帧—回弹 8 帧」,过冲 1.56",
|
|
9
|
+
"9 栋楼以底边为锚错峰 3 帧升起,顶盖再延 2 帧",
|
|
10
|
+
"推镜 30 倍穿进 64×36 px 的窗,窗内是同一套矢量语言"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#2B2BFF",
|
|
14
|
+
"surface": "#3B3BFF",
|
|
15
|
+
"field": "#4D4DFF",
|
|
16
|
+
"text": "#FFF6E9",
|
|
17
|
+
"muted": "#A3A3FF",
|
|
18
|
+
"accent": "#FF5A4E",
|
|
19
|
+
"border": "#1F1FCC"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#2B2BFF", "#FF5A4E", "#FFF6E9", "#FFC62B", "#151433", "#2EE6A8", "#A3A3FF"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Fredoka\",\"Resource Han Rounded\",\"Noto Sans SC\",sans-serif",
|
|
24
|
+
"text": "\"Resource Han Rounded\",\"Noto Sans SC\",sans-serif",
|
|
25
|
+
"mono": "\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": {
|
|
28
|
+
"bpm": 120,
|
|
29
|
+
"fps": 30,
|
|
30
|
+
"duration": 10,
|
|
31
|
+
"aspect": "16:9",
|
|
32
|
+
"cutFrames": 15
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "02-line-art",
|
|
3
|
+
"name": "一笔画·金线",
|
|
4
|
+
"oneLiner": "一根金线从不抬笔,7.5 秒画完一座城,收成金币字标。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"全片单条连续路径,23 段图形首尾相接,笔尖从不抬起",
|
|
7
|
+
"线宽恒为 3px(成片 4.5px),除以相机缩放保持屏幕恒定",
|
|
8
|
+
"新墨 #FFF6DC 发烫,旧线 1.5s 内退到 40% 并偏成 #967D50",
|
|
9
|
+
"三处 0.15s 停顿用重复 marker 实现,笔停但路径不断",
|
|
10
|
+
"7.5s 圆环从中心 swell 成金币,0.367s 由环带填满"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#0B1320",
|
|
14
|
+
"surface": "#101A28",
|
|
15
|
+
"field": "#16233A",
|
|
16
|
+
"text": "#E9D7A5",
|
|
17
|
+
"muted": "#967D50",
|
|
18
|
+
"accent": "#FFF6DC",
|
|
19
|
+
"border": "#24344C"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#0B1320", "#E9D7A5", "#FFF6DC", "#967D50", "#F2E0AE", "#CCAB6C", "#6E5428"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Cormorant Garamond\",\"Noto Serif SC\",serif",
|
|
24
|
+
"text": "\"Noto Serif SC\",serif",
|
|
25
|
+
"mono": "\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": {
|
|
28
|
+
"bpm": 72,
|
|
29
|
+
"fps": 30,
|
|
30
|
+
"duration": 10,
|
|
31
|
+
"aspect": "16:9",
|
|
32
|
+
"cutFrames": 13
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "03-isometric",
|
|
3
|
+
"name": "等轴 2.5D·浮岛城市",
|
|
4
|
+
"oneLiner": "12×12 瓦片波浪落下,长成一座浮岛城市,最后拉远露字。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"正交相机沿 (1,1,1),棱线 2:1 斜率,全片零透视",
|
|
7
|
+
"瓦片顶面是奶白陶土 #F1EEFA,侧面才上色,空瓦片会被冲击波翻面",
|
|
8
|
+
"所有生长都是「底座先落—墙长—屋顶晚 0.375s」,墙有 9% 过冲",
|
|
9
|
+
"落下统一 0.3s 重力加速,触地 30% 压扁 + 40rad/s 抖两下",
|
|
10
|
+
"6.0s 冲击波以 15 单位/s 从 CORE 扩散,窗色延迟点亮",
|
|
11
|
+
"7.75–8.75s 拉远露出浮岛,标题平躺在等轴地面上"
|
|
12
|
+
],
|
|
13
|
+
"palette": {
|
|
14
|
+
"page": "#EEEAFC",
|
|
15
|
+
"surface": "#F4F1FD",
|
|
16
|
+
"field": "#E6E1F7",
|
|
17
|
+
"text": "#2C2960",
|
|
18
|
+
"muted": "#8781D0",
|
|
19
|
+
"accent": "#62F0F2",
|
|
20
|
+
"border": "#C9BFF0"
|
|
21
|
+
},
|
|
22
|
+
"colors": ["#EEEAFC", "#F1EEFA", "#94DFBD", "#FFF0C8", "#62F0F2", "#2C2960", "#FFC4AC", "#8781D0"],
|
|
23
|
+
"fonts": {
|
|
24
|
+
"display": "\"Unbounded\",\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
|
|
25
|
+
"text": "\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
|
|
26
|
+
"mono": "\"JetBrains Mono\",monospace"
|
|
27
|
+
},
|
|
28
|
+
"rhythm": {
|
|
29
|
+
"bpm": 120,
|
|
30
|
+
"fps": 30,
|
|
31
|
+
"duration": 10,
|
|
32
|
+
"aspect": "16:9",
|
|
33
|
+
"cutFrames": 15
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "05-cel-boil",
|
|
3
|
+
"name": "逐帧手绘·线条沸腾",
|
|
4
|
+
"oneLiner": "一拍二的纸上手绘:每换一张画墨线重抖一次,填色故意错位 5px,唯一饱和色是番茄红。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"线条每换一张画就重抖一次(simplex 噪声平移中线,±2.4px)",
|
|
7
|
+
"一拍二:每张画停 2 帧,开场只循环 4 张",
|
|
8
|
+
"填色层整体偏移 (-5, +4)px,墨线压在填色上",
|
|
9
|
+
"可变宽墨线:撇从 1.12 倍收到 0.5 倍,钩在末端收细",
|
|
10
|
+
"纸是两层:放大 1.045 的纸底 + multiply 的纸齿,位置随画号换"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#f4e9d0",
|
|
14
|
+
"surface": "#fff6e2",
|
|
15
|
+
"field": "#ffc425",
|
|
16
|
+
"text": "#1c1613",
|
|
17
|
+
"muted": "#d9573f",
|
|
18
|
+
"accent": "#e5402b",
|
|
19
|
+
"border": "#e0cba6"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#f4e9d0", "#fff6e2", "#1c1613", "#e5402b", "#ffc425", "#d9573f"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Caveat\",\"LXGW Marker Gothic\",\"Long Cang\",\"Noto Sans SC\",sans-serif",
|
|
24
|
+
"text": "\"LXGW Marker Gothic\",\"Long Cang\",\"Noto Sans SC\",sans-serif",
|
|
25
|
+
"mono": "\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": { "bpm": 120, "fps": 24, "duration": 10, "aspect": "16:9", "cutFrames": 2 }
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "06-collage",
|
|
3
|
+
"name": "拼贴剪贴·撕纸印刷",
|
|
4
|
+
"oneLiner": "牛皮纸上的撕边剪贴与半调印刷,所有动作量化到 12fps,每个元素自己会抖。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"运动量化到 12fps(30/12=2.5 帧一步,实际 2 帧、3 帧交替)",
|
|
7
|
+
"每个元素独立抖动 ±2px / ±0.4°,静止元素降到 6fps、±1.1px",
|
|
8
|
+
"白描边是「剪」出来的:沿半径 3.5px 的圆画 28 遍再 source-in",
|
|
9
|
+
"贴上去有 lift:先放大 1.38,落点过冲 0.972 再回弹 1.01",
|
|
10
|
+
"影子随 lift 变:blur 5→39px、offset 3→27px、alpha 0.36→0.44"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#F2ECDF",
|
|
14
|
+
"surface": "#EFE8DA",
|
|
15
|
+
"field": "#E3CFAE",
|
|
16
|
+
"text": "#16130F",
|
|
17
|
+
"muted": "#7A5516",
|
|
18
|
+
"accent": "#D2261C",
|
|
19
|
+
"border": "#C4A077"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#F2ECDF", "#EFE8DA", "#E3CFAE", "#16130F", "#7A5516", "#D2261C", "#C4A077"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Anton\",\"Noto Serif SC\",sans-serif",
|
|
24
|
+
"text": "\"Noto Serif SC\",\"Noto Sans SC\",serif",
|
|
25
|
+
"mono": "\"IBM Plex Mono\",\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": { "bpm": 90, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 3 }
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "07-liquid",
|
|
3
|
+
"name": "液态流动·棚拍稠液",
|
|
4
|
+
"oneLiner": "暗紫棚里的稠液体:橙粉紫按厚度混色,落地压扁回弹,最后把液滴拉成字形。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"只有一种材质:稠液体,球缘 1–2px 高光唇线",
|
|
7
|
+
"内部按厚度三段插值 #FF5C0F → #FF1A70 → #8F1FFF",
|
|
8
|
+
"落地先压扁再回弹(spring),接触点留 splat 与 5–7 条 tendril",
|
|
9
|
+
"4.0s 三层洪流面各错 2 帧压上来,4.42s 沉进液体只剩涡流与气泡",
|
|
10
|
+
"6.4s 液滴拉成 4 个字形,7.2s glint 扫过,8.4s 一滴落下收尾"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#371E3E",
|
|
14
|
+
"surface": "#4C2955",
|
|
15
|
+
"field": "#7C4684",
|
|
16
|
+
"text": "#FFE8F0",
|
|
17
|
+
"muted": "#FFC8E0",
|
|
18
|
+
"accent": "#FF5C0F",
|
|
19
|
+
"border": "#8F1FFF"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#FF5C0F", "#FF1A70", "#8F1FFF", "#FFE8F0", "#FFC8E0", "#371E3E", "#7C4684"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Fraunces\",\"Resource Han Rounded\",\"Noto Serif SC\",serif",
|
|
24
|
+
"text": "\"Noto Serif SC\",\"Inter\",serif",
|
|
25
|
+
"mono": "\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": { "bpm": 150, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 2 }
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "08-morph",
|
|
3
|
+
"name": "一形万象·形变",
|
|
4
|
+
"oneLiner": "始终只有一个实心剪影:轮廓等点数重采样后逐点插值,必经圆形中介变出八个图标。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"单形:永远一个实心剪影,无描边、无渐变、无阴影",
|
|
7
|
+
"变形靠等点数重采样(body 240 / 洞 72)+ 逐点 lerp,不是交叉淡化",
|
|
8
|
+
"中介形必过圆或胶囊(P.Ca/Cb)",
|
|
9
|
+
"每次落地压扁回弹:A·sin(2πτ/0.28)·e^(-7.5τ),从落地前 2 帧起算",
|
|
10
|
+
"终场落在丝网印质感:纸纹 + 每帧偏移的 512² 颗粒 + 暗角"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#F4EEE3",
|
|
14
|
+
"surface": "#E7E1D7",
|
|
15
|
+
"field": "#DED8CF",
|
|
16
|
+
"text": "#16151B",
|
|
17
|
+
"muted": "#908C89",
|
|
18
|
+
"accent": "#FF4F2B",
|
|
19
|
+
"border": "#D0CBC3"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#F4EEE3", "#16151B", "#FFB627", "#FF4F2B", "#2438E8", "#D93A1C"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Outfit\",\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
|
|
24
|
+
"text": "\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
|
|
25
|
+
"mono": "\"IBM Plex Mono\",\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": { "bpm": 150, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 25 }
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "09-bauhaus",
|
|
3
|
+
"name": "几何构成·包豪斯",
|
|
4
|
+
"oneLiner": "红黄蓝三原色 + 基础几何 + 严格 120px 网格,按拍切换的构成主义排版。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"中央 8x8 网格(模数 120px)",
|
|
7
|
+
"只有纸/红/黄/蓝/墨五色",
|
|
8
|
+
"直角几何:正方形、四分之一圆、半圆、三角,无圆角矩形",
|
|
9
|
+
"每 15 帧一次状态切换,切换之间完全静止",
|
|
10
|
+
"四色套印偏移 2-4px + 纸纹"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#F1E9DA",
|
|
14
|
+
"surface": "#EDE4D3",
|
|
15
|
+
"field": "#E8DECB",
|
|
16
|
+
"text": "#111111",
|
|
17
|
+
"muted": "#8C8172",
|
|
18
|
+
"accent": "#E03C31",
|
|
19
|
+
"border": "#D8CBB4"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#F1E9DA", "#E03C31", "#F2B705", "#1E4FA3", "#111111"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Anton\",\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
|
|
24
|
+
"text": "\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
|
|
25
|
+
"mono": "\"IBM Plex Mono\",\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": { "bpm": 120, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 15 }
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "10-synthwave",
|
|
3
|
+
"name": "复古霓虹·合成器浪潮",
|
|
4
|
+
"oneLiner": "深紫夜空下的透视霓虹网格与分层日落,镀铬标题砸入、手写霓虹点亮、全程 VHS 做旧。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"霓虹透视网格从地平线冲向镜头,靠 z 偏移取模滚动",
|
|
7
|
+
"日落是同一个圆切成 5–7 条横带,洋红→橙→黄,不是渐变球",
|
|
8
|
+
"双辉光:紧 4px 高亮 + 宽 30px 低透明",
|
|
9
|
+
"VHS 整链:RGB split 1–2px → 2px 扫描线 → 随机 glitch 抽帧 → 4:3 圆角遮罩 → CRT 关机",
|
|
10
|
+
"镀铬标题多段金属渐变 + bevel 高光 + 4 角星芒扫过"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#120A2A",
|
|
14
|
+
"surface": "#2A1055",
|
|
15
|
+
"field": "#3A1A4E",
|
|
16
|
+
"text": "#F4F4FF",
|
|
17
|
+
"muted": "#8FF9FF",
|
|
18
|
+
"accent": "#FF2FB8",
|
|
19
|
+
"border": "#E6C465"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#120A2A", "#2A1055", "#FF2FB8", "#8FF9FF", "#EF933D", "#E6C465", "#F4F4FF"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Michroma\",\"Douyin Sans\",\"Noto Sans SC\",sans-serif",
|
|
24
|
+
"text": "\"Douyin Sans\",\"Noto Sans SC\",sans-serif",
|
|
25
|
+
"mono": "\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": { "bpm": 100, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 18 }
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "12-aurora-glass",
|
|
3
|
+
"name": "弥散渐变·玻璃拟态",
|
|
4
|
+
"oneLiner": "近黑底上 7 块色斑缓慢漂移,玻璃卡带 1px 内描边与近边折射,一切都慢。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"底色 #040312,亮部全靠加色色斑,没有提亮的灰",
|
|
7
|
+
"7 块无边色斑,24–40s 闭环漂移,强度 0.32–1.15",
|
|
8
|
+
"玻璃 = 30px backdrop 模糊 + 7% 白 + 1px 白内描边 + 13px 近边折射",
|
|
9
|
+
"80BPM,最短动作 0.75s,没有 120ms 以下的跳变",
|
|
10
|
+
"文字只做 opacity + 8px 上浮,从不缩放旋转"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#040312",
|
|
14
|
+
"surface": "#171043",
|
|
15
|
+
"field": "#0B0726",
|
|
16
|
+
"text": "#FFFFFF",
|
|
17
|
+
"muted": "#8C8CFF",
|
|
18
|
+
"accent": "#7050FF",
|
|
19
|
+
"border": "#FFFFFF"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#040312", "#7050FF", "#2F46F2", "#34CFF0", "#B653F0", "#8C8CFF", "#3320A8"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Sora\",\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
|
|
24
|
+
"text": "\"Inter\",\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
|
|
25
|
+
"mono": "\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": { "bpm": 80, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 22 }
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "18-hanazi",
|
|
3
|
+
"name": "综艺花字",
|
|
4
|
+
"oneLiner": "竖屏三层描边花字:白边 + 彩边 + 硬挤出,弹簧入场,字字都歪。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"每字三层描边:白 7.6% / 彩 7.0% / 挤出 9.3%(相对 172px 字高)",
|
|
7
|
+
"逐字弹簧入场,第 5 帧峰值 1.15,8 帧到位,错峰 2 帧",
|
|
8
|
+
"所有花字带 -7°~+6° 歪斜与 ±16px 基线抖动",
|
|
9
|
+
"1080×1920 一行 5 字,字距 = 字高,不用 letter-spacing",
|
|
10
|
+
"装饰只有手绘几何:四角星/爆炸框/放射线/汗滴,无 emoji"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#1B1B22",
|
|
14
|
+
"surface": "#1E2A78",
|
|
15
|
+
"field": "#0E1440",
|
|
16
|
+
"text": "#FFFFFF",
|
|
17
|
+
"muted": "#A9C4E0",
|
|
18
|
+
"accent": "#FFE14D",
|
|
19
|
+
"border": "#FFFFFF"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#1E2A78", "#FFE14D", "#FF3D7F", "#1A1030", "#2CCBF2", "#FFFFFF", "#FF9A1F"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Luckiest Guy\",\"Resource Han Rounded\",\"Noto Sans SC\",sans-serif",
|
|
24
|
+
"text": "\"Douyin Sans\",\"LXGW Marker Gothic\",\"Noto Sans SC\",sans-serif",
|
|
25
|
+
"mono": "\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": { "bpm": 120, "fps": 30, "duration": 10, "aspect": "9:16", "cutFrames": 15 }
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "19-paperclip",
|
|
3
|
+
"name": "粗描边贴纸科普",
|
|
4
|
+
"oneLiner": "一块 2400×5900 的手机屏世界,镜头一路下飞,白描边贴纸配精确图表。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"世界是一块 2400×5900 的手机屏,#E9EEF2 底 + 48px 网点",
|
|
7
|
+
"没有切镜:16 个相机关键帧,z 从 1.06 压到 0.2",
|
|
8
|
+
"所有素材白描边 10px(长边的 2.3%),paint-order: stroke",
|
|
9
|
+
"章节头 = 20×20 橙方块 + 中文 30px + Inter 大写 .18em",
|
|
10
|
+
"只有 #25313D 墨 + #FF5A36 一个强调色,没有渐变填充"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#1D2731",
|
|
14
|
+
"surface": "#E9EEF2",
|
|
15
|
+
"field": "#F7F9FB",
|
|
16
|
+
"text": "#25313D",
|
|
17
|
+
"muted": "#8C9AA8",
|
|
18
|
+
"accent": "#FF5A36",
|
|
19
|
+
"border": "#CDD6DE"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#25313D", "#FF5A36", "#E9EEF2", "#F7F9FB", "#8C9AA8", "#C5CFD8", "#1D2731"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Inter\",\"Noto Sans SC\",sans-serif",
|
|
24
|
+
"text": "\"Inter\",\"Noto Sans SC\",sans-serif",
|
|
25
|
+
"mono": "\"JetBrains Mono\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": { "bpm": 120, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 15 }
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "20-pixel",
|
|
3
|
+
"name": "像素 8-bit·横版卷轴",
|
|
4
|
+
"oneLiner": "每个像素是 6×6 输出方块,QUEST-32 色板配 4×4 Bayer 抖动的横版卷轴,外面套一层 CRT。",
|
|
5
|
+
"signature": [
|
|
6
|
+
"1 源像素 = 6×6 输出方块,全程无抗锯齿、无亚像素位移",
|
|
7
|
+
"同屏 ≤32 色,渐变只走 4×4 Bayer 抖动(天空 5 级色阶)",
|
|
8
|
+
"动作阶梯化:跑步 10fps、金币 15fps、星星 7.5fps",
|
|
9
|
+
"横向卷轴:主角钉在屏幕 x=96,四层视差 0.125/0.3/0.55/1.4",
|
|
10
|
+
"CRT 包住一切:桶形 k=0.03 + 按源像素行扫描线 + 8 向辉光 + 四角暗角"
|
|
11
|
+
],
|
|
12
|
+
"palette": {
|
|
13
|
+
"page": "#1b1a33",
|
|
14
|
+
"surface": "#0d0b1a",
|
|
15
|
+
"field": "#2a2f5a",
|
|
16
|
+
"text": "#ffffff",
|
|
17
|
+
"muted": "#8cc8f5",
|
|
18
|
+
"accent": "#ffd166",
|
|
19
|
+
"border": "#5b9bea"
|
|
20
|
+
},
|
|
21
|
+
"colors": ["#0d0b1a", "#1b1a33", "#2a2f5a", "#5b9bea", "#ffd166", "#ffffff", "#d23c3c"],
|
|
22
|
+
"fonts": {
|
|
23
|
+
"display": "\"Press Start 2P\",\"Fusion Pixel 12\",monospace",
|
|
24
|
+
"text": "\"Fusion Pixel 12\",monospace",
|
|
25
|
+
"mono": "\"Press Start 2P\",\"Fusion Pixel 12\",monospace"
|
|
26
|
+
},
|
|
27
|
+
"rhythm": { "bpm": 150, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 3 }
|
|
28
|
+
}
|