@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
|
+
// Grow — the object scales up (or down) and stays there, with a small overshoot
|
|
2
|
+
// as it arrives. From its base (it stays on the ground) or from its centre.
|
|
3
|
+
import { DURATION, heldPhysical } from './physicalHeld.js';
|
|
4
|
+
export default heldPhysical({
|
|
5
|
+
value: 'grow', label: 'Grow',
|
|
6
|
+
description: 'Scale up (or down) and stay — settles with a small overshoot; switching off brings it back',
|
|
7
|
+
ease: 'back.out(1.5)',
|
|
8
|
+
periodic: false,
|
|
9
|
+
params: {
|
|
10
|
+
scale: { type: 'number', label: 'Size', default: 1.25, min: 0.05, max: 5, step: 0.05, unit: '×' },
|
|
11
|
+
from: { type: 'select', label: 'From', default: 'base', options: [{ value: 'base', label: 'Its base' }, { value: 'center', label: 'Its centre' }] },
|
|
12
|
+
duration: { ...DURATION, default: 0.6, max: 6, hint: 'How long it takes to arrive, and to go back' },
|
|
13
|
+
},
|
|
14
|
+
memory: () => null,
|
|
15
|
+
move(part, st) {
|
|
16
|
+
part.s.setScalar(Math.max(0.001, 1 + (Number(st.p.scale) - 1) * st.amp.v));
|
|
17
|
+
part.pivot.copy(st.p.from === 'center' ? st.body.centerLocal : st.body.bottomLocal);
|
|
18
|
+
},
|
|
19
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hologram.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/hologram.ts"],"names":[],"mappings":";AAgBA,
|
|
1
|
+
{"version":3,"file":"hologram.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/hologram.ts"],"names":[],"mappings":";AAgBA,wBA4FG"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// Reverting scans it back in: hologram first, then solid.
|
|
6
6
|
import { defineOperation } from '../types.js';
|
|
7
7
|
import { addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
|
|
8
|
-
import { SWEEP_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, runProgress, setFieldParams } from './transitionField.js';
|
|
8
|
+
import { SWEEP_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, goneGlsl, runProgress, setFieldParams, setReveal } from './transitionField.js';
|
|
9
9
|
import { Color } from 'three';
|
|
10
10
|
const P = 'Holo';
|
|
11
11
|
const KEY = 'hologram';
|
|
@@ -19,6 +19,8 @@ export default defineOperation({
|
|
|
19
19
|
toggles: true,
|
|
20
20
|
usableIn: ['interaction', 'action', 'object'],
|
|
21
21
|
objectParams: { disappear: false },
|
|
22
|
+
presence: 'paint',
|
|
23
|
+
field: (target) => target.userData[STATE]?.field,
|
|
22
24
|
params: {
|
|
23
25
|
direction: { type: 'select', label: 'Scan', default: 'down', options: SWEEP_OPTIONS },
|
|
24
26
|
color: { type: 'color', label: 'Colour', default: '#3fd4ff' },
|
|
@@ -35,7 +37,7 @@ export default defineOperation({
|
|
|
35
37
|
const own = st;
|
|
36
38
|
const layer = {
|
|
37
39
|
uniforms: { ...fieldUniforms(P, field), uHoloColor: st.color, uHoloDensity: st.density, uHoloGap: st.gap, uHoloKeep: st.keep },
|
|
38
|
-
common: `varying vec3 vHoloR;\nvarying vec3 vHoloView;\n${fieldGlsl(P)}`,
|
|
40
|
+
common: `varying vec3 vHoloR;\nvarying vec3 vHoloView;\n${fieldGlsl(P)}\n${goneGlsl(P)}`,
|
|
39
41
|
vertex: /* glsl */ `
|
|
40
42
|
vHoloR = (uHoloRootInv * modelMatrix * vec4(transformed, 1.0)).xyz;
|
|
41
43
|
vHoloView = (modelViewMatrix * vec4(transformed, 1.0)).xyz;`,
|
|
@@ -48,8 +50,10 @@ export default defineOperation({
|
|
|
48
50
|
float fa = mix(-band, 1.0 + uHoloGap + band, clamp(uHoloProgress, 0.0, 1.0)); // solid → hologram
|
|
49
51
|
// hologram → gone (never, when the object should stay as a hologram)
|
|
50
52
|
float fb = uHoloKeep > 0.5 ? -1.0 : fa - uHoloGap;
|
|
51
|
-
|
|
52
|
-
if (s <
|
|
53
|
+
float gone = HoloGone(q); // wiped by the look that replaces it
|
|
54
|
+
if (gone < 0.5 && s < fb) discard;
|
|
55
|
+
if (gone > 0.5) {
|
|
56
|
+
} else if (s < fa) {
|
|
53
57
|
// grid in root-local units, square cells, anti-aliased
|
|
54
58
|
vec3 cell = vHoloR * (uHoloDensity / uHoloExtent);
|
|
55
59
|
vec3 g = abs(fract(cell - 0.5) - 0.5) / max(fwidth(cell), vec3(1e-4));
|
|
@@ -64,6 +68,7 @@ export default defineOperation({
|
|
|
64
68
|
if (I < 0.32) discard;
|
|
65
69
|
outgoingLight = uHoloColor * I * 1.6;
|
|
66
70
|
} else {
|
|
71
|
+
if (uHoloReveal > 0.5) discard; // revealed by the scan: nothing ahead of the plane
|
|
67
72
|
// the solid side gets a faint pre-glow just ahead of the plane
|
|
68
73
|
outgoingLight += uHoloColor * exp(-(s - fa) / 0.03) * 0.6;
|
|
69
74
|
}
|
|
@@ -78,7 +83,7 @@ export default defineOperation({
|
|
|
78
83
|
target.userData[STATE] = st;
|
|
79
84
|
}
|
|
80
85
|
const s = st;
|
|
81
|
-
setFieldParams(s.field, { direction: p.direction }, target, ctx);
|
|
86
|
+
setFieldParams(s.field, { direction: p.direction, __reveal: p.__reveal }, target, ctx);
|
|
82
87
|
s.color.value.set(String(p.color));
|
|
83
88
|
s.density.value = Number(p.density);
|
|
84
89
|
s.gap.value = Number(p.hold);
|
|
@@ -95,6 +100,7 @@ export default defineOperation({
|
|
|
95
100
|
if (!s)
|
|
96
101
|
return;
|
|
97
102
|
setMeshesHidden(target, false);
|
|
103
|
+
setReveal(s.field, p);
|
|
98
104
|
return runProgress(target, s.field, 0, {
|
|
99
105
|
duration: Number(p.duration), ease: 'power1.inOut',
|
|
100
106
|
onComplete: () => { s.mats.forEach(m => removeLayer(m, KEY)); delete target.userData[STATE]; },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jelly.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/jelly.ts"],"names":[],"mappings":";AAWA,
|
|
1
|
+
{"version":3,"file":"jelly.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/jelly.ts"],"names":[],"mappings":";AAWA,wBA8CG"}
|
|
@@ -14,7 +14,7 @@ export default defineOperation({
|
|
|
14
14
|
channel: 'transform',
|
|
15
15
|
multi: true,
|
|
16
16
|
toggles: false,
|
|
17
|
-
usableIn: ['interaction', 'action'],
|
|
17
|
+
usableIn: ['interaction', 'action', 'object'],
|
|
18
18
|
params: {
|
|
19
19
|
strength: { type: 'number', label: 'Squash', default: 0.28, min: 0.02, max: 0.7, step: 0.01 },
|
|
20
20
|
wobbles: { type: 'number', label: 'Wobbles', default: 3, min: 1, max: 8, step: 0.5 },
|
|
@@ -24,27 +24,37 @@ export default defineOperation({
|
|
|
24
24
|
const running = target.userData[KEY];
|
|
25
25
|
if (running) {
|
|
26
26
|
gsap.killTweensOf(running.proxy);
|
|
27
|
-
releaseRest(target);
|
|
27
|
+
releaseRest(target, KEY);
|
|
28
28
|
}
|
|
29
|
-
const rest = acquireRest(target);
|
|
30
|
-
const proxy = { t: 0 };
|
|
31
|
-
target.userData[KEY] = { proxy };
|
|
29
|
+
const rest = acquireRest(target, KEY);
|
|
32
30
|
const A = Number(p.strength);
|
|
33
31
|
const D = Number(p.duration);
|
|
32
|
+
// p.__backward (playback: reverse / yoyo) plays the same move backwards in time.
|
|
33
|
+
const back = p.__backward === true;
|
|
34
|
+
const proxy = { t: back ? D : 0 };
|
|
35
|
+
target.userData[KEY] = { proxy };
|
|
34
36
|
const w = 2 * Math.PI * (Number(p.wobbles) / D); // rad/s
|
|
35
37
|
const k = 4.6 / D; // decays to 1% by the end
|
|
36
38
|
const s = new Vector3();
|
|
37
39
|
gsap.to(proxy, {
|
|
38
|
-
t: D, duration: D, ease: 'none',
|
|
40
|
+
t: back ? 0 : D, duration: D, ease: 'none',
|
|
39
41
|
onUpdate: () => {
|
|
40
42
|
const t = proxy.t;
|
|
41
43
|
// damped spring, squash first
|
|
42
44
|
const sy = 1 - A * Math.exp(-k * t) * Math.sin(w * t);
|
|
43
45
|
const sxz = 1 / Math.sqrt(Math.max(sy, 0.05)); // keep the volume
|
|
44
46
|
s.set(sxz, sy, sxz);
|
|
45
|
-
poseAbout(target, rest, rest.bottomLocal, NO_TURN, s);
|
|
47
|
+
poseAbout(target, rest, rest.bottomLocal, NO_TURN, s, undefined, KEY);
|
|
46
48
|
},
|
|
47
|
-
onComplete: () => { delete target.userData[KEY]; releaseRest(target); },
|
|
49
|
+
onComplete: () => { delete target.userData[KEY]; releaseRest(target, KEY); },
|
|
48
50
|
});
|
|
49
51
|
},
|
|
52
|
+
cancel(target) {
|
|
53
|
+
const running = target.userData[KEY];
|
|
54
|
+
if (!running)
|
|
55
|
+
return;
|
|
56
|
+
gsap.killTweensOf(running.proxy);
|
|
57
|
+
delete target.userData[KEY];
|
|
58
|
+
releaseRest(target, KEY);
|
|
59
|
+
},
|
|
50
60
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knockAway.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/knockAway.ts"],"names":[],"mappings":";AA0BA,wBAmDG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Knock away — the object is struck from the side at a point above or below its
|
|
2
|
+
// centre. The impulse gives it linear AND angular velocity, the spin set by the
|
|
3
|
+
// arm of the hit over its inertia (a box from its own bounds: I ∝ h² + w²), so a
|
|
4
|
+
// tall thing struck high tips and tumbles while a flat one mostly skims. It
|
|
5
|
+
// compresses at the impact, flies off on a ballistic arc, slowed by drag, tumbling
|
|
6
|
+
// at a constant rate, and is gone. The way back: it is thrown in from the other
|
|
7
|
+
// side with back-spin, lands upright and settles with two small hops and a rock.
|
|
8
|
+
import { Quaternion, Vector3 } from 'three';
|
|
9
|
+
import { clamp01, physicalExit, ring, smooth, stretchAxis } from './physicalExit.js';
|
|
10
|
+
const LAND = 0.62;
|
|
11
|
+
const _d = new Vector3(), _n = new Vector3(), _q = new Quaternion(), _y = new Quaternion();
|
|
12
|
+
function axes(a) {
|
|
13
|
+
const f = a.frame;
|
|
14
|
+
_d.copy(f.right).multiplyScalar(a.p.side === 'right' ? -1 : 1); // struck from the left = flies right
|
|
15
|
+
_n.crossVectors(f.up, _d).normalize(); // + about it tips the top towards _d
|
|
16
|
+
}
|
|
17
|
+
/** Turns of tumble over the flight: the hit's arm over the inertia (box), scaled by the strength. */
|
|
18
|
+
function tumbleTurns(a) {
|
|
19
|
+
const H = a.size.y, W = Math.max(a.size.x, a.size.z);
|
|
20
|
+
const arm = (Number(a.p.hit) - 0.5) * 2; // −1 (bottom) … 1 (top)
|
|
21
|
+
return 1.3 * arm * (Number(a.p.strength) / 6) * (H * H) / (H * H + W * W) * 2;
|
|
22
|
+
}
|
|
23
|
+
export default physicalExit({
|
|
24
|
+
value: 'knockAway',
|
|
25
|
+
label: 'Knock away',
|
|
26
|
+
description: 'Struck from the side: it flies off on an arc, tumbling by where it was hit — tall things tip, flat ones skim; it is thrown back in and lands with a hop',
|
|
27
|
+
params: {
|
|
28
|
+
side: {
|
|
29
|
+
type: 'select', label: 'Struck from', default: 'left', options: [{ value: 'left', label: 'The left' }, { value: 'right', label: 'The right' }],
|
|
30
|
+
hint: 'Screen-relative when it starts',
|
|
31
|
+
},
|
|
32
|
+
strength: { type: 'number', label: 'Strength', default: 6, min: 2, max: 30, step: 0.5, hint: 'How far it flies, × its size' },
|
|
33
|
+
lift: { type: 'number', label: 'Arc', default: 1.6, min: 0, max: 5, step: 0.05, hint: 'Height of the arc, × its height' },
|
|
34
|
+
hit: { type: 'number', label: 'Hit height', default: 0.75, min: 0, max: 1, step: 0.01, hint: '0 = struck at its base, 1 = at its top' },
|
|
35
|
+
duration: { type: 'number', label: 'Duration', default: 1.6, min: 0.3, max: 6, step: 0.05, unit: 's' },
|
|
36
|
+
},
|
|
37
|
+
exit(u, out, a) {
|
|
38
|
+
const p = a.p, H = a.size.y;
|
|
39
|
+
axes(a);
|
|
40
|
+
const dist = Number(p.strength) * a.span;
|
|
41
|
+
const x = dist * (1 - Math.pow(1 - u, 1.25)); // drag slows it
|
|
42
|
+
const y = 4 * Number(p.lift) * H * u * (1 - u);
|
|
43
|
+
out.off.copy(_d).multiplyScalar(x).addScaledVector(a.frame.up, y);
|
|
44
|
+
const th = 2 * Math.PI * tumbleTurns(a) * u;
|
|
45
|
+
_q.setFromAxisAngle(_n, th).multiply(_y.setFromAxisAngle(a.frame.up, 0.35 * u));
|
|
46
|
+
out.q.copy(a.local(_q));
|
|
47
|
+
// compressed by the blow for an instant
|
|
48
|
+
const squash = 0.18 * Math.sin(Math.PI * Math.min(1, u / 0.12));
|
|
49
|
+
stretchAxis(out.s, a.axis(_d), 1 - squash, 1 - smooth(0.7, 1, u));
|
|
50
|
+
},
|
|
51
|
+
enter(v, out, a) {
|
|
52
|
+
const p = a.p, H = a.size.y;
|
|
53
|
+
axes(a);
|
|
54
|
+
const dist = Number(p.strength) * a.span * 0.7;
|
|
55
|
+
if (v < LAND) {
|
|
56
|
+
const tau = v / LAND;
|
|
57
|
+
const x = -0.15 * a.span - dist * Math.pow(1 - tau, 1.15);
|
|
58
|
+
const y = 4 * Number(p.lift) * 0.8 * H * tau * (1 - tau);
|
|
59
|
+
out.off.copy(_d).multiplyScalar(x).addScaledVector(a.frame.up, y);
|
|
60
|
+
// back-spin that runs out exactly as it lands upright
|
|
61
|
+
const th = -2 * Math.PI * 0.75 * Math.sign(tumbleTurns(a) || 1) * Math.pow(1 - tau, 1.3);
|
|
62
|
+
out.q.copy(a.local(_q.setFromAxisAngle(_n, th)));
|
|
63
|
+
out.s.setScalar(smooth(0, 0.25, tau));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// two shrinking hops over the last bit, rocking
|
|
67
|
+
const sg = clamp01((v - LAND) / (1 - LAND));
|
|
68
|
+
const x = -0.15 * a.span * Math.pow(1 - sg, 1.5);
|
|
69
|
+
const y = 0.22 * H * Math.abs(Math.sin(2 * Math.PI * sg)) * (1 - sg) * (1 - sg);
|
|
70
|
+
out.off.copy(_d).multiplyScalar(x).addScaledVector(a.frame.up, y);
|
|
71
|
+
out.q.copy(a.local(_q.setFromAxisAngle(_n, 0.12 * ring(sg, 1.5, 3))));
|
|
72
|
+
out.pivot = 'bottom';
|
|
73
|
+
},
|
|
74
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leafFall.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/leafFall.ts"],"names":[],"mappings":";AA2BA,wBA+CG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Leaf fall — the object is light as a leaf. A gust lifts it and carries it off
|
|
2
|
+
// downwind, gliding side to side the way a falling plate does: it swings across
|
|
3
|
+
// the wind, rocks like a pendulum (most tilted at the ends of each swing, where
|
|
4
|
+
// it turns), tips over a little at each turn and slowly yaws — growing smaller
|
|
5
|
+
// as the wind takes it. The way back is a leaf settling: it flutters down from
|
|
6
|
+
// above, the swings and the rocking dying away, and touches down softly.
|
|
7
|
+
import { Quaternion, Vector3 } from 'three';
|
|
8
|
+
import { clamp01, physicalExit, smooth } from './physicalExit.js';
|
|
9
|
+
const _r = new Quaternion(), _p = new Quaternion(), _y = new Quaternion();
|
|
10
|
+
const _wind = new Vector3(), _across = new Vector3();
|
|
11
|
+
function axes(f, wind) {
|
|
12
|
+
if (wind === 'left')
|
|
13
|
+
_wind.copy(f.right).negate();
|
|
14
|
+
else if (wind === 'away')
|
|
15
|
+
_wind.copy(f.toward).negate();
|
|
16
|
+
else
|
|
17
|
+
_wind.copy(f.right);
|
|
18
|
+
_across.crossVectors(f.up, _wind).normalize(); // horizontal, across the wind
|
|
19
|
+
}
|
|
20
|
+
/** Rock about the wind (roll), tip over at the turns (pitch, about `across`), yaw slowly. */
|
|
21
|
+
function attitude(out, a, roll, pitch, yaw) {
|
|
22
|
+
_r.setFromAxisAngle(_wind, roll);
|
|
23
|
+
_p.setFromAxisAngle(_across, pitch);
|
|
24
|
+
_y.setFromAxisAngle(a.frame.up, yaw);
|
|
25
|
+
out.q.copy(a.local(_r.multiply(_p).multiply(_y)));
|
|
26
|
+
}
|
|
27
|
+
export default physicalExit({
|
|
28
|
+
value: 'leafFall',
|
|
29
|
+
label: 'Leaf fall',
|
|
30
|
+
description: 'A gust lifts it and carries it away, gliding side to side and rocking like a falling leaf — it comes back fluttering down and settles softly',
|
|
31
|
+
params: {
|
|
32
|
+
wind: {
|
|
33
|
+
type: 'select', label: 'Wind', default: 'right', options: [
|
|
34
|
+
{ value: 'right', label: 'To the right' }, { value: 'left', label: 'To the left' }, { value: 'away', label: 'Away' },
|
|
35
|
+
], hint: 'Screen-relative when it starts',
|
|
36
|
+
},
|
|
37
|
+
swings: { type: 'number', label: 'Swings', default: 3, min: 1, max: 8, step: 0.5, hint: 'Side-to-side glides on the way' },
|
|
38
|
+
rock: { type: 'number', label: 'Rock', default: 32, min: 0, max: 75, step: 1, unit: '°', hint: 'How far it tilts at the end of a swing' },
|
|
39
|
+
drift: { type: 'number', label: 'Drift', default: 4, min: 0.5, max: 15, step: 0.25, hint: 'How far the wind carries it, × its size' },
|
|
40
|
+
duration: { type: 'number', label: 'Duration', default: 3.2, min: 0.6, max: 12, step: 0.05, unit: 's' },
|
|
41
|
+
},
|
|
42
|
+
exit(u, out, a) {
|
|
43
|
+
const p = a.p, H = a.size.y, span = a.span;
|
|
44
|
+
axes(a.frame, p.wind);
|
|
45
|
+
const n = Number(p.swings), rock = Number(p.rock) * Math.PI / 180;
|
|
46
|
+
const e = smooth(0, 0.18, u); // the gust takes hold
|
|
47
|
+
const ph = 2 * Math.PI * n * u;
|
|
48
|
+
const glide = Math.sin(ph); // −1..1 across the wind
|
|
49
|
+
const carry = Number(p.drift) * span * Math.pow(u, 1.7); // the wind picks it up and speeds it on
|
|
50
|
+
const lift = H * (0.75 * smooth(0, 0.45, u) - 0.3 * smooth(0.45, 1, u));
|
|
51
|
+
out.off.set(0, 0, 0)
|
|
52
|
+
.addScaledVector(_wind, carry)
|
|
53
|
+
.addScaledVector(_across, 0.45 * span * glide * e)
|
|
54
|
+
.addScaledVector(a.frame.up, lift);
|
|
55
|
+
// tilted most at the ends of a swing; tips over a little where it turns
|
|
56
|
+
attitude(out, a, -rock * glide * e, 0.35 * rock * Math.sin(2 * ph) * e, 0.7 * Math.PI * u * u);
|
|
57
|
+
out.s.setScalar(1 - smooth(0.5, 1, u));
|
|
58
|
+
},
|
|
59
|
+
enter(v, out, a) {
|
|
60
|
+
const p = a.p, H = a.size.y, span = a.span;
|
|
61
|
+
axes(a.frame, p.wind);
|
|
62
|
+
const n = Number(p.swings), rock = Number(p.rock) * Math.PI / 180;
|
|
63
|
+
const left = 1 - v;
|
|
64
|
+
const ph = 2 * Math.PI * n * v;
|
|
65
|
+
const glide = Math.sin(ph);
|
|
66
|
+
const die = Math.pow(left, 1.3); // the swings die away as it settles
|
|
67
|
+
out.off.set(0, 0, 0)
|
|
68
|
+
.addScaledVector(_wind, -0.8 * span * left * left) // drifts in from upwind
|
|
69
|
+
.addScaledVector(_across, 0.45 * span * glide * die)
|
|
70
|
+
.addScaledVector(a.frame.up, 2.6 * H * Math.pow(left, 1.6)); // slows as it comes down
|
|
71
|
+
attitude(out, a, -rock * glide * die, 0.35 * rock * Math.sin(2 * ph) * die, -0.5 * Math.PI * left * left);
|
|
72
|
+
out.s.setScalar(smooth(0, 0.2, clamp01(v)));
|
|
73
|
+
},
|
|
74
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lidarScan.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/lidarScan.ts"],"names":[],"mappings":";AAuGA,
|
|
1
|
+
{"version":3,"file":"lidarScan.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/lidarScan.ts"],"names":[],"mappings":";AAuGA,wBAwJG"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import { AdditiveBlending, Color, DoubleSide, Mesh, PlaneGeometry, Quaternion, ShaderMaterial, Vector3 } from 'three';
|
|
15
15
|
import { defineOperation } from '../types.js';
|
|
16
16
|
import { addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
|
|
17
|
-
import { SWEEP_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, hideMeshes, localBounds, runProgress, setFieldParams, sweepVector, } from './transitionField.js';
|
|
17
|
+
import { SWEEP_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, hideMeshes, localBounds, runProgress, setFieldParams, setReveal, sweepVector, } from './transitionField.js';
|
|
18
18
|
import { sampleSurfaceCached } from './surfaceSample.js';
|
|
19
19
|
import { GLSL_POINT_SIZE, createFxPoints, disposeFxPoints } from './fxPoints.js';
|
|
20
20
|
import { hideUntilWarm } from './warmup.js';
|
|
@@ -104,6 +104,7 @@ export default defineOperation({
|
|
|
104
104
|
disappear: { type: 'boolean', label: 'Disappear', default: true, hint: 'Off: the object stays in scanned mode — mesh and point cloud' },
|
|
105
105
|
},
|
|
106
106
|
objectParams: { disappear: false },
|
|
107
|
+
presence: 'paint',
|
|
107
108
|
apply(target, p, ctx) {
|
|
108
109
|
let st = target.userData[STATE];
|
|
109
110
|
if (!st) {
|
|
@@ -167,6 +168,7 @@ export default defineOperation({
|
|
|
167
168
|
float a = LdrAlong(vLdrQ);
|
|
168
169
|
float s1 = ldrFront(0.0), s2 = ldrFront(${MESH.toFixed(2)});
|
|
169
170
|
if (a < s2) discard; // only the point cloud is left
|
|
171
|
+
if (uLdrReveal > 0.5 && a >= s1) discard; // revealed by the laser: nothing ahead of it
|
|
170
172
|
float on = step(0.0001, uLdrProgress) * step(uLdrProgress, ${(END - 0.0001).toFixed(4)});
|
|
171
173
|
if (a < s1) {
|
|
172
174
|
// the reconstructed mesh: lattice lines only, dimming as it goes
|
|
@@ -221,6 +223,7 @@ export default defineOperation({
|
|
|
221
223
|
if (!s)
|
|
222
224
|
return;
|
|
223
225
|
hideMeshes(target, KEY, false);
|
|
226
|
+
setReveal(s.field, p);
|
|
224
227
|
s.points.visible = true;
|
|
225
228
|
const sheetOn = p.sheet !== false;
|
|
226
229
|
// from a hold it only has part of the way to go: keep the same speed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metalize.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/metalize.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"metalize.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/metalize.ts"],"names":[],"mappings":";AAiFA,wBA+DG"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { Color } from 'three';
|
|
12
12
|
import { defineOperation } from '../types.js';
|
|
13
13
|
import { addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
|
|
14
|
-
import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, runProgress, setFieldParams } from './transitionField.js';
|
|
14
|
+
import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, goneGlsl, runProgress, setFieldParams, setReveal } from './transitionField.js';
|
|
15
15
|
const P = 'Mtl';
|
|
16
16
|
const KEY = 'metalize';
|
|
17
17
|
const STATE = '__opMetalize';
|
|
@@ -24,7 +24,7 @@ const DEFAULT_CUSTOM = '#9fd0ff';
|
|
|
24
24
|
function layerFor(st) {
|
|
25
25
|
return {
|
|
26
26
|
uniforms: { ...fieldUniforms(P, st.field), uMtlTint: st.tint, uMtlRough: st.rough, uMtlIrid: st.irid, uMtlLip: st.lip, uMtlCool: st.cool },
|
|
27
|
-
common: `varying vec3 vMtlQ;\nvarying vec3 vMtlR;\nvarying vec3 vMtlView;\n${fieldGlsl(P)}`,
|
|
27
|
+
common: `varying vec3 vMtlQ;\nvarying vec3 vMtlR;\nvarying vec3 vMtlView;\n${fieldGlsl(P)}\n${goneGlsl(P)}`,
|
|
28
28
|
vertex: /* glsl */ `
|
|
29
29
|
vMtlR = (uMtlRootInv * modelMatrix * vec4(transformed, 1.0)).xyz;
|
|
30
30
|
vMtlQ = MtlNorm(vMtlR);
|
|
@@ -33,6 +33,9 @@ function layerFor(st) {
|
|
|
33
33
|
{
|
|
34
34
|
float d = MtlThreshold() - MtlField(vMtlQ); // > 0 behind the front
|
|
35
35
|
float m = smoothstep(0.0, uMtlEdgeWidth, d);
|
|
36
|
+
// revealed by the metal: nothing ahead of the front, full metal right behind it
|
|
37
|
+
if (uMtlReveal > 0.5) { if (d < 0.0) discard; m = 1.0; }
|
|
38
|
+
if (MtlGone(vMtlQ) > 0.5) { m = 0.0; d = -1.0; } // wiped by the look that replaces it
|
|
36
39
|
if (m > 0.0 || d > -0.05) {
|
|
37
40
|
vec3 nv = normalize(cross(dFdx(vMtlView), dFdy(vMtlView)));
|
|
38
41
|
#if defined( STANDARD ) || defined( PHONG ) || defined( LAMBERT ) || defined( TOON )
|
|
@@ -77,6 +80,8 @@ export default defineOperation({
|
|
|
77
80
|
multi: true,
|
|
78
81
|
toggles: true,
|
|
79
82
|
usableIn: ['interaction', 'action', 'object'],
|
|
83
|
+
presence: 'paint',
|
|
84
|
+
field: (target) => target.userData[STATE]?.field,
|
|
80
85
|
stack: 'surface',
|
|
81
86
|
params: {
|
|
82
87
|
metal: {
|
|
@@ -127,6 +132,7 @@ export default defineOperation({
|
|
|
127
132
|
const s = target.userData[STATE];
|
|
128
133
|
if (!s)
|
|
129
134
|
return;
|
|
135
|
+
setReveal(s.field, p);
|
|
130
136
|
return runProgress(target, s.field, 0, {
|
|
131
137
|
duration: Number(p.duration), ease: 'power1.inOut',
|
|
132
138
|
onComplete: () => { s.mats.forEach(m => removeLayer(m, KEY)); delete target.userData[STATE]; },
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { OperationDefinition } from '../types';
|
|
2
|
+
/** Sample and draw every trail now (the ticker does this every frame; tests stepping time call it by hand). */
|
|
3
|
+
export declare function tickTrails(): void;
|
|
4
|
+
/** Every trail, in gallery order. */
|
|
5
|
+
export declare const TRAILS: OperationDefinition[];
|
|
6
|
+
//# sourceMappingURL=motionTrail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motionTrail.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/motionTrail.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,UAAU,CAAC;AAOxE,+GAA+G;AAC/G,wBAAgB,UAAU,SAAiB;AA4I3C,qCAAqC;AACrC,eAAO,MAAM,MAAM,EAAE,mBAAmB,EA6BvC,CAAC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
// Motion trails — add-ons that draw where the object has just been, whatever moves it:
|
|
2
|
+
// physical effects, clips, held motions, a drag in the studio. A trail watches the
|
|
3
|
+
// object's own world transform (trailCore: a short history, smoothed velocity and
|
|
4
|
+
// acceleration, sampled every frame on gsap's clock) — no other effect knows about it.
|
|
5
|
+
//
|
|
6
|
+
// One effect per style, all on this one engine and ONE settings API (the agent and the
|
|
7
|
+
// studio see the same shape for every trail):
|
|
8
|
+
// length · amount · size · opacity (Strength) · color · color2 (· color3) · duration (Fade)
|
|
9
|
+
// Length is how long it lasts, Amount how much of it, Size how big — each style scales
|
|
10
|
+
// them; the colours mean "main" and "what it turns / fades into" in every style.
|
|
11
|
+
// Each trail keeps its own state (`__opTrail_<style>`), so trails combine on one object.
|
|
12
|
+
//
|
|
13
|
+
// afterimageTrail fading Fresnel copies of the object along its path trailGhosts
|
|
14
|
+
// longExposureTrail a dense smear of faint copies — a long-exposure photo trailGhosts
|
|
15
|
+
// chromaticEchoTrail red / green / blue copies a beat apart: fringe → white trailGhosts
|
|
16
|
+
// streaksTrail crisp light ribbons from points spread over its surface trailStreaks
|
|
17
|
+
// Stamp trails — copies of the object left where it was, each turning into something
|
|
18
|
+
// and going away in place (trailStamps.ts + trailStampStyles.ts):
|
|
19
|
+
// smoke, ash, hologram, ink, frost (its own meshes, new shaders)
|
|
20
|
+
// sand (surface grains), voxel (cubes), shatter (its triangles as Voronoi shards),
|
|
21
|
+
// wireframe (its real edges), bubbles
|
|
22
|
+
//
|
|
23
|
+
// Everything lives in the SCENE (not under the object): an exit hides the object and
|
|
24
|
+
// the trail must keep going after it is gone. Built, compiled in the background
|
|
25
|
+
// (hideUntilWarm / warmHelpers), then faded in; switched off it fades out, waits for
|
|
26
|
+
// particles still in flight to finish, and is removed.
|
|
27
|
+
import { gsap } from 'gsap';
|
|
28
|
+
import { Color, Group, Matrix4, Vector3 } from 'three';
|
|
29
|
+
import { defineOperation } from '../types.js';
|
|
30
|
+
import { hideUntilWarm, warmHelpers, warmMode } from './warmup.js';
|
|
31
|
+
import { cameraPos, measure, newHistory, record } from './trailCore.js';
|
|
32
|
+
import { afterimage, chromaticEcho, longExposure } from './trailGhosts.js';
|
|
33
|
+
import { streaks } from './trailStreaks.js';
|
|
34
|
+
import { ash, bubbles, frost, hologram, ink, sand, shatter, smoke, voxel, wireframe } from './trailStampStyles.js';
|
|
35
|
+
// one ticker for every trail; time is gsap's own clock (follows the global time scale)
|
|
36
|
+
const active = new Set();
|
|
37
|
+
const tickAll = () => active.forEach(t => t());
|
|
38
|
+
/** Sample and draw every trail now (the ticker does this every frame; tests stepping time call it by hand). */
|
|
39
|
+
export function tickTrails() { tickAll(); }
|
|
40
|
+
const clock = () => gsap.globalTimeline.time();
|
|
41
|
+
function paramsOf(style, p, prev) {
|
|
42
|
+
// colour settings are sRGB hex; Color converts them to the linear working space
|
|
43
|
+
const col = (v, old) => (old ?? new Color()).set(String(v));
|
|
44
|
+
return {
|
|
45
|
+
style,
|
|
46
|
+
length: Number(p.length),
|
|
47
|
+
amount: Number(p.amount),
|
|
48
|
+
size: Number(p.size),
|
|
49
|
+
opacity: Number(p.opacity),
|
|
50
|
+
color: col(p.color, prev?.color), color2: col(p.color2, prev?.color2), color3: col(p.color3 ?? p.color2, prev?.color3),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** What a trail is built for — a change here rebuilds it (the others apply live). */
|
|
54
|
+
const shapeKey = (p) => `${Math.round(Number(p.amount) * 20)}`;
|
|
55
|
+
function build(KEY, styleName, style, target, p) {
|
|
56
|
+
const group = new Group();
|
|
57
|
+
group.name = `trail:${styleName}`;
|
|
58
|
+
group.userData.__opFxHelper = true;
|
|
59
|
+
group.matrixAutoUpdate = false;
|
|
60
|
+
let root = target;
|
|
61
|
+
while (root.parent)
|
|
62
|
+
root = root.parent;
|
|
63
|
+
root.add(group);
|
|
64
|
+
const { span, floor } = measure(target);
|
|
65
|
+
const ctx = {
|
|
66
|
+
target, group, env: { v: 0 }, p: paramsOf(styleName, p), span, floor,
|
|
67
|
+
hist: newHistory(), head: 0, count: 0, now: clock(), dt: 0,
|
|
68
|
+
vel: new Vector3(), acc: new Vector3(), speed: 0, world: new Matrix4(), cam: null,
|
|
69
|
+
};
|
|
70
|
+
style.build(ctx);
|
|
71
|
+
hideUntilWarm(group);
|
|
72
|
+
const camAt = new Vector3();
|
|
73
|
+
const st = { ctx, style, shape: shapeKey(p), tick: () => undefined };
|
|
74
|
+
st.tick = () => {
|
|
75
|
+
if (!target.parent) {
|
|
76
|
+
dispose(KEY, target);
|
|
77
|
+
return;
|
|
78
|
+
} // the object left the scene
|
|
79
|
+
ctx.cam = cameraPos(camAt);
|
|
80
|
+
record(ctx, clock());
|
|
81
|
+
style.update(ctx);
|
|
82
|
+
};
|
|
83
|
+
return st;
|
|
84
|
+
}
|
|
85
|
+
function dispose(KEY, target) {
|
|
86
|
+
const st = target.userData[KEY];
|
|
87
|
+
if (!st)
|
|
88
|
+
return;
|
|
89
|
+
active.delete(st.tick);
|
|
90
|
+
if (!active.size)
|
|
91
|
+
gsap.ticker.remove(tickAll);
|
|
92
|
+
gsap.killTweensOf(st.ctx.env);
|
|
93
|
+
st.resolve?.();
|
|
94
|
+
st.style.dispose?.(st.ctx);
|
|
95
|
+
st.ctx.group.removeFromParent();
|
|
96
|
+
delete target.userData[KEY];
|
|
97
|
+
}
|
|
98
|
+
/** Resolves once the style has nothing left in flight (or after `max` seconds). */
|
|
99
|
+
function settled(st, max) {
|
|
100
|
+
return new Promise(resolve => {
|
|
101
|
+
const t0 = performance.now();
|
|
102
|
+
const check = () => {
|
|
103
|
+
if (!st.style.alive?.(st.ctx) || performance.now() - t0 > max * 1000) {
|
|
104
|
+
gsap.ticker.remove(check);
|
|
105
|
+
resolve();
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
gsap.ticker.add(check);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/** One trail effect: a style on the shared engine, with the shared settings. */
|
|
112
|
+
function trail(spec) {
|
|
113
|
+
const KEY = `__opTrail_${spec.style}`;
|
|
114
|
+
const value = `${spec.style}Trail`;
|
|
115
|
+
const c = (s) => ({ type: 'color', label: s.label, default: s.default, ...(s.hint ? { hint: s.hint } : {}) });
|
|
116
|
+
return defineOperation({
|
|
117
|
+
value, label: spec.label,
|
|
118
|
+
description: `${spec.description} — wherever the object moves (physical effects, clips, a drag); nothing while it stands still. Combines with other trails`,
|
|
119
|
+
channel: 'visual',
|
|
120
|
+
multi: true,
|
|
121
|
+
toggles: true,
|
|
122
|
+
usableIn: ['interaction', 'action', 'object'],
|
|
123
|
+
addOn: true, // on before an entrance, off after an exit (Follows visibility)
|
|
124
|
+
params: {
|
|
125
|
+
length: { type: 'number', label: 'Length', default: 0.35, min: 0.05, max: 2, step: 0.01, unit: 's', hint: 'How long the trail lasts' },
|
|
126
|
+
amount: { type: 'number', label: 'Amount', default: 0.35, min: 0, max: 1, step: 0.01, hint: 'How much of it — copies, ribbons, grains' },
|
|
127
|
+
size: { type: 'number', label: 'Size', default: 0.35, min: 0, max: 1, step: 0.01, hint: 'Width, grain size, how far it spreads' },
|
|
128
|
+
opacity: { type: 'number', label: 'Strength', default: 0.7, min: 0.05, max: 2, step: 0.05 },
|
|
129
|
+
color: c(spec.color),
|
|
130
|
+
color2: c(spec.color2),
|
|
131
|
+
...(spec.color3 ? { color3: c(spec.color3) } : {}),
|
|
132
|
+
duration: { type: 'number', label: 'Fade', default: 0.35, min: 0, max: 3, step: 0.05, unit: 's', hint: 'How long it takes to switch on and off' },
|
|
133
|
+
},
|
|
134
|
+
apply(target, p) {
|
|
135
|
+
let st = target.userData[KEY];
|
|
136
|
+
if (st && st.shape !== shapeKey(p)) {
|
|
137
|
+
dispose(KEY, target);
|
|
138
|
+
st = undefined;
|
|
139
|
+
} // a different build: made again
|
|
140
|
+
if (!st) {
|
|
141
|
+
st = build(KEY, spec.style, spec.impl, target, p);
|
|
142
|
+
target.userData[KEY] = st;
|
|
143
|
+
if (!active.size)
|
|
144
|
+
gsap.ticker.add(tickAll);
|
|
145
|
+
active.add(st.tick);
|
|
146
|
+
}
|
|
147
|
+
const s = st;
|
|
148
|
+
s.ending = false;
|
|
149
|
+
s.ctx.p = paramsOf(spec.style, p, s.ctx.p);
|
|
150
|
+
const ready = warmHelpers(s.ctx.group);
|
|
151
|
+
if (warmMode.on)
|
|
152
|
+
return ready; // a warm-only run: compiled, nothing shown
|
|
153
|
+
return ready.then(() => new Promise(resolve => {
|
|
154
|
+
gsap.killTweensOf(s.ctx.env);
|
|
155
|
+
s.resolve?.();
|
|
156
|
+
s.resolve = resolve;
|
|
157
|
+
const D = Number(p.duration) * (1 - s.ctx.env.v);
|
|
158
|
+
if (D <= 1e-4) {
|
|
159
|
+
s.ctx.env.v = 1;
|
|
160
|
+
s.resolve = undefined;
|
|
161
|
+
resolve();
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
gsap.to(s.ctx.env, { v: 1, duration: D, ease: 'power1.out', onComplete: () => { s.resolve = undefined; resolve(); } });
|
|
165
|
+
}));
|
|
166
|
+
},
|
|
167
|
+
revert(target, p) {
|
|
168
|
+
const st = target.userData[KEY];
|
|
169
|
+
if (!st)
|
|
170
|
+
return;
|
|
171
|
+
gsap.killTweensOf(st.ctx.env);
|
|
172
|
+
st.resolve?.();
|
|
173
|
+
const D = Number(p.duration) * st.ctx.env.v;
|
|
174
|
+
if (D <= 1e-4) {
|
|
175
|
+
dispose(KEY, target);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
st.ending = true;
|
|
179
|
+
return new Promise(resolve => {
|
|
180
|
+
st.resolve = resolve;
|
|
181
|
+
gsap.to(st.ctx.env, {
|
|
182
|
+
v: 0, duration: D, ease: 'power1.in',
|
|
183
|
+
// particles still in flight finish (up to 4 s), then it is removed — unless switched on again meanwhile
|
|
184
|
+
onComplete: () => { void settled(st, 4).then(() => { if (st.ending && target.userData[KEY] === st)
|
|
185
|
+
dispose(KEY, target); resolve(); }); },
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
/** Every trail, in gallery order. */
|
|
192
|
+
export const TRAILS = [
|
|
193
|
+
trail({ style: 'afterimage', impl: afterimage, label: 'Afterimage trail', description: 'Fading glassy copies of the object along its path',
|
|
194
|
+
color: { label: 'Colour', default: '#bfe6ff' }, color2: { label: 'Tail colour', default: '#7d5cff', hint: 'The colour it fades into' } }),
|
|
195
|
+
trail({ style: 'longExposure', impl: longExposure, label: 'Long exposure', description: 'A dense smear of faint copies, like a long-exposure photo',
|
|
196
|
+
color: { label: 'Colour', default: '#bfe6ff' }, color2: { label: 'Tail colour', default: '#7d5cff', hint: 'The colour it fades into' } }),
|
|
197
|
+
trail({ style: 'chromaticEcho', impl: chromaticEcho, label: 'Chromatic echo', description: 'Three coloured copies a beat apart — a fringe that adds up to white',
|
|
198
|
+
color: { label: 'First echo', default: '#ff2b1c', hint: 'Three colours that add up to white' }, color2: { label: 'Second echo', default: '#22ff4e' }, color3: { label: 'Third echo', default: '#2b5cff' } }),
|
|
199
|
+
trail({ style: 'streaks', impl: streaks, label: 'Light streaks', description: 'Crisp light ribbons drawn from points over its surface',
|
|
200
|
+
color: { label: 'Colour', default: '#bfe6ff' }, color2: { label: 'Tail colour', default: '#7d5cff', hint: 'The colour it fades into' } }),
|
|
201
|
+
trail({ style: 'smoke', impl: smoke, label: 'Smoke trail', description: 'Copies of the object left behind turn to smoke in its shape, billow up and evaporate',
|
|
202
|
+
color: { label: 'Smoke colour', default: '#e4e8ee', hint: 'Where light falls on it' }, color2: { label: 'Shade colour', default: '#5d6673', hint: 'Its underside' } }),
|
|
203
|
+
trail({ style: 'ash', impl: ash, label: 'Ash trail', description: 'Copies left behind burn from within along a glowing ember front, and are gone',
|
|
204
|
+
color: { label: 'Ash colour', default: '#8d8a86' }, color2: { label: 'Ember colour', default: '#ff7a1f', hint: 'The glowing front' } }),
|
|
205
|
+
trail({ style: 'sand', impl: sand, label: 'Sand trail', description: 'Copies left behind fall apart into grains that pour down into a little heap',
|
|
206
|
+
color: { label: 'Sand colour', default: '#dcc59c' }, color2: { label: 'Dark grains', default: '#8a6f4a', hint: 'Grains vary between the two' } }),
|
|
207
|
+
trail({ style: 'hologram', impl: hologram, label: 'Hologram trail', description: 'Copies left behind as holograms that glitch out band by band',
|
|
208
|
+
color: { label: 'Hologram colour', default: '#45dcff' }, color2: { label: 'Grid colour', default: '#e6fbff', hint: 'Grid lines and the rim' } }),
|
|
209
|
+
trail({ style: 'voxel', impl: voxel, label: 'Voxel trail', description: 'Copies left behind as cubes that drop from the top, tumble and shrink away',
|
|
210
|
+
color: { label: 'Voxel colour', default: '#7cc4ff' }, color2: { label: 'Edge colour', default: '#f2f9ff' } }),
|
|
211
|
+
trail({ style: 'shatter', impl: shatter, label: 'Shatter trail', description: 'Copies left behind cut into glass shards from its own triangles, drifting apart',
|
|
212
|
+
color: { label: 'Shard colour', default: '#b9d6ff' }, color2: { label: 'Rim colour', default: '#ffffff', hint: 'The light along its edges' } }),
|
|
213
|
+
trail({ style: 'ink', impl: ink, label: 'Ink trail', description: 'Copies left behind swirl into ink in water and tear into filaments',
|
|
214
|
+
color: { label: 'Ink colour', default: '#1b2c80' }, color2: { label: 'Bleed colour', default: '#8fb0ff', hint: 'Where it thins out' } }),
|
|
215
|
+
trail({ style: 'frost', impl: frost, label: 'Frost trail', description: 'Copies left behind frost over, crack open and melt away',
|
|
216
|
+
color: { label: 'Ice colour', default: '#cdeeff' }, color2: { label: 'Rim colour', default: '#ffffff', hint: 'Its rim and cracks' } }),
|
|
217
|
+
trail({ style: 'wireframe', impl: wireframe, label: 'Wireframe trail', description: 'Copies left behind as its real mesh edges, each retracting into its middle',
|
|
218
|
+
color: { label: 'Wire colour', default: '#7ff0ff' }, color2: { label: 'Fade colour', default: '#7a5cff', hint: 'The colour it ages into' } }),
|
|
219
|
+
trail({ style: 'bubbles', impl: bubbles, label: 'Bubble trail', description: 'Soap bubbles form over copies of it, rise, wobble and pop',
|
|
220
|
+
color: { label: 'Bubble colour', default: '#bfeaff' }, color2: { label: 'Sheen colour', default: '#ff9fd8', hint: 'The soap-film colour sliding over each bubble' } }),
|
|
221
|
+
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"petrify.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/petrify.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"petrify.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/petrify.ts"],"names":[],"mappings":";AAwDA,wBA6CG"}
|