@3driseai/3drise-viewer 0.1.28 → 0.1.29
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/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
- package/dist/animationsV2/ClipPlayer.js +13 -9
- package/dist/animationsV2/ClipsRuntime.d.ts +44 -3
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +173 -55
- package/dist/animationsV2/appliers.d.ts.map +1 -1
- package/dist/animationsV2/appliers.js +21 -5
- package/dist/animationsV2/index.d.ts +1 -1
- package/dist/animationsV2/index.d.ts.map +1 -1
- package/dist/animationsV2/normalize.d.ts.map +1 -1
- package/dist/animationsV2/normalize.js +7 -3
- package/dist/animationsV2/sequenceUtils.d.ts +44 -6
- package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
- package/dist/animationsV2/sequenceUtils.js +58 -12
- package/dist/animationsV2/types.d.ts +22 -12
- package/dist/animationsV2/types.d.ts.map +1 -1
- package/dist/api/sceneHandle.d.ts +35 -1
- package/dist/api/sceneHandle.d.ts.map +1 -1
- package/dist/api/sceneHandle.js +88 -17
- package/dist/components/AdvancedGrid.d.ts +1 -5
- package/dist/components/AdvancedGrid.d.ts.map +1 -1
- package/dist/components/AdvancedGrid.js +6 -35
- package/dist/components/AnimatedObject.d.ts.map +1 -1
- package/dist/components/AnimatedObject.js +9 -4
- package/dist/components/ApollonianGrid.d.ts +1 -1
- package/dist/components/ApollonianGrid.d.ts.map +1 -1
- package/dist/components/ApollonianGrid.js +3 -28
- package/dist/components/ChladniGrid.d.ts +1 -1
- package/dist/components/ChladniGrid.d.ts.map +1 -1
- package/dist/components/ChladniGrid.js +6 -35
- package/dist/components/CircuitGrid.d.ts +1 -1
- package/dist/components/CircuitGrid.d.ts.map +1 -1
- package/dist/components/CircuitGrid.js +6 -34
- package/dist/components/ConformalGrid.d.ts +1 -1
- package/dist/components/ConformalGrid.d.ts.map +1 -1
- package/dist/components/ConformalGrid.js +3 -34
- package/dist/components/ContourGrid.d.ts +1 -1
- package/dist/components/ContourGrid.d.ts.map +1 -1
- package/dist/components/ContourGrid.js +6 -34
- package/dist/components/CustomPrimitive.js +1 -1
- package/dist/components/EnvironmentObject.d.ts.map +1 -1
- package/dist/components/EnvironmentObject.js +9 -7
- package/dist/components/FlowNetGrid.d.ts +1 -1
- package/dist/components/FlowNetGrid.d.ts.map +1 -1
- package/dist/components/FlowNetGrid.js +6 -34
- package/dist/components/FractalGrid.d.ts +1 -1
- package/dist/components/FractalGrid.d.ts.map +1 -1
- package/dist/components/FractalGrid.js +6 -37
- package/dist/components/Galaxy.d.ts.map +1 -1
- package/dist/components/Galaxy.js +9 -23
- package/dist/components/GirihGrid.d.ts +1 -1
- package/dist/components/GirihGrid.d.ts.map +1 -1
- package/dist/components/GirihGrid.js +6 -35
- package/dist/components/GravWaveGrid.d.ts +1 -1
- package/dist/components/GravWaveGrid.d.ts.map +1 -1
- package/dist/components/GravWaveGrid.js +6 -35
- package/dist/components/HexGrid.d.ts +1 -5
- package/dist/components/HexGrid.d.ts.map +1 -1
- package/dist/components/HexGrid.js +6 -36
- package/dist/components/HilbertGrid.d.ts +1 -1
- package/dist/components/HilbertGrid.d.ts.map +1 -1
- package/dist/components/HilbertGrid.js +3 -30
- package/dist/components/HyperbolicGrid.d.ts +1 -1
- package/dist/components/HyperbolicGrid.d.ts.map +1 -1
- package/dist/components/HyperbolicGrid.js +6 -34
- package/dist/components/LandObject.d.ts +9 -0
- package/dist/components/LandObject.d.ts.map +1 -0
- package/dist/components/LandObject.js +15 -0
- package/dist/components/LensingGrid.d.ts +1 -1
- package/dist/components/LensingGrid.d.ts.map +1 -1
- package/dist/components/LensingGrid.js +3 -29
- package/dist/components/LightsManager.d.ts.map +1 -1
- package/dist/components/LightsManager.js +8 -0
- package/dist/components/ModelBoundary.d.ts +2 -0
- package/dist/components/ModelBoundary.d.ts.map +1 -1
- package/dist/components/ModelBoundary.js +3 -0
- package/dist/components/ModelPrimitive.d.ts.map +1 -1
- package/dist/components/ModelPrimitive.js +6 -0
- package/dist/components/MoireGrid.d.ts +1 -1
- package/dist/components/MoireGrid.d.ts.map +1 -1
- package/dist/components/MoireGrid.js +6 -35
- package/dist/components/MoonDisc.d.ts +11 -0
- package/dist/components/MoonDisc.d.ts.map +1 -0
- package/dist/components/MoonDisc.js +128 -0
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +15 -4
- package/dist/components/ObjectsRenderer.d.ts.map +1 -1
- package/dist/components/ObjectsRenderer.js +7 -5
- package/dist/components/OceanBuilder.d.ts.map +1 -1
- package/dist/components/OceanBuilder.js +2 -0
- package/dist/components/ParastichyGrid.d.ts +1 -1
- package/dist/components/ParastichyGrid.d.ts.map +1 -1
- package/dist/components/ParastichyGrid.js +3 -30
- package/dist/components/PhyllotaxisGrid.d.ts +1 -1
- package/dist/components/PhyllotaxisGrid.d.ts.map +1 -1
- package/dist/components/PhyllotaxisGrid.js +3 -32
- package/dist/components/ProjectLoader.d.ts +5 -3
- package/dist/components/ProjectLoader.d.ts.map +1 -1
- package/dist/components/ProjectLoader.js +6 -3
- package/dist/components/QuasiGrid.d.ts +1 -1
- package/dist/components/QuasiGrid.d.ts.map +1 -1
- package/dist/components/QuasiGrid.js +6 -33
- package/dist/components/RadarGrid.d.ts +1 -1
- package/dist/components/RadarGrid.d.ts.map +1 -1
- package/dist/components/RadarGrid.js +6 -34
- package/dist/components/ReactionDiffusionGrid.d.ts +1 -1
- package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
- package/dist/components/ReactionDiffusionGrid.js +6 -35
- package/dist/components/SceneBuilder.d.ts +25 -3
- package/dist/components/SceneBuilder.d.ts.map +1 -1
- package/dist/components/SceneBuilder.js +68 -38
- package/dist/components/SkyController.d.ts +25 -1
- package/dist/components/SkyController.d.ts.map +1 -1
- package/dist/components/SkyController.js +189 -130
- package/dist/components/SkyMesh.d.ts.map +1 -1
- package/dist/components/SkyMesh.js +26 -1
- package/dist/components/SkyStars.d.ts +11 -0
- package/dist/components/SkyStars.d.ts.map +1 -0
- package/dist/components/SkyStars.js +187 -0
- package/dist/components/SkySystem.d.ts +3 -3
- package/dist/components/SkySystem.d.ts.map +1 -1
- package/dist/components/SkySystem.js +8 -2
- package/dist/components/Sun.d.ts +15 -1
- package/dist/components/Sun.d.ts.map +1 -1
- package/dist/components/Sun.js +64 -3
- package/dist/components/SunLight.d.ts +6 -1
- package/dist/components/SunLight.d.ts.map +1 -1
- package/dist/components/SunLight.js +96 -44
- package/dist/components/TerrainBuilder.d.ts.map +1 -1
- package/dist/components/TerrainBuilder.js +2 -0
- package/dist/components/TextGenerator.d.ts +9 -0
- package/dist/components/TextGenerator.d.ts.map +1 -0
- package/dist/components/TextGenerator.js +29 -0
- package/dist/components/TruchetGrid.d.ts +1 -1
- package/dist/components/TruchetGrid.d.ts.map +1 -1
- package/dist/components/TruchetGrid.js +3 -30
- package/dist/components/VoronoiGrid.d.ts +1 -1
- package/dist/components/VoronoiGrid.d.ts.map +1 -1
- package/dist/components/VoronoiGrid.js +6 -33
- package/dist/components/WallpaperGrid.d.ts +1 -1
- package/dist/components/WallpaperGrid.d.ts.map +1 -1
- package/dist/components/WallpaperGrid.js +6 -35
- package/dist/components/environment/Rain.d.ts +15 -0
- package/dist/components/environment/Rain.d.ts.map +1 -0
- package/dist/components/environment/Rain.js +110 -0
- package/dist/components/environment/Rainbow.d.ts +20 -0
- package/dist/components/environment/Rainbow.d.ts.map +1 -0
- package/dist/components/environment/Rainbow.js +974 -0
- package/dist/components/environment/Sandstorm.d.ts +20 -0
- package/dist/components/environment/Sandstorm.d.ts.map +1 -0
- package/dist/components/environment/Sandstorm.js +776 -0
- package/dist/components/environment/Snow.d.ts +20 -0
- package/dist/components/environment/Snow.d.ts.map +1 -0
- package/dist/components/environment/Snow.js +609 -0
- package/dist/components/environment/Thunderstorm.d.ts +20 -0
- package/dist/components/environment/Thunderstorm.d.ts.map +1 -0
- package/dist/components/environment/Thunderstorm.js +731 -0
- package/dist/components/environment/Tornado.d.ts +20 -0
- package/dist/components/environment/Tornado.d.ts.map +1 -0
- package/dist/components/environment/Tornado.js +762 -0
- package/dist/components/environment/index.d.ts +13 -0
- package/dist/components/environment/index.d.ts.map +1 -0
- package/dist/components/environment/index.js +7 -0
- package/dist/components/index.d.ts +10 -10
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +8 -6
- package/dist/components/land/LandPatch.d.ts +15 -0
- package/dist/components/land/LandPatch.d.ts.map +1 -0
- package/dist/components/land/LandPatch.js +170 -0
- package/dist/components/land/index.d.ts +3 -0
- package/dist/components/land/index.d.ts.map +1 -0
- package/dist/components/land/index.js +1 -0
- package/dist/components/space/Earth.d.ts +16 -0
- package/dist/components/space/Earth.d.ts.map +1 -0
- package/dist/components/space/Earth.js +75 -0
- package/dist/components/space/ShootingStar.d.ts +21 -0
- package/dist/components/space/ShootingStar.d.ts.map +1 -0
- package/dist/components/space/ShootingStar.js +101 -0
- package/dist/components/space/ShootingStars.d.ts +16 -0
- package/dist/components/space/ShootingStars.d.ts.map +1 -0
- package/dist/components/space/ShootingStars.js +71 -0
- package/dist/components/space/SolarSystem.d.ts +16 -0
- package/dist/components/space/SolarSystem.d.ts.map +1 -0
- package/dist/components/space/SolarSystem.js +141 -0
- package/dist/components/space/Stars.d.ts +20 -0
- package/dist/components/space/Stars.d.ts.map +1 -0
- package/dist/components/space/Stars.js +160 -0
- package/dist/components/space/index.d.ts +11 -0
- package/dist/components/space/index.d.ts.map +1 -0
- package/dist/components/space/index.js +8 -0
- package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
- package/dist/components/terrain/TerrainSurface.js +27 -3
- package/dist/components/terrain/types.d.ts +5 -1
- package/dist/components/terrain/types.d.ts.map +1 -1
- package/dist/components/text/BurnAwayText.d.ts +15 -0
- package/dist/components/text/BurnAwayText.d.ts.map +1 -0
- package/dist/components/text/BurnAwayText.js +4 -0
- package/dist/components/text/ChalkboardText.d.ts +15 -0
- package/dist/components/text/ChalkboardText.d.ts.map +1 -0
- package/dist/components/text/ChalkboardText.js +4 -0
- package/dist/components/text/ConstellationText.d.ts +15 -0
- package/dist/components/text/ConstellationText.d.ts.map +1 -0
- package/dist/components/text/ConstellationText.js +4 -0
- package/dist/components/text/EmbroideryText.d.ts +15 -0
- package/dist/components/text/EmbroideryText.d.ts.map +1 -0
- package/dist/components/text/EmbroideryText.js +4 -0
- package/dist/components/text/FourierSketchText.d.ts +15 -0
- package/dist/components/text/FourierSketchText.d.ts.map +1 -0
- package/dist/components/text/FourierSketchText.js +4 -0
- package/dist/components/text/FrostGrowthText.d.ts +15 -0
- package/dist/components/text/FrostGrowthText.d.ts.map +1 -0
- package/dist/components/text/FrostGrowthText.js +4 -0
- package/dist/components/text/HandwritingText.d.ts +15 -0
- package/dist/components/text/HandwritingText.d.ts.map +1 -0
- package/dist/components/text/HandwritingText.js +4 -0
- package/dist/components/text/InkBleedText.d.ts +15 -0
- package/dist/components/text/InkBleedText.d.ts.map +1 -0
- package/dist/components/text/InkBleedText.js +4 -0
- package/dist/components/text/LightPaintingText.d.ts +15 -0
- package/dist/components/text/LightPaintingText.d.ts.map +1 -0
- package/dist/components/text/LightPaintingText.js +4 -0
- package/dist/components/text/LiquidMetalText.d.ts +15 -0
- package/dist/components/text/LiquidMetalText.d.ts.map +1 -0
- package/dist/components/text/LiquidMetalText.js +4 -0
- package/dist/components/text/NeonTubeText.d.ts +15 -0
- package/dist/components/text/NeonTubeText.d.ts.map +1 -0
- package/dist/components/text/NeonTubeText.js +4 -0
- package/dist/components/text/PlasmaDischargeText.d.ts +15 -0
- package/dist/components/text/PlasmaDischargeText.d.ts.map +1 -0
- package/dist/components/text/PlasmaDischargeText.js +4 -0
- package/dist/components/text/TextObjectView.d.ts +12 -0
- package/dist/components/text/TextObjectView.d.ts.map +1 -0
- package/dist/components/text/TextObjectView.js +11 -0
- package/dist/components/text/engine/fieldkit.d.ts +24 -0
- package/dist/components/text/engine/fieldkit.d.ts.map +1 -0
- package/dist/components/text/engine/fieldkit.js +201 -0
- package/dist/components/text/engine/glyphs.d.ts +19 -0
- package/dist/components/text/engine/glyphs.d.ts.map +1 -0
- package/dist/components/text/engine/glyphs.js +269 -0
- package/dist/components/text/engine/looks/burnAway.d.ts +144 -0
- package/dist/components/text/engine/looks/burnAway.d.ts.map +1 -0
- package/dist/components/text/engine/looks/burnAway.js +593 -0
- package/dist/components/text/engine/looks/chalkboard.d.ts +135 -0
- package/dist/components/text/engine/looks/chalkboard.d.ts.map +1 -0
- package/dist/components/text/engine/looks/chalkboard.js +426 -0
- package/dist/components/text/engine/looks/constellation.d.ts +111 -0
- package/dist/components/text/engine/looks/constellation.d.ts.map +1 -0
- package/dist/components/text/engine/looks/constellation.js +496 -0
- package/dist/components/text/engine/looks/embroidery.d.ts +165 -0
- package/dist/components/text/engine/looks/embroidery.d.ts.map +1 -0
- package/dist/components/text/engine/looks/embroidery.js +645 -0
- package/dist/components/text/engine/looks/frostGrowth.d.ts +109 -0
- package/dist/components/text/engine/looks/frostGrowth.d.ts.map +1 -0
- package/dist/components/text/engine/looks/frostGrowth.js +727 -0
- package/dist/components/text/engine/looks/index.d.ts +2 -0
- package/dist/components/text/engine/looks/index.d.ts.map +1 -0
- package/dist/components/text/engine/looks/index.js +48 -0
- package/dist/components/text/engine/looks/inkBleed.d.ts +103 -0
- package/dist/components/text/engine/looks/inkBleed.d.ts.map +1 -0
- package/dist/components/text/engine/looks/inkBleed.js +590 -0
- package/dist/components/text/engine/looks/lightPainting.d.ts +132 -0
- package/dist/components/text/engine/looks/lightPainting.d.ts.map +1 -0
- package/dist/components/text/engine/looks/lightPainting.js +567 -0
- package/dist/components/text/engine/looks/liquidMetal.d.ts +135 -0
- package/dist/components/text/engine/looks/liquidMetal.d.ts.map +1 -0
- package/dist/components/text/engine/looks/liquidMetal.js +655 -0
- package/dist/components/text/engine/looks/plasmaDischarge.d.ts +126 -0
- package/dist/components/text/engine/looks/plasmaDischarge.d.ts.map +1 -0
- package/dist/components/text/engine/looks/plasmaDischarge.js +763 -0
- package/dist/components/text/engine/methods.d.ts +19 -0
- package/dist/components/text/engine/methods.d.ts.map +1 -0
- package/dist/components/text/engine/methods.js +126 -0
- package/dist/components/text/engine/playback.d.ts +40 -0
- package/dist/components/text/engine/playback.d.ts.map +1 -0
- package/dist/components/text/engine/playback.js +114 -0
- package/dist/components/text/engine/ribbon.d.ts +58 -0
- package/dist/components/text/engine/ribbon.d.ts.map +1 -0
- package/dist/components/text/engine/ribbon.js +250 -0
- package/dist/components/text/engine/variants.d.ts +159 -0
- package/dist/components/text/engine/variants.d.ts.map +1 -0
- package/dist/components/text/engine/variants.js +378 -0
- package/dist/components/text/fonts/architects-daughter.outline.d.ts +3 -0
- package/dist/components/text/fonts/architects-daughter.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/architects-daughter.outline.js +4 -0
- package/dist/components/text/fonts/architects-daughter.strokes.d.ts +3 -0
- package/dist/components/text/fonts/architects-daughter.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/architects-daughter.strokes.js +4 -0
- package/dist/components/text/fonts/caveat.outline.d.ts +3 -0
- package/dist/components/text/fonts/caveat.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/caveat.outline.js +4 -0
- package/dist/components/text/fonts/caveat.strokes.d.ts +3 -0
- package/dist/components/text/fonts/caveat.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/caveat.strokes.js +4 -0
- package/dist/components/text/fonts/courgette.outline.d.ts +3 -0
- package/dist/components/text/fonts/courgette.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/courgette.outline.js +4 -0
- package/dist/components/text/fonts/courgette.strokes.d.ts +3 -0
- package/dist/components/text/fonts/courgette.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/courgette.strokes.js +4 -0
- package/dist/components/text/fonts/dancing-script.outline.d.ts +3 -0
- package/dist/components/text/fonts/dancing-script.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/dancing-script.outline.js +4 -0
- package/dist/components/text/fonts/dancing-script.strokes.d.ts +3 -0
- package/dist/components/text/fonts/dancing-script.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/dancing-script.strokes.js +4 -0
- package/dist/components/text/fonts/gochi-hand.outline.d.ts +3 -0
- package/dist/components/text/fonts/gochi-hand.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/gochi-hand.outline.js +4 -0
- package/dist/components/text/fonts/gochi-hand.strokes.d.ts +3 -0
- package/dist/components/text/fonts/gochi-hand.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/gochi-hand.strokes.js +4 -0
- package/dist/components/text/fonts/handlee.outline.d.ts +3 -0
- package/dist/components/text/fonts/handlee.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/handlee.outline.js +4 -0
- package/dist/components/text/fonts/handlee.strokes.d.ts +3 -0
- package/dist/components/text/fonts/handlee.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/handlee.strokes.js +4 -0
- package/dist/components/text/fonts/index.d.ts +5 -0
- package/dist/components/text/fonts/index.d.ts.map +1 -0
- package/dist/components/text/fonts/index.js +44 -0
- package/dist/components/text/fonts/indie-flower.outline.d.ts +3 -0
- package/dist/components/text/fonts/indie-flower.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/indie-flower.outline.js +4 -0
- package/dist/components/text/fonts/indie-flower.strokes.d.ts +3 -0
- package/dist/components/text/fonts/indie-flower.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/indie-flower.strokes.js +4 -0
- package/dist/components/text/fonts/kalam.outline.d.ts +3 -0
- package/dist/components/text/fonts/kalam.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/kalam.outline.js +4 -0
- package/dist/components/text/fonts/kalam.strokes.d.ts +3 -0
- package/dist/components/text/fonts/kalam.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/kalam.strokes.js +4 -0
- package/dist/components/text/fonts/kaushan-script.outline.d.ts +3 -0
- package/dist/components/text/fonts/kaushan-script.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/kaushan-script.outline.js +4 -0
- package/dist/components/text/fonts/kaushan-script.strokes.d.ts +3 -0
- package/dist/components/text/fonts/kaushan-script.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/kaushan-script.strokes.js +4 -0
- package/dist/components/text/fonts/mynerve.outline.d.ts +3 -0
- package/dist/components/text/fonts/mynerve.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/mynerve.outline.js +4 -0
- package/dist/components/text/fonts/mynerve.strokes.d.ts +3 -0
- package/dist/components/text/fonts/mynerve.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/mynerve.strokes.js +4 -0
- package/dist/components/text/fonts/nanum-pen-script.outline.d.ts +3 -0
- package/dist/components/text/fonts/nanum-pen-script.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/nanum-pen-script.outline.js +4 -0
- package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts +3 -0
- package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/nanum-pen-script.strokes.js +4 -0
- package/dist/components/text/fonts/pacifico.outline.d.ts +3 -0
- package/dist/components/text/fonts/pacifico.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/pacifico.outline.js +4 -0
- package/dist/components/text/fonts/pacifico.strokes.d.ts +3 -0
- package/dist/components/text/fonts/pacifico.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/pacifico.strokes.js +4 -0
- package/dist/components/text/fonts/patrick-hand.outline.d.ts +3 -0
- package/dist/components/text/fonts/patrick-hand.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/patrick-hand.outline.js +4 -0
- package/dist/components/text/fonts/patrick-hand.strokes.d.ts +3 -0
- package/dist/components/text/fonts/patrick-hand.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/patrick-hand.strokes.js +4 -0
- package/dist/components/text/fonts/poppins.outline.d.ts +3 -0
- package/dist/components/text/fonts/poppins.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/poppins.outline.js +4 -0
- package/dist/components/text/fonts/poppins.strokes.d.ts +3 -0
- package/dist/components/text/fonts/poppins.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/poppins.strokes.js +4 -0
- package/dist/components/text/fonts/satisfy.outline.d.ts +3 -0
- package/dist/components/text/fonts/satisfy.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/satisfy.outline.js +4 -0
- package/dist/components/text/fonts/satisfy.strokes.d.ts +3 -0
- package/dist/components/text/fonts/satisfy.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/satisfy.strokes.js +4 -0
- package/dist/components/text/fonts/sriracha.outline.d.ts +3 -0
- package/dist/components/text/fonts/sriracha.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/sriracha.outline.js +4 -0
- package/dist/components/text/fonts/sriracha.strokes.d.ts +3 -0
- package/dist/components/text/fonts/sriracha.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/sriracha.strokes.js +4 -0
- package/dist/components/text/index.d.ts +27 -0
- package/dist/components/text/index.d.ts.map +1 -0
- package/dist/components/text/index.js +13 -0
- package/dist/components/text/useTextObject.d.ts +21 -0
- package/dist/components/text/useTextObject.d.ts.map +1 -0
- package/dist/components/text/useTextObject.js +118 -0
- package/dist/components/water/OceanSurface.d.ts.map +1 -1
- package/dist/components/water/OceanSurface.js +3 -1
- package/dist/components/water/WaterBody.d.ts.map +1 -1
- package/dist/components/water/WaterBody.js +3 -1
- package/dist/components/water/types.d.ts +5 -1
- package/dist/components/water/types.d.ts.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useCloudSun.d.ts +9 -4
- package/dist/hooks/useCloudSun.d.ts.map +1 -1
- package/dist/hooks/useCloudSun.js +17 -7
- package/dist/hooks/useConfigLive.d.ts +3 -2
- package/dist/hooks/useConfigLive.d.ts.map +1 -1
- package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
- package/dist/hooks/useContinuousEffects.js +4 -10
- package/dist/hooks/useEnvironmentProbe.d.ts +3 -22
- package/dist/hooks/useEnvironmentProbe.d.ts.map +1 -1
- package/dist/hooks/useEnvironmentProbe.js +47 -8
- package/dist/hooks/useGridSurface.d.ts +3 -10
- package/dist/hooks/useGridSurface.d.ts.map +1 -1
- package/dist/hooks/useGridSurface.js +5 -31
- package/dist/hooks/useInteraction.d.ts.map +1 -1
- package/dist/hooks/useInteraction.js +19 -72
- package/dist/hooks/useLightConfig.d.ts +2 -1
- package/dist/hooks/useLightConfig.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.d.ts +6 -2
- package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.js +37 -2
- package/dist/hooks/useSkyLive.d.ts +23 -0
- package/dist/hooks/useSkyLive.d.ts.map +1 -0
- package/dist/hooks/useSkyLive.js +30 -0
- package/dist/hooks/useSkyUniforms.d.ts.map +1 -1
- package/dist/hooks/useSkyUniforms.js +2 -10
- package/dist/hooks/useTerrainLive.d.ts +3 -1
- package/dist/hooks/useTerrainLive.d.ts.map +1 -1
- package/dist/hooks/useTerrainTextures.d.ts +38 -0
- package/dist/hooks/useTerrainTextures.d.ts.map +1 -0
- package/dist/hooks/useTerrainTextures.js +149 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/operations/catalogue/blastOff.d.ts +3 -0
- package/dist/operations/catalogue/blastOff.d.ts.map +1 -0
- package/dist/operations/catalogue/blastOff.js +118 -0
- package/dist/operations/catalogue/bounce.d.ts +3 -0
- package/dist/operations/catalogue/bounce.d.ts.map +1 -0
- package/dist/operations/catalogue/bounce.js +34 -0
- package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -1
- package/dist/operations/catalogue/curlSmoke.js +3 -1
- package/dist/operations/catalogue/dissolve.d.ts.map +1 -1
- package/dist/operations/catalogue/dissolve.js +2 -1
- package/dist/operations/catalogue/driftUp.d.ts +3 -0
- package/dist/operations/catalogue/driftUp.d.ts.map +1 -0
- package/dist/operations/catalogue/driftUp.js +57 -0
- package/dist/operations/catalogue/emberAsh.d.ts.map +1 -1
- package/dist/operations/catalogue/emberAsh.js +2 -1
- package/dist/operations/catalogue/flip.d.ts.map +1 -1
- package/dist/operations/catalogue/flip.js +19 -9
- package/dist/operations/catalogue/float.d.ts +3 -0
- package/dist/operations/catalogue/float.d.ts.map +1 -0
- package/dist/operations/catalogue/float.js +39 -0
- package/dist/operations/catalogue/flyBy.d.ts +3 -0
- package/dist/operations/catalogue/flyBy.d.ts.map +1 -0
- package/dist/operations/catalogue/flyBy.js +79 -0
- package/dist/operations/catalogue/frost.d.ts.map +1 -1
- package/dist/operations/catalogue/frost.js +10 -3
- package/dist/operations/catalogue/grow.d.ts +3 -0
- package/dist/operations/catalogue/grow.d.ts.map +1 -0
- package/dist/operations/catalogue/grow.js +19 -0
- package/dist/operations/catalogue/hologram.d.ts.map +1 -1
- package/dist/operations/catalogue/hologram.js +11 -5
- package/dist/operations/catalogue/jelly.d.ts.map +1 -1
- package/dist/operations/catalogue/jelly.js +18 -8
- package/dist/operations/catalogue/knockAway.d.ts +3 -0
- package/dist/operations/catalogue/knockAway.d.ts.map +1 -0
- package/dist/operations/catalogue/knockAway.js +74 -0
- package/dist/operations/catalogue/leafFall.d.ts +3 -0
- package/dist/operations/catalogue/leafFall.d.ts.map +1 -0
- package/dist/operations/catalogue/leafFall.js +74 -0
- package/dist/operations/catalogue/lidarScan.d.ts.map +1 -1
- package/dist/operations/catalogue/lidarScan.js +4 -1
- package/dist/operations/catalogue/metalize.d.ts.map +1 -1
- package/dist/operations/catalogue/metalize.js +8 -2
- package/dist/operations/catalogue/motionTrail.d.ts +6 -0
- package/dist/operations/catalogue/motionTrail.d.ts.map +1 -0
- package/dist/operations/catalogue/motionTrail.js +221 -0
- package/dist/operations/catalogue/petrify.d.ts.map +1 -1
- package/dist/operations/catalogue/petrify.js +9 -3
- package/dist/operations/catalogue/physicalExit.d.ts +55 -0
- package/dist/operations/catalogue/physicalExit.d.ts.map +1 -0
- package/dist/operations/catalogue/physicalExit.js +165 -0
- package/dist/operations/catalogue/physicalHeld.d.ts +41 -0
- package/dist/operations/catalogue/physicalHeld.d.ts.map +1 -0
- package/dist/operations/catalogue/physicalHeld.js +78 -0
- package/dist/operations/catalogue/physicalMix.d.ts +45 -0
- package/dist/operations/catalogue/physicalMix.d.ts.map +1 -0
- package/dist/operations/catalogue/physicalMix.js +144 -0
- package/dist/operations/catalogue/pop.d.ts +3 -0
- package/dist/operations/catalogue/pop.d.ts.map +1 -0
- package/dist/operations/catalogue/pop.js +44 -0
- package/dist/operations/catalogue/print3d.d.ts.map +1 -1
- package/dist/operations/catalogue/print3d.js +5 -1
- package/dist/operations/catalogue/pulse.d.ts +3 -0
- package/dist/operations/catalogue/pulse.d.ts.map +1 -0
- package/dist/operations/catalogue/pulse.js +29 -0
- package/dist/operations/catalogue/restPose.d.ts +5 -7
- package/dist/operations/catalogue/restPose.d.ts.map +1 -1
- package/dist/operations/catalogue/restPose.js +18 -48
- package/dist/operations/catalogue/rotate.d.ts +3 -0
- package/dist/operations/catalogue/rotate.d.ts.map +1 -0
- package/dist/operations/catalogue/rotate.js +49 -0
- package/dist/operations/catalogue/shake.d.ts +3 -0
- package/dist/operations/catalogue/shake.d.ts.map +1 -0
- package/dist/operations/catalogue/shake.js +31 -0
- package/dist/operations/catalogue/shatter.d.ts.map +1 -1
- package/dist/operations/catalogue/shatter.js +5 -1
- package/dist/operations/catalogue/slam.d.ts +3 -0
- package/dist/operations/catalogue/slam.d.ts.map +1 -0
- package/dist/operations/catalogue/slam.js +89 -0
- package/dist/operations/catalogue/slingshot.d.ts +3 -0
- package/dist/operations/catalogue/slingshot.d.ts.map +1 -0
- package/dist/operations/catalogue/slingshot.js +88 -0
- package/dist/operations/catalogue/spin.d.ts.map +1 -1
- package/dist/operations/catalogue/spin.js +24 -13
- package/dist/operations/catalogue/sway.d.ts +3 -0
- package/dist/operations/catalogue/sway.d.ts.map +1 -0
- package/dist/operations/catalogue/sway.js +23 -0
- package/dist/operations/catalogue/swirl.d.ts.map +1 -1
- package/dist/operations/catalogue/swirl.js +6 -5
- package/dist/operations/catalogue/trailCore.d.ts +89 -0
- package/dist/operations/catalogue/trailCore.d.ts.map +1 -0
- package/dist/operations/catalogue/trailCore.js +190 -0
- package/dist/operations/catalogue/trailGhosts.d.ts +5 -0
- package/dist/operations/catalogue/trailGhosts.d.ts.map +1 -0
- package/dist/operations/catalogue/trailGhosts.js +179 -0
- package/dist/operations/catalogue/trailStampStyles.d.ts +11 -0
- package/dist/operations/catalogue/trailStampStyles.d.ts.map +1 -0
- package/dist/operations/catalogue/trailStampStyles.js +479 -0
- package/dist/operations/catalogue/trailStamps.d.ts +57 -0
- package/dist/operations/catalogue/trailStamps.d.ts.map +1 -0
- package/dist/operations/catalogue/trailStamps.js +349 -0
- package/dist/operations/catalogue/trailStreaks.d.ts +3 -0
- package/dist/operations/catalogue/trailStreaks.d.ts.map +1 -0
- package/dist/operations/catalogue/trailStreaks.js +147 -0
- package/dist/operations/catalogue/transitionField.d.ts +30 -0
- package/dist/operations/catalogue/transitionField.d.ts.map +1 -1
- package/dist/operations/catalogue/transitionField.js +21 -0
- package/dist/operations/catalogue/turnAway.d.ts +3 -0
- package/dist/operations/catalogue/turnAway.d.ts.map +1 -0
- package/dist/operations/catalogue/turnAway.js +54 -0
- package/dist/operations/catalogue/vortexDrain.d.ts +3 -0
- package/dist/operations/catalogue/vortexDrain.d.ts.map +1 -0
- package/dist/operations/catalogue/vortexDrain.js +68 -0
- package/dist/operations/catalogue/warp.d.ts +3 -0
- package/dist/operations/catalogue/warp.d.ts.map +1 -0
- package/dist/operations/catalogue/warp.js +73 -0
- package/dist/operations/catalogue/whoosh.d.ts +3 -0
- package/dist/operations/catalogue/whoosh.d.ts.map +1 -0
- package/dist/operations/catalogue/whoosh.js +84 -0
- package/dist/operations/catalogue/wobble.d.ts +3 -0
- package/dist/operations/catalogue/wobble.d.ts.map +1 -0
- package/dist/operations/catalogue/wobble.js +23 -0
- package/dist/operations/clipPreview.d.ts +3 -0
- package/dist/operations/clipPreview.d.ts.map +1 -0
- package/dist/operations/clipPreview.js +20 -0
- package/dist/operations/groupFanout.d.ts +96 -0
- package/dist/operations/groupFanout.d.ts.map +1 -0
- package/dist/operations/groupFanout.js +365 -0
- package/dist/operations/groups.d.ts +20 -0
- package/dist/operations/groups.d.ts.map +1 -0
- package/dist/operations/groups.js +66 -0
- package/dist/operations/index.d.ts +5 -2
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +5 -2
- package/dist/operations/objectEffects.d.ts +161 -6
- package/dist/operations/objectEffects.d.ts.map +1 -1
- package/dist/operations/objectEffects.js +1091 -17
- package/dist/operations/registry.d.ts.map +1 -1
- package/dist/operations/registry.js +24 -2
- package/dist/operations/runtime.d.ts +57 -2
- package/dist/operations/runtime.d.ts.map +1 -1
- package/dist/operations/runtime.js +161 -18
- package/dist/operations/types.d.ts +60 -3
- package/dist/operations/types.d.ts.map +1 -1
- package/dist/operations/types.js +5 -1
- package/dist/operations/useObjectEffectLayers.d.ts +2 -2
- package/dist/operations/useObjectEffectLayers.d.ts.map +1 -1
- package/dist/operations/useObjectEffectLayers.js +31 -10
- package/dist/operations/usePresentedVisibility.d.ts +10 -0
- package/dist/operations/usePresentedVisibility.d.ts.map +1 -0
- package/dist/operations/usePresentedVisibility.js +53 -0
- package/dist/presets/terrainBiomes.d.ts +67 -0
- package/dist/presets/terrainBiomes.d.ts.map +1 -0
- package/dist/presets/terrainBiomes.js +294 -0
- package/dist/presets/terrainPresets.d.ts +6 -0
- package/dist/presets/terrainPresets.d.ts.map +1 -1
- package/dist/presets/terrainPresets.js +26 -38
- package/dist/shaders/glsl/oceanCore.glsl.d.ts +2 -2
- package/dist/shaders/glsl/oceanCore.glsl.d.ts.map +1 -1
- package/dist/shaders/glsl/oceanCore.glsl.js +17 -0
- package/dist/shaders/glsl/surfaceCore.glsl.d.ts +21 -0
- package/dist/shaders/glsl/surfaceCore.glsl.d.ts.map +1 -0
- package/dist/shaders/glsl/surfaceCore.glsl.js +120 -0
- package/dist/shaders/glsl/terrainCore.glsl.d.ts +16 -3
- package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -1
- package/dist/shaders/glsl/terrainCore.glsl.js +266 -20
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +2 -0
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
- package/dist/shaders/ocean/OceanSurfaceMaterial.js +3 -0
- package/dist/shaders/terrain/TerrainMaterial.d.ts +17 -0
- package/dist/shaders/terrain/TerrainMaterial.d.ts.map +1 -1
- package/dist/shaders/terrain/TerrainMaterial.js +107 -8
- package/dist/triggers/engine.d.ts +44 -0
- package/dist/triggers/engine.d.ts.map +1 -0
- package/dist/triggers/engine.js +165 -0
- package/dist/triggers/hosts/actions.d.ts +8 -0
- package/dist/triggers/hosts/actions.d.ts.map +1 -0
- package/dist/triggers/hosts/actions.js +22 -0
- package/dist/triggers/hosts/interactions.d.ts +6 -0
- package/dist/triggers/hosts/interactions.d.ts.map +1 -0
- package/dist/triggers/hosts/interactions.js +4 -0
- package/dist/triggers/hosts/timelineCues.d.ts +2 -0
- package/dist/triggers/hosts/timelineCues.d.ts.map +1 -0
- package/dist/triggers/hosts/timelineCues.js +22 -0
- package/dist/triggers/index.d.ts +13 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +9 -0
- package/dist/triggers/kinds/action.d.ts +2 -0
- package/dist/triggers/kinds/action.d.ts.map +1 -0
- package/dist/triggers/kinds/action.js +31 -0
- package/dist/triggers/kinds/animations.d.ts +2 -0
- package/dist/triggers/kinds/animations.d.ts.map +1 -0
- package/dist/triggers/kinds/animations.js +75 -0
- package/dist/triggers/kinds/effects.d.ts +2 -0
- package/dist/triggers/kinds/effects.d.ts.map +1 -0
- package/dist/triggers/kinds/effects.js +27 -0
- package/dist/triggers/kinds/index.d.ts +4 -0
- package/dist/triggers/kinds/index.d.ts.map +1 -0
- package/dist/triggers/kinds/index.js +4 -0
- package/dist/triggers/log.d.ts +21 -0
- package/dist/triggers/log.d.ts.map +1 -0
- package/dist/triggers/log.js +43 -0
- package/dist/triggers/readiness.d.ts +40 -0
- package/dist/triggers/readiness.d.ts.map +1 -0
- package/dist/triggers/readiness.js +158 -0
- package/dist/triggers/registry.d.ts +41 -0
- package/dist/triggers/registry.d.ts.map +1 -0
- package/dist/triggers/registry.js +7 -0
- package/dist/types/gridConfigs.d.ts +18 -23
- package/dist/types/gridConfigs.d.ts.map +1 -1
- package/dist/ui/UiAnchorUpdater.d.ts +10 -0
- package/dist/ui/UiAnchorUpdater.d.ts.map +1 -0
- package/dist/ui/UiAnchorUpdater.js +111 -0
- package/dist/ui/UiLayers.d.ts +20 -0
- package/dist/ui/UiLayers.d.ts.map +1 -0
- package/dist/ui/UiLayers.js +57 -0
- package/dist/ui/index.d.ts +9 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +6 -0
- package/dist/ui/uiAnchors.d.ts +21 -0
- package/dist/ui/uiAnchors.d.ts.map +1 -0
- package/dist/ui/uiAnchors.js +22 -0
- package/dist/ui/uiBaseStyles.d.ts +2 -0
- package/dist/ui/uiBaseStyles.d.ts.map +1 -0
- package/dist/ui/uiBaseStyles.js +100 -0
- package/dist/ui/uiBinder.d.ts +30 -0
- package/dist/ui/uiBinder.d.ts.map +1 -0
- package/dist/ui/uiBinder.js +344 -0
- package/dist/utils/configAnimations.d.ts.map +1 -1
- package/dist/utils/configAnimations.js +5 -1
- package/dist/utils/gridConfig.d.ts +1 -1
- package/dist/utils/gridConfig.d.ts.map +1 -1
- package/dist/utils/gridConfig.js +1 -1
- package/dist/utils/landPatch.d.ts +33 -0
- package/dist/utils/landPatch.d.ts.map +1 -0
- package/dist/utils/landPatch.js +114 -0
- package/dist/utils/renderedSky.d.ts +32 -0
- package/dist/utils/renderedSky.d.ts.map +1 -0
- package/dist/utils/renderedSky.js +57 -0
- package/dist/utils/skyMoon.d.ts +35 -0
- package/dist/utils/skyMoon.d.ts.map +1 -0
- package/dist/utils/skyMoon.js +41 -0
- package/dist/utils/terrainHeight.d.ts +4 -0
- package/dist/utils/terrainHeight.d.ts.map +1 -0
- package/dist/utils/terrainHeight.js +150 -0
- package/dist/utils/terrainTextureResolver.d.ts +18 -0
- package/dist/utils/terrainTextureResolver.d.ts.map +1 -0
- package/dist/utils/terrainTextureResolver.js +17 -0
- package/dist/utils/terrainUniforms.d.ts +17 -0
- package/dist/utils/terrainUniforms.d.ts.map +1 -1
- package/dist/utils/terrainUniforms.js +84 -0
- package/dist/utils/textureArrays.d.ts +29 -0
- package/dist/utils/textureArrays.d.ts.map +1 -0
- package/dist/utils/textureArrays.js +140 -0
- package/package.json +2 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const DRAW_METHODS: string[];
|
|
2
|
+
export declare const ERASE_METHODS: string[];
|
|
3
|
+
export declare const TIP_METHODS: string[];
|
|
4
|
+
export declare function prepare(strokes: any, mode: any): void;
|
|
5
|
+
export declare function extentOf(strokes: any): {
|
|
6
|
+
x0: number;
|
|
7
|
+
y0: number;
|
|
8
|
+
x1: number;
|
|
9
|
+
y1: number;
|
|
10
|
+
w: number;
|
|
11
|
+
h: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function applyDraw(method: any, strokes: any, o: any, ctx: any): any;
|
|
14
|
+
export declare function applyErase(method: any, strokes: any, o: any, ctx: any): any;
|
|
15
|
+
export declare function applyAnim(strokes: any, anim: any, G: any): {
|
|
16
|
+
infoD: any;
|
|
17
|
+
infoE: any;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=methods.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"methods.d.ts","sourceRoot":"","sources":["../../../../src/components/text/engine/methods.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,UAAwF,CAAC;AAClH,eAAO,MAAM,aAAa,UAAyG,CAAC;AACpI,eAAO,MAAM,WAAW,UAA+B,CAAC;AASxD,wBAAgB,OAAO,CAAC,OAAO,KAAA,EAAE,IAAI,KAAA,QAMpC;AACD,wBAAgB,QAAQ,CAAC,OAAO,KAAA;;;;;;;EAI/B;AA2CD,wBAAgB,SAAS,CAAC,MAAM,KAAA,EAAE,OAAO,KAAA,EAAE,CAAC,KAAA,EAAE,GAAG,KAAA,OAIhD;AACD,wBAAgB,UAAU,CAAC,MAAM,KAAA,EAAE,OAAO,KAAA,EAAE,CAAC,KAAA,EAAE,GAAG,KAAA,OASjD;AAED,wBAAgB,SAAS,CAAC,OAAO,KAAA,EAAE,IAAI,KAAA,EAAE,CAAC,KAAA;;;EAKzC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { penTiming } from './glyphs.js';
|
|
2
|
+
// Draw / erase methods. A method only fills the schedule fields of each stroke:
|
|
3
|
+
// draw : s.seg (window in global progress) + s.t (per-point time inside the window)
|
|
4
|
+
// erase: s.segO + s.tO
|
|
5
|
+
// Methods are shared by every look. A few are look-native (epicycle). 'none' = no animation, 'cut' = instant erase.
|
|
6
|
+
export const DRAW_METHODS = ['pen', 'trace', 'bothEnds', 'wipe', 'radial', 'scatter', 'dissolve', 'fade', 'none'];
|
|
7
|
+
export const ERASE_METHODS = ['fade', 'undraw', 'wipe', 'radial', 'scatter', 'dissolve', 'trace', 'bothEnds', 'pen', 'cut', 'none'];
|
|
8
|
+
export const TIP_METHODS = ['pen', 'trace', 'epicycle']; // methods that have a visible pen / front
|
|
9
|
+
const hash = (a, b = 0) => { const x = Math.sin(a * 127.1 + b * 311.7) * 43758.5453; return x - Math.floor(x); };
|
|
10
|
+
const arcT = (s) => { const n = s.pts.length / 2, a = new Float32Array(n); for (let i = 0; i < n; i++)
|
|
11
|
+
a[i] = s.cum[i] / Math.max(1e-9, s.len); return a; };
|
|
12
|
+
const pathT = (s) => (s.pt ? Float32Array.from(s.pt) : arcT(s));
|
|
13
|
+
const fill = (n, v) => new Float32Array(n).fill(v);
|
|
14
|
+
const nOf = (s) => s.pts.length / 2;
|
|
15
|
+
// mode: 'hand' (pen timing from the 2/3 power law), 'outline' (time ~ length), 'keep' (stroke already has t)
|
|
16
|
+
export function prepare(strokes, mode) {
|
|
17
|
+
for (const s of strokes) {
|
|
18
|
+
if (mode === 'hand') {
|
|
19
|
+
penTiming(s);
|
|
20
|
+
s.pt = s.t;
|
|
21
|
+
s.ptime = s.time;
|
|
22
|
+
s.t = null;
|
|
23
|
+
}
|
|
24
|
+
else if (mode === 'keep') {
|
|
25
|
+
s.pt = s.t;
|
|
26
|
+
s.ptime = s.ptime || Math.max(s.len, 1e-3);
|
|
27
|
+
s.t = null;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
s.pt = null;
|
|
31
|
+
s.ptime = Math.max(s.len, 1e-3);
|
|
32
|
+
s.t = null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function extentOf(strokes) {
|
|
37
|
+
let x0 = 1e9, y0 = 1e9, x1 = -1e9, y1 = -1e9;
|
|
38
|
+
for (const s of strokes)
|
|
39
|
+
for (let i = 0; i < s.pts.length; i += 2) {
|
|
40
|
+
x0 = Math.min(x0, s.pts[i]);
|
|
41
|
+
x1 = Math.max(x1, s.pts[i]);
|
|
42
|
+
y0 = Math.min(y0, s.pts[i + 1]);
|
|
43
|
+
y1 = Math.max(y1, s.pts[i + 1]);
|
|
44
|
+
}
|
|
45
|
+
return { x0, y0, x1, y1, w: Math.max(1e-6, x1 - x0), h: Math.max(1e-6, y1 - y0) };
|
|
46
|
+
}
|
|
47
|
+
// returns { sched: [{seg, t}], info: {soft, fade, tip} }
|
|
48
|
+
const GEN = {
|
|
49
|
+
pen(strokes) {
|
|
50
|
+
const avg = strokes.reduce((a, s) => a + s.ptime, 0) / Math.max(1, strokes.length), gap = 0.2 * avg;
|
|
51
|
+
const sum = strokes.reduce((a, s) => a + s.ptime + gap, 0);
|
|
52
|
+
let c = 0;
|
|
53
|
+
return { sched: strokes.map((s) => { const r = { seg: [c / sum, (c + s.ptime) / sum], t: pathT(s) }; c += s.ptime + gap; return r; }), info: { soft: 0.004 } };
|
|
54
|
+
},
|
|
55
|
+
trace(strokes, o, ctx) {
|
|
56
|
+
const G = ctx.G, st = o.stagger / G, win = 1 - (G - 1) * st;
|
|
57
|
+
return { sched: strokes.map((s) => ({ seg: [s.glyph * st, s.glyph * st + win], t: pathT(s) })), info: { soft: 0.004 } };
|
|
58
|
+
},
|
|
59
|
+
epicycle(strokes, o, ctx) {
|
|
60
|
+
const G = ctx.G;
|
|
61
|
+
return { sched: strokes.map((s) => ({ seg: [s.glyph / G, (s.glyph + 1) / G], t: pathT(s) })), info: { soft: 0.004 } };
|
|
62
|
+
},
|
|
63
|
+
bothEnds(strokes, o, ctx) {
|
|
64
|
+
const G = ctx.G, st = o.stagger / G, win = 1 - (G - 1) * st;
|
|
65
|
+
return { sched: strokes.map((s) => { const u = arcT(s); const t = u.map((x) => 2 * Math.min(x, 1 - x)); return { seg: [s.glyph * st, s.glyph * st + win], t }; }), info: { soft: 0.02 } };
|
|
66
|
+
},
|
|
67
|
+
wipe(strokes, o, ctx) {
|
|
68
|
+
const a = ((o.angle || 0) * Math.PI) / 180, dx = Math.cos(a), dy = Math.sin(a);
|
|
69
|
+
const e = ctx.ext;
|
|
70
|
+
const proj = (x, y) => (x - e.x0) * dx + (y - e.y0) * dy;
|
|
71
|
+
const corners = [proj(e.x0, e.y0), proj(e.x1, e.y0), proj(e.x0, e.y1), proj(e.x1, e.y1)];
|
|
72
|
+
const lo = Math.min(...corners), hi = Math.max(...corners), span = Math.max(1e-6, hi - lo);
|
|
73
|
+
return { sched: strokes.map((s) => { const n = nOf(s), t = new Float32Array(n); for (let i = 0; i < n; i++)
|
|
74
|
+
t[i] = (proj(s.pts[2 * i], s.pts[2 * i + 1]) - lo) / span; return { seg: [0, 1], t }; }), info: { soft: 0.14 } };
|
|
75
|
+
},
|
|
76
|
+
radial(strokes, o, ctx) {
|
|
77
|
+
const e = ctx.ext, cx = (e.x0 + e.x1) / 2, cy = (e.y0 + e.y1) / 2;
|
|
78
|
+
let rm = 1e-6;
|
|
79
|
+
const R = (x, y) => Math.hypot(x - cx, (y - cy) * 2.0);
|
|
80
|
+
for (const s of strokes)
|
|
81
|
+
for (let i = 0; i < s.pts.length; i += 2)
|
|
82
|
+
rm = Math.max(rm, R(s.pts[i], s.pts[i + 1]));
|
|
83
|
+
return { sched: strokes.map((s) => { const n = nOf(s), t = new Float32Array(n); for (let i = 0; i < n; i++)
|
|
84
|
+
t[i] = R(s.pts[2 * i], s.pts[2 * i + 1]) / rm; return { seg: [0, 1], t }; }), info: { soft: 0.14 } };
|
|
85
|
+
},
|
|
86
|
+
scatter(strokes, o, ctx) {
|
|
87
|
+
return { sched: strokes.map((s) => { const h = hash(s.glyph, ctx.seed); return { seg: [h * 0.6, h * 0.6 + 0.4], t: pathT(s) }; }), info: { soft: 0.004 } };
|
|
88
|
+
},
|
|
89
|
+
dissolve(strokes, o, ctx) {
|
|
90
|
+
return { sched: strokes.map((s, si) => { const n = nOf(s), t = new Float32Array(n); for (let i = 0; i < n; i++)
|
|
91
|
+
t[i] = hash(Math.floor(s.cum[i] / 0.07), s.glyph * 7 + si + ctx.seed); return { seg: [0, 1], t }; }), info: { soft: 0.2 } };
|
|
92
|
+
},
|
|
93
|
+
fade(strokes) { return { sched: strokes.map((s) => ({ seg: [0, 1], t: fill(nOf(s), 0) })), info: { soft: 0.004, fade: true } }; },
|
|
94
|
+
};
|
|
95
|
+
GEN.none = GEN.fade;
|
|
96
|
+
GEN.cut = GEN.fade;
|
|
97
|
+
export function applyDraw(method, strokes, o, ctx) {
|
|
98
|
+
const g = (GEN[method] || GEN.fade)(strokes, o, { ...ctx, seed: 0 });
|
|
99
|
+
strokes.forEach((s, i) => { s.seg = g.sched[i].seg; s.t = g.sched[i].t; });
|
|
100
|
+
ctx.drawSched = g.sched;
|
|
101
|
+
return { soft: 0.004, tip: TIP_METHODS.includes(method), fade: false, ...g.info };
|
|
102
|
+
}
|
|
103
|
+
export function applyErase(method, strokes, o, ctx) {
|
|
104
|
+
let sched, info = { soft: 0.004 };
|
|
105
|
+
if (method === 'undraw') { // mirror of the draw: last drawn goes first, each stroke from its end
|
|
106
|
+
sched = ctx.drawSched.map((d) => ({ seg: [1 - d.seg[1], 1 - d.seg[0]], t: d.t.map((x) => 1 - x) }));
|
|
107
|
+
info = { soft: ctx.drawInfo ? ctx.drawInfo.soft : 0.004, fade: !!(ctx.drawInfo && ctx.drawInfo.fade) };
|
|
108
|
+
if (info.fade)
|
|
109
|
+
info.soft = 0.004;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
const g = (GEN[method] || GEN.fade)(strokes, o, { ...ctx, seed: 5 });
|
|
113
|
+
sched = g.sched;
|
|
114
|
+
info = { soft: 0.004, ...g.info };
|
|
115
|
+
}
|
|
116
|
+
strokes.forEach((s, i) => { s.segO = sched[i].seg; s.tO = sched[i].t; });
|
|
117
|
+
return { soft: 0.004, fade: false, ...info };
|
|
118
|
+
}
|
|
119
|
+
// convenience: set up both schedules, returns {infoD, infoE}
|
|
120
|
+
export function applyAnim(strokes, anim, G) {
|
|
121
|
+
const ctx = { G: Math.max(1, G), ext: extentOf(strokes) };
|
|
122
|
+
const infoD = applyDraw(anim.draw.method, strokes, anim.draw, ctx);
|
|
123
|
+
ctx.drawInfo = infoD;
|
|
124
|
+
const infoE = applyErase(anim.erase.method, strokes, anim.erase, ctx);
|
|
125
|
+
return { infoD, infoE };
|
|
126
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const EASES: {
|
|
2
|
+
linear: (t: any) => any;
|
|
3
|
+
easeInOut: (t: any) => number;
|
|
4
|
+
easeOut: (t: any) => number;
|
|
5
|
+
easeIn: (t: any) => number;
|
|
6
|
+
};
|
|
7
|
+
export declare const hasAnim: (m: any) => boolean;
|
|
8
|
+
export declare function cycleLength(cfg: any): number;
|
|
9
|
+
export declare function cycleAt(tau: any, cfg: any): {
|
|
10
|
+
d: number;
|
|
11
|
+
e: number;
|
|
12
|
+
since: number;
|
|
13
|
+
};
|
|
14
|
+
export declare function createPlayback(): {
|
|
15
|
+
S: {
|
|
16
|
+
d: number;
|
|
17
|
+
e: number;
|
|
18
|
+
since: number;
|
|
19
|
+
mode: string;
|
|
20
|
+
s: number;
|
|
21
|
+
clock: number;
|
|
22
|
+
paused: boolean;
|
|
23
|
+
};
|
|
24
|
+
hide(): void;
|
|
25
|
+
reset(cfg: any): void;
|
|
26
|
+
restart(cfg: any): void;
|
|
27
|
+
playDraw(cfg: any): void;
|
|
28
|
+
playErase(cfg: any): void;
|
|
29
|
+
seek(cfg: any, u: any): void;
|
|
30
|
+
step(dt: any, cfg: any): {
|
|
31
|
+
d: number;
|
|
32
|
+
e: number;
|
|
33
|
+
since: number;
|
|
34
|
+
mode: string;
|
|
35
|
+
s: number;
|
|
36
|
+
clock: number;
|
|
37
|
+
paused: boolean;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=playback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../../../src/components/text/engine/playback.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,KAAK;;;;;CAKjB,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,MAAC,YAAsB,CAAC;AAGhD,wBAAgB,WAAW,CAAC,GAAG,KAAA,UAE9B;AAED,wBAAgB,OAAO,CAAC,GAAG,KAAA,EAAE,GAAG,KAAA;;;;EAa/B;AAED,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;EA6B7B"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// Playback controller. The text is a normal running object (constant state: drawn, idle effects on real time).
|
|
2
|
+
// Draw and erase are optional animations layered on top. Output each frame: d (draw 0..1), e (erase 0..1),
|
|
3
|
+
// since (seconds since the draw finished, drives drying / settling).
|
|
4
|
+
//
|
|
5
|
+
// Cycle (loop): hidden gap -> draw -> hold -> erase -> hidden gap -> repeat.
|
|
6
|
+
// Yoyo: the whole cycle plays forward, then backward (erase reversed = re-appears, draw reversed = un-draws).
|
|
7
|
+
export const EASES = {
|
|
8
|
+
linear: (t) => t,
|
|
9
|
+
easeInOut: (t) => (t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2),
|
|
10
|
+
easeOut: (t) => 1 - Math.pow(1 - t, 3),
|
|
11
|
+
easeIn: (t) => t * t * t,
|
|
12
|
+
};
|
|
13
|
+
const clamp01 = (x) => Math.max(0, Math.min(1, x));
|
|
14
|
+
export const hasAnim = (m) => m && m !== 'none';
|
|
15
|
+
const durOf = (c, isErase) => (!hasAnim(c.method) || (isErase && c.method === 'cut') ? 0 : Math.max(0, c.duration));
|
|
16
|
+
export function cycleLength(cfg) {
|
|
17
|
+
const g = cfg.play.hiddenTime;
|
|
18
|
+
return Math.max(0.01, g + durOf(cfg.draw, false) + cfg.play.holdTime + durOf(cfg.erase, true) + g);
|
|
19
|
+
}
|
|
20
|
+
// cycle clock tau -> state
|
|
21
|
+
export function cycleAt(tau, cfg) {
|
|
22
|
+
const g = cfg.play.hiddenTime, Dd = durOf(cfg.draw, false), H = cfg.play.holdTime, De = durOf(cfg.erase, true);
|
|
23
|
+
const ed = EASES[cfg.draw.ease] || EASES.easeInOut, ee = EASES[cfg.erase.ease] || EASES.easeInOut;
|
|
24
|
+
const hasErase = hasAnim(cfg.erase.method);
|
|
25
|
+
let d = 0, e = 0;
|
|
26
|
+
if (tau < g) {
|
|
27
|
+
d = 0;
|
|
28
|
+
e = 0;
|
|
29
|
+
}
|
|
30
|
+
else if (tau < g + Dd) {
|
|
31
|
+
d = ed((tau - g) / Dd);
|
|
32
|
+
}
|
|
33
|
+
else if (tau < g + Dd + H) {
|
|
34
|
+
d = 1;
|
|
35
|
+
}
|
|
36
|
+
else if (tau < g + Dd + H + De) {
|
|
37
|
+
d = 1;
|
|
38
|
+
e = ee((tau - g - Dd - H) / De);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
d = 1;
|
|
42
|
+
e = hasErase ? 1 : 0;
|
|
43
|
+
if (!hasErase)
|
|
44
|
+
d = 0;
|
|
45
|
+
} // no erase: cut back to hidden
|
|
46
|
+
if (Dd === 0 && tau >= g)
|
|
47
|
+
d = 1;
|
|
48
|
+
const since = Math.max(0, tau - g - Dd);
|
|
49
|
+
return { d, e, since };
|
|
50
|
+
}
|
|
51
|
+
export function createPlayback() {
|
|
52
|
+
const S = { d: 1, e: 0, since: 99, mode: 'idle', s: 0, clock: 0, paused: false };
|
|
53
|
+
const api = {
|
|
54
|
+
S,
|
|
55
|
+
hide() { S.mode = 'hidden'; S.d = 1; S.e = 1; S.paused = false; },
|
|
56
|
+
reset(cfg) { S.paused = false; S.clock = 0; S.s = 0; S.d = 1; S.e = 0; S.since = 99; S.mode = 'idle'; if (cfg.play.autoPlay)
|
|
57
|
+
api.restart(cfg); },
|
|
58
|
+
restart(cfg) { S.paused = false; S.clock = 0; if (cfg.play.loop) {
|
|
59
|
+
S.mode = 'cycle';
|
|
60
|
+
}
|
|
61
|
+
else
|
|
62
|
+
api.playDraw(cfg); },
|
|
63
|
+
playDraw(cfg) { S.paused = false; S.s = 0; S.d = 0; S.e = 0; S.since = 0; S.mode = hasAnim(cfg.draw.method) ? 'drawing' : 'idle'; if (S.mode === 'idle') {
|
|
64
|
+
S.d = 1;
|
|
65
|
+
} },
|
|
66
|
+
playErase(cfg) { S.paused = false; S.s = 0; S.d = 1; S.e = 0; S.mode = 'erasing'; if (durOf(cfg.erase, true) === 0) {
|
|
67
|
+
S.e = 1;
|
|
68
|
+
S.mode = 'hidden';
|
|
69
|
+
} },
|
|
70
|
+
seek(cfg, u) { S.mode = 'cycle'; S.paused = true; S.clock = u; api.step(0, cfg); },
|
|
71
|
+
step(dt, cfg) {
|
|
72
|
+
if (S.mode === 'cycle') {
|
|
73
|
+
const T = cycleLength(cfg);
|
|
74
|
+
if (!S.paused)
|
|
75
|
+
S.clock += dt;
|
|
76
|
+
let tau;
|
|
77
|
+
if (cfg.play.yoyo) {
|
|
78
|
+
const u = S.clock % (2 * T);
|
|
79
|
+
tau = u < T ? u : 2 * T - u;
|
|
80
|
+
}
|
|
81
|
+
else
|
|
82
|
+
tau = S.clock % T;
|
|
83
|
+
const r = cycleAt(tau, cfg);
|
|
84
|
+
S.d = r.d;
|
|
85
|
+
S.e = r.e;
|
|
86
|
+
S.since = r.since;
|
|
87
|
+
}
|
|
88
|
+
else if (S.mode === 'drawing') {
|
|
89
|
+
const D = durOf(cfg.draw, false);
|
|
90
|
+
S.s += dt / Math.max(D, 1e-4);
|
|
91
|
+
S.d = (EASES[cfg.draw.ease] || EASES.easeInOut)(clamp01(S.s));
|
|
92
|
+
S.since = 0;
|
|
93
|
+
if (S.s >= 1) {
|
|
94
|
+
S.mode = 'idle';
|
|
95
|
+
S.d = 1;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if (S.mode === 'idle') {
|
|
99
|
+
S.since = Math.min(99, S.since + dt);
|
|
100
|
+
}
|
|
101
|
+
else if (S.mode === 'erasing') {
|
|
102
|
+
const D = durOf(cfg.erase, true);
|
|
103
|
+
S.s += dt / Math.max(D, 1e-4);
|
|
104
|
+
S.e = (EASES[cfg.erase.ease] || EASES.easeInOut)(clamp01(S.s));
|
|
105
|
+
if (S.s >= 1) {
|
|
106
|
+
S.mode = 'hidden';
|
|
107
|
+
S.e = 1;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return S;
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
return api;
|
|
114
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
export declare const REVEAL_UNIFORMS = "\nuniform float uD; uniform float uE; uniform float uHead; uniform float uErase; uniform float uFadeIn; uniform float uFadeOut;\nuniform float uSoftIn; uniform float uSoftOut; uniform float uSince; uniform float uDur; uniform float uTime;\nuniform float uIdle; uniform float uIdleSpeed; uniform vec2 uExt; uniform float uHalf;\n";
|
|
3
|
+
export declare const frag: (body: any, extraDecl?: string) => string;
|
|
4
|
+
export declare const uniformsBase: () => {
|
|
5
|
+
uHalf: {
|
|
6
|
+
value: number;
|
|
7
|
+
};
|
|
8
|
+
uD: {
|
|
9
|
+
value: number;
|
|
10
|
+
};
|
|
11
|
+
uE: {
|
|
12
|
+
value: number;
|
|
13
|
+
};
|
|
14
|
+
uHead: {
|
|
15
|
+
value: number;
|
|
16
|
+
};
|
|
17
|
+
uErase: {
|
|
18
|
+
value: number;
|
|
19
|
+
};
|
|
20
|
+
uFadeIn: {
|
|
21
|
+
value: number;
|
|
22
|
+
};
|
|
23
|
+
uFadeOut: {
|
|
24
|
+
value: number;
|
|
25
|
+
};
|
|
26
|
+
uSoftIn: {
|
|
27
|
+
value: number;
|
|
28
|
+
};
|
|
29
|
+
uSoftOut: {
|
|
30
|
+
value: number;
|
|
31
|
+
};
|
|
32
|
+
uSince: {
|
|
33
|
+
value: number;
|
|
34
|
+
};
|
|
35
|
+
uDur: {
|
|
36
|
+
value: number;
|
|
37
|
+
};
|
|
38
|
+
uTime: {
|
|
39
|
+
value: number;
|
|
40
|
+
};
|
|
41
|
+
uIdle: {
|
|
42
|
+
value: number;
|
|
43
|
+
};
|
|
44
|
+
uIdleSpeed: {
|
|
45
|
+
value: number;
|
|
46
|
+
};
|
|
47
|
+
uExt: {
|
|
48
|
+
value: THREE.Vector2;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export declare function setReveal(u: any, S: any, infoD: any, infoE: any, dur: any, time: any): void;
|
|
52
|
+
export declare function buildRibbon(strokes: any): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>;
|
|
53
|
+
export declare function ribbonMaterial(fragSrc: any, uniforms: any, widthFn: any, additive: any): THREE.ShaderMaterial;
|
|
54
|
+
export declare function headPoint(s: any, head: any): any[];
|
|
55
|
+
export declare function tips(strokes: any, head: any, max: any): any[];
|
|
56
|
+
export declare function buildCapsules(strokes: any): THREE.InstancedBufferGeometry;
|
|
57
|
+
export declare function capsuleMaterial(fragBody: any, uniforms: any): THREE.ShaderMaterial;
|
|
58
|
+
//# sourceMappingURL=ribbon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ribbon.d.ts","sourceRoot":"","sources":["../../../../src/components/text/engine/ribbon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,eAAO,MAAM,eAAe,6UAI3B,CAAC;AAWF,eAAO,MAAM,IAAI,GAAI,SAAI,EAAE,kBAAc,WAAwG,CAAC;AAElJ,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIvB,CAAC;AAEH,wBAAgB,SAAS,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,KAAK,KAAA,EAAE,KAAK,KAAA,EAAE,GAAG,KAAA,EAAE,IAAI,KAAA,QAMtD;AAGD,wBAAgB,WAAW,CAAC,OAAO,KAAA,oFAiClC;AAiBD,wBAAgB,cAAc,CAAC,OAAO,KAAA,EAAE,QAAQ,KAAA,EAAE,OAAO,KAAA,EAAE,QAAQ,KAAA,wBAQlE;AAGD,wBAAgB,SAAS,CAAC,CAAC,KAAA,EAAE,IAAI,KAAA,SAMhC;AACD,wBAAgB,IAAI,CAAC,OAAO,KAAA,EAAE,IAAI,KAAA,EAAE,GAAG,KAAA,SAGtC;AAKD,wBAAgB,aAAa,CAAC,OAAO,KAAA,iCAiBpC;AAkBD,wBAAgB,eAAe,CAAC,QAAQ,KAAA,EAAE,QAAQ,KAAA,wBAMjD"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
// ---------------------------------------------------------------------------------------------
|
|
3
|
+
// Two independent schedules per stroke:
|
|
4
|
+
// draw : seg [x, x+span] window in global draw progress, t[i] = when point i appears inside the window
|
|
5
|
+
// erase: segO window in global erase progress, tO[i] = when point i disappears inside the window
|
|
6
|
+
// A method (see methods.mjs) is just a way of filling those four fields. The shaders never know which method ran.
|
|
7
|
+
// Stroke fields: pts, cum, len, closed, t, seg, tO, segO, pressure (opt), glyphN (opt)
|
|
8
|
+
// ---------------------------------------------------------------------------------------------
|
|
9
|
+
export const REVEAL_UNIFORMS = /* glsl */ `
|
|
10
|
+
uniform float uD; uniform float uE; uniform float uHead; uniform float uErase; uniform float uFadeIn; uniform float uFadeOut;
|
|
11
|
+
uniform float uSoftIn; uniform float uSoftOut; uniform float uSince; uniform float uDur; uniform float uTime;
|
|
12
|
+
uniform float uIdle; uniform float uIdleSpeed; uniform vec2 uExt; uniform float uHalf;
|
|
13
|
+
`;
|
|
14
|
+
const VARYINGS = /* glsl */ `
|
|
15
|
+
varying float vSide; varying vec2 vUU; varying vec4 vTT; varying vec2 vLL; varying vec2 vSI; varying float vVar; varying float vGlyph; varying float vSeed; varying vec2 vPos;
|
|
16
|
+
`;
|
|
17
|
+
const REVEAL_FUNCS = /* glsl */ `
|
|
18
|
+
float h21(vec2 p){ return fract(sin(dot(p, vec2(12.9898, 78.233)))*43758.5453); }
|
|
19
|
+
float revealIn(float f){ float tI = mix(vTT.x, vTT.y, f); return uFadeIn > 0.5 ? uD : smoothstep(0.0, max(uSoftIn,1e-4), vLL.x - tI); }
|
|
20
|
+
float revealOut(float f){ float tO = mix(vTT.z, vTT.w, f); return uFadeOut > 0.5 ? 1.0 - uE : smoothstep(0.0, max(uSoftOut,1e-4), tO - vLL.y); }
|
|
21
|
+
float ageAt(float f){ float tI = mix(vTT.x, vTT.y, f); return max(0.0, uHead - (vSI.x + tI*vSI.y))*uDur + uSince; } // seconds since the pen / front passed here
|
|
22
|
+
float arcAt(float f){ return mix(vUU.x, vUU.y, f); }
|
|
23
|
+
`;
|
|
24
|
+
export const frag = (body, extraDecl = '') => /* glsl */ `precision highp float;\n${REVEAL_UNIFORMS}${VARYINGS}${extraDecl}${REVEAL_FUNCS}${body}`;
|
|
25
|
+
export const uniformsBase = () => ({
|
|
26
|
+
uHalf: { value: 0.02 }, uD: { value: 1 }, uE: { value: 0 }, uHead: { value: 0 }, uErase: { value: 0 }, uFadeIn: { value: 0 }, uFadeOut: { value: 0 },
|
|
27
|
+
uSoftIn: { value: 0.004 }, uSoftOut: { value: 0.004 }, uSince: { value: 99 }, uDur: { value: 5 }, uTime: { value: 0 },
|
|
28
|
+
uIdle: { value: 1 }, uIdleSpeed: { value: 1 }, uExt: { value: new THREE.Vector2(-3, 6) },
|
|
29
|
+
});
|
|
30
|
+
// per frame: playback state S = {d, e, since}; infoD / infoE = method info {soft, fade}
|
|
31
|
+
export function setReveal(u, S, infoD, infoE, dur, time) {
|
|
32
|
+
u.uD.value = S.d;
|
|
33
|
+
u.uE.value = S.e;
|
|
34
|
+
u.uFadeIn.value = infoD.fade ? 1 : 0;
|
|
35
|
+
u.uFadeOut.value = infoE.fade ? 1 : 0;
|
|
36
|
+
u.uSoftIn.value = infoD.soft;
|
|
37
|
+
u.uSoftOut.value = infoE.soft;
|
|
38
|
+
u.uHead.value = S.d * (1 + infoD.soft + 0.002);
|
|
39
|
+
u.uErase.value = -infoE.soft - 0.002 + S.e * (1 + 2 * infoE.soft + 0.004);
|
|
40
|
+
u.uSince.value = S.since;
|
|
41
|
+
u.uDur.value = Math.max(0.05, dur);
|
|
42
|
+
u.uTime.value = time;
|
|
43
|
+
}
|
|
44
|
+
// ---- Ribbon ------------------------------------------------------------------------------
|
|
45
|
+
export function buildRibbon(strokes) {
|
|
46
|
+
let nv = 0, ni = 0;
|
|
47
|
+
for (const s of strokes) {
|
|
48
|
+
const n = s.pts.length / 2;
|
|
49
|
+
nv += 2 * n;
|
|
50
|
+
ni += 6 * (n - 1);
|
|
51
|
+
}
|
|
52
|
+
const pos = new Float32Array(nv * 3), nor = new Float32Array(nv * 2), side = new Float32Array(nv), arc = new Float32Array(nv), len = new Float32Array(nv), tt = new Float32Array(nv), tto = new Float32Array(nv), seg = new Float32Array(nv * 2), sego = new Float32Array(nv * 2), vr = new Float32Array(nv * 2);
|
|
53
|
+
const idx = new Uint32Array(ni);
|
|
54
|
+
let v = 0, q = 0;
|
|
55
|
+
for (const s of strokes) {
|
|
56
|
+
const n = s.pts.length / 2;
|
|
57
|
+
const P = s.pts;
|
|
58
|
+
const sn = [];
|
|
59
|
+
for (let i = 0; i < n - 1; i++) {
|
|
60
|
+
const dx = P[2 * i + 2] - P[2 * i], dy = P[2 * i + 3] - P[2 * i + 1];
|
|
61
|
+
const l = Math.hypot(dx, dy) || 1;
|
|
62
|
+
sn.push([-dy / l, dx / l]);
|
|
63
|
+
}
|
|
64
|
+
const base = v;
|
|
65
|
+
for (let i = 0; i < n; i++) {
|
|
66
|
+
let a = sn[Math.max(0, i - 1)], b = sn[Math.min(n - 2, i)];
|
|
67
|
+
if (s.closed) {
|
|
68
|
+
if (i === 0 || i === n - 1) {
|
|
69
|
+
a = sn[n - 2];
|
|
70
|
+
b = sn[0];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
let mx = a[0] + b[0], my = a[1] + b[1];
|
|
74
|
+
const ml = Math.hypot(mx, my);
|
|
75
|
+
if (ml < 1e-6) {
|
|
76
|
+
mx = b[0];
|
|
77
|
+
my = b[1];
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
mx /= ml;
|
|
81
|
+
my /= ml;
|
|
82
|
+
}
|
|
83
|
+
const c = Math.max(0.8, mx * b[0] + my * b[1]);
|
|
84
|
+
mx /= c;
|
|
85
|
+
my /= c;
|
|
86
|
+
for (let sd = -1; sd <= 1; sd += 2) {
|
|
87
|
+
pos[3 * v] = P[2 * i];
|
|
88
|
+
pos[3 * v + 1] = P[2 * i + 1];
|
|
89
|
+
pos[3 * v + 2] = 0;
|
|
90
|
+
nor[2 * v] = mx;
|
|
91
|
+
nor[2 * v + 1] = my;
|
|
92
|
+
side[v] = sd;
|
|
93
|
+
arc[v] = s.cum[i];
|
|
94
|
+
len[v] = Math.max(1e-6, s.len);
|
|
95
|
+
tt[v] = s.t[i];
|
|
96
|
+
tto[v] = s.tO[i];
|
|
97
|
+
seg[2 * v] = s.seg[0];
|
|
98
|
+
seg[2 * v + 1] = s.seg[1];
|
|
99
|
+
sego[2 * v] = s.segO[0];
|
|
100
|
+
sego[2 * v + 1] = s.segO[1];
|
|
101
|
+
vr[2 * v] = s.pressure ? s.pressure[i] : 0;
|
|
102
|
+
vr[2 * v + 1] = s.glyphN || 0;
|
|
103
|
+
v++;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
for (let i = 0; i < n - 1; i++) {
|
|
107
|
+
const a = base + 2 * i;
|
|
108
|
+
idx.set([a, a + 1, a + 2, a + 1, a + 3, a + 2], q);
|
|
109
|
+
q += 6;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const g = new THREE.BufferGeometry();
|
|
113
|
+
const set = (k, a, n) => g.setAttribute(k, new THREE.BufferAttribute(a, n));
|
|
114
|
+
set('position', pos, 3);
|
|
115
|
+
set('aNormal', nor, 2);
|
|
116
|
+
set('aSide', side, 1);
|
|
117
|
+
set('aArc', arc, 1);
|
|
118
|
+
set('aLen', len, 1);
|
|
119
|
+
set('aT', tt, 1);
|
|
120
|
+
set('aTO', tto, 1);
|
|
121
|
+
set('aSeg', seg, 2);
|
|
122
|
+
set('aSegO', sego, 2);
|
|
123
|
+
set('aVar', vr, 2);
|
|
124
|
+
g.setIndex(new THREE.BufferAttribute(idx, 1));
|
|
125
|
+
g.computeBoundingSphere();
|
|
126
|
+
return g;
|
|
127
|
+
}
|
|
128
|
+
const RIBBON_VERT = /* glsl */ `
|
|
129
|
+
attribute vec2 aNormal; attribute float aSide; attribute float aArc; attribute float aLen; attribute float aT; attribute float aTO;
|
|
130
|
+
attribute vec2 aSeg; attribute vec2 aSegO; attribute vec2 aVar;
|
|
131
|
+
${REVEAL_UNIFORMS}${VARYINGS}
|
|
132
|
+
void main(){
|
|
133
|
+
float w = uHalf * WIDTH_FN;
|
|
134
|
+
vec3 p = position + vec3(aNormal * (aSide * w), 0.0);
|
|
135
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(p, 1.0);
|
|
136
|
+
float sp = max(aSeg.y - aSeg.x, 1e-4), so = max(aSegO.y - aSegO.x, 1e-4);
|
|
137
|
+
vSide = aSide; vVar = aVar.x; vGlyph = aVar.y; vPos = p.xy;
|
|
138
|
+
vTT = vec4(aT, aT, aTO, aTO); vUU = vec2(aArc / aLen); vSI = vec2(aSeg.x, sp);
|
|
139
|
+
vLL = vec2((uHead - aSeg.x) / sp, (uErase - aSegO.x) / so);
|
|
140
|
+
vSeed = aSeg.x * 91.7 + aVar.y * 13.1;
|
|
141
|
+
}`;
|
|
142
|
+
export function ribbonMaterial(fragSrc, uniforms, widthFn, additive) {
|
|
143
|
+
return new THREE.ShaderMaterial({
|
|
144
|
+
uniforms: { ...uniformsBase(), ...uniforms },
|
|
145
|
+
vertexShader: RIBBON_VERT.replace('WIDTH_FN', widthFn || '1.0'), fragmentShader: fragSrc,
|
|
146
|
+
transparent: true, depthWrite: false, side: THREE.DoubleSide,
|
|
147
|
+
blending: additive ? THREE.AdditiveBlending : THREE.CustomBlending,
|
|
148
|
+
...(additive ? {} : { blendEquation: THREE.AddEquation, blendSrc: THREE.OneFactor, blendDst: THREE.OneMinusSrcAlphaFactor }),
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
// ---- pen tips ------------------------------------------------------------------------------
|
|
152
|
+
export function headPoint(s, head) {
|
|
153
|
+
if (head < s.seg[0] || head > s.seg[1])
|
|
154
|
+
return null;
|
|
155
|
+
const u = (head - s.seg[0]) / Math.max(1e-6, s.seg[1] - s.seg[0]);
|
|
156
|
+
const n = s.pts.length / 2;
|
|
157
|
+
const T = s.t;
|
|
158
|
+
let lo = 0, hi = n - 1;
|
|
159
|
+
while (hi - lo > 1) {
|
|
160
|
+
const m = (lo + hi) >> 1;
|
|
161
|
+
if (T[m] <= u)
|
|
162
|
+
lo = m;
|
|
163
|
+
else
|
|
164
|
+
hi = m;
|
|
165
|
+
}
|
|
166
|
+
const f = Math.max(0, Math.min(1, (u - T[lo]) / Math.max(1e-9, T[hi] - T[lo])));
|
|
167
|
+
return [s.pts[2 * lo] + (s.pts[2 * hi] - s.pts[2 * lo]) * f, s.pts[2 * lo + 1] + (s.pts[2 * hi + 1] - s.pts[2 * lo + 1]) * f];
|
|
168
|
+
}
|
|
169
|
+
export function tips(strokes, head, max) {
|
|
170
|
+
// each tip fades in / out over the first / last 4% of its stroke window, so sparks never pop
|
|
171
|
+
const out = [];
|
|
172
|
+
for (const s of strokes) {
|
|
173
|
+
if (out.length >= max)
|
|
174
|
+
break;
|
|
175
|
+
const p = headPoint(s, head);
|
|
176
|
+
if (p) {
|
|
177
|
+
const u = (head - s.seg[0]) / Math.max(1e-6, s.seg[1] - s.seg[0]);
|
|
178
|
+
out.push([p[0], p[1], Math.min(1, u / 0.04, (1 - u) / 0.04)]);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return out;
|
|
182
|
+
}
|
|
183
|
+
// ---- Capsule field -------------------------------------------------------------------------
|
|
184
|
+
// One instanced quad per polyline segment, fragment = distance to that segment. Blended with MAX the result is exactly
|
|
185
|
+
// f(distance to the whole polyline): round joins and caps, no folded offsets however wide the glow.
|
|
186
|
+
export function buildCapsules(strokes) {
|
|
187
|
+
let n = 0;
|
|
188
|
+
for (const s of strokes)
|
|
189
|
+
n += s.pts.length / 2 - 1;
|
|
190
|
+
const A = new Float32Array(n * 2), B = new Float32Array(n * 2), T = new Float32Array(n * 2), TO = new Float32Array(n * 2), AR = new Float32Array(n * 2), LN = new Float32Array(n), SG = new Float32Array(n * 2), SO = new Float32Array(n * 2), VR = new Float32Array(n * 2);
|
|
191
|
+
let k = 0;
|
|
192
|
+
for (const s of strokes) {
|
|
193
|
+
const m = s.pts.length / 2;
|
|
194
|
+
for (let i = 0; i < m - 1; i++) {
|
|
195
|
+
A.set([s.pts[2 * i], s.pts[2 * i + 1]], 2 * k);
|
|
196
|
+
B.set([s.pts[2 * i + 2], s.pts[2 * i + 3]], 2 * k);
|
|
197
|
+
T[2 * k] = s.t[i];
|
|
198
|
+
T[2 * k + 1] = s.t[i + 1];
|
|
199
|
+
TO[2 * k] = s.tO[i];
|
|
200
|
+
TO[2 * k + 1] = s.tO[i + 1];
|
|
201
|
+
AR[2 * k] = s.cum[i];
|
|
202
|
+
AR[2 * k + 1] = s.cum[i + 1];
|
|
203
|
+
LN[k] = Math.max(1e-6, s.len);
|
|
204
|
+
SG.set(s.seg, 2 * k);
|
|
205
|
+
SO.set(s.segO, 2 * k);
|
|
206
|
+
VR.set([s.pressure ? s.pressure[i] : 0, s.glyphN || 0], 2 * k);
|
|
207
|
+
k++;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const g = new THREE.InstancedBufferGeometry();
|
|
211
|
+
g.setAttribute('aq', new THREE.BufferAttribute(new Float32Array([-1, -1, 1, -1, 1, 1, -1, 1]), 2));
|
|
212
|
+
g.setIndex([0, 1, 2, 0, 2, 3]);
|
|
213
|
+
const ia = (k2, a, c) => g.setAttribute(k2, new THREE.InstancedBufferAttribute(a, c));
|
|
214
|
+
ia('iA', A, 2);
|
|
215
|
+
ia('iB', B, 2);
|
|
216
|
+
ia('iT', T, 2);
|
|
217
|
+
ia('iTO', TO, 2);
|
|
218
|
+
ia('iArc', AR, 2);
|
|
219
|
+
ia('iLen', LN, 1);
|
|
220
|
+
ia('iSeg', SG, 2);
|
|
221
|
+
ia('iSegO', SO, 2);
|
|
222
|
+
ia('iVar', VR, 2);
|
|
223
|
+
g.instanceCount = n;
|
|
224
|
+
g.boundingSphere = new THREE.Sphere(new THREE.Vector3(), 1e3);
|
|
225
|
+
return g;
|
|
226
|
+
}
|
|
227
|
+
const CAP_VERT = /* glsl */ `
|
|
228
|
+
attribute vec2 aq; attribute vec2 iA; attribute vec2 iB; attribute vec2 iT; attribute vec2 iTO; attribute vec2 iArc; attribute float iLen;
|
|
229
|
+
attribute vec2 iSeg; attribute vec2 iSegO; attribute vec2 iVar;
|
|
230
|
+
${REVEAL_UNIFORMS}${VARYINGS}
|
|
231
|
+
varying vec2 vXY; varying float vHL;
|
|
232
|
+
void main(){
|
|
233
|
+
vec2 d = iB - iA; float l = max(length(d), 1e-6); vec2 dir = d / l; vec2 perp = vec2(-dir.y, dir.x);
|
|
234
|
+
float hl = 0.5*l; float R = uHalf;
|
|
235
|
+
vec2 loc = vec2(aq.x*(hl + R), aq.y*R);
|
|
236
|
+
vec2 w = 0.5*(iA + iB) + dir*loc.x + perp*loc.y;
|
|
237
|
+
gl_Position = projectionMatrix*modelViewMatrix*vec4(w, 0.0, 1.0);
|
|
238
|
+
float sp = max(iSeg.y - iSeg.x, 1e-4), so = max(iSegO.y - iSegO.x, 1e-4);
|
|
239
|
+
vXY = loc; vHL = hl; vSide = 0.0; vVar = iVar.x; vGlyph = iVar.y; vPos = w;
|
|
240
|
+
vTT = vec4(iT, iTO); vUU = iArc / iLen; vSI = vec2(iSeg.x, sp);
|
|
241
|
+
vLL = vec2((uHead - iSeg.x)/sp, (uErase - iSegO.x)/so);
|
|
242
|
+
vSeed = iSeg.x*91.7 + iVar.y*13.1;
|
|
243
|
+
}`;
|
|
244
|
+
export function capsuleMaterial(fragBody, uniforms) {
|
|
245
|
+
return new THREE.ShaderMaterial({
|
|
246
|
+
uniforms: { ...uniformsBase(), uHalf: { value: 0.06 }, ...uniforms },
|
|
247
|
+
vertexShader: CAP_VERT, fragmentShader: frag(fragBody, 'varying vec2 vXY; varying float vHL;\n'), transparent: true, depthWrite: false, side: THREE.DoubleSide,
|
|
248
|
+
blending: THREE.CustomBlending, blendEquation: THREE.MaxEquation, blendSrc: THREE.OneFactor, blendDst: THREE.OneFactor,
|
|
249
|
+
});
|
|
250
|
+
}
|