@3driseai/3drise-viewer 0.1.26 → 0.1.28
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 +3 -0
- package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
- package/dist/animationsV2/ClipPlayer.js +67 -8
- package/dist/animationsV2/ClipsRuntime.d.ts +39 -0
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +245 -14
- package/dist/animationsV2/appliers.d.ts +5 -0
- package/dist/animationsV2/appliers.d.ts.map +1 -1
- package/dist/animationsV2/appliers.js +25 -7
- 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 +18 -7
- package/dist/animationsV2/sequenceUtils.d.ts +42 -1
- package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
- package/dist/animationsV2/sequenceUtils.js +103 -3
- package/dist/animationsV2/types.d.ts +20 -0
- package/dist/animationsV2/types.d.ts.map +1 -1
- package/dist/components/AdvancedGrid.d.ts +8 -2
- package/dist/components/AdvancedGrid.d.ts.map +1 -1
- package/dist/components/AdvancedGrid.js +31 -14
- package/dist/components/AnimatedObject.d.ts.map +1 -1
- package/dist/components/AnimatedObject.js +7 -5
- package/dist/components/ApollonianGrid.d.ts +25 -0
- package/dist/components/ApollonianGrid.d.ts.map +1 -0
- package/dist/components/ApollonianGrid.js +80 -0
- package/dist/components/Bubbles.d.ts +7 -1
- package/dist/components/Bubbles.d.ts.map +1 -1
- package/dist/components/Bubbles.js +42 -22
- package/dist/components/ChladniGrid.d.ts +8 -4
- package/dist/components/ChladniGrid.d.ts.map +1 -1
- package/dist/components/ChladniGrid.js +31 -13
- package/dist/components/CircuitGrid.d.ts +8 -11
- package/dist/components/CircuitGrid.d.ts.map +1 -1
- package/dist/components/CircuitGrid.js +31 -13
- package/dist/components/CloudsGenerator.d.ts +1 -1
- package/dist/components/CloudsGenerator.js +1 -1
- package/dist/components/ConformalGrid.d.ts +25 -0
- package/dist/components/ConformalGrid.d.ts.map +1 -0
- package/dist/components/ConformalGrid.js +97 -0
- package/dist/components/ContourGrid.d.ts +8 -14
- package/dist/components/ContourGrid.d.ts.map +1 -1
- package/dist/components/ContourGrid.js +31 -13
- package/dist/components/EffectsGenerator.d.ts +7 -1
- package/dist/components/EffectsGenerator.d.ts.map +1 -1
- package/dist/components/EffectsGenerator.js +39 -38
- package/dist/components/EnvironmentManager.d.ts +4 -4
- package/dist/components/EnvironmentManager.d.ts.map +1 -1
- package/dist/components/FlowNetGrid.d.ts +8 -4
- package/dist/components/FlowNetGrid.d.ts.map +1 -1
- package/dist/components/FlowNetGrid.js +31 -13
- package/dist/components/FractalGrid.d.ts +8 -12
- package/dist/components/FractalGrid.d.ts.map +1 -1
- package/dist/components/FractalGrid.js +31 -13
- package/dist/components/GirihGrid.d.ts +8 -1
- package/dist/components/GirihGrid.d.ts.map +1 -1
- package/dist/components/GirihGrid.js +31 -13
- package/dist/components/Glyphs.d.ts +7 -1
- package/dist/components/Glyphs.d.ts.map +1 -1
- package/dist/components/Glyphs.js +40 -34
- package/dist/components/GravWaveGrid.d.ts +8 -1
- package/dist/components/GravWaveGrid.d.ts.map +1 -1
- package/dist/components/GravWaveGrid.js +31 -13
- package/dist/components/GridsGenerator.d.ts +9 -3
- package/dist/components/GridsGenerator.d.ts.map +1 -1
- package/dist/components/GridsGenerator.js +41 -18
- package/dist/components/HexGrid.d.ts +8 -10
- package/dist/components/HexGrid.d.ts.map +1 -1
- package/dist/components/HexGrid.js +31 -13
- package/dist/components/HilbertGrid.d.ts +25 -0
- package/dist/components/HilbertGrid.d.ts.map +1 -0
- package/dist/components/HilbertGrid.js +93 -0
- package/dist/components/HyperbolicGrid.d.ts +8 -4
- package/dist/components/HyperbolicGrid.d.ts.map +1 -1
- package/dist/components/HyperbolicGrid.js +31 -13
- package/dist/components/LandscapeBuilder.d.ts +1 -1
- package/dist/components/LandscapeBuilder.d.ts.map +1 -1
- package/dist/components/LandscapeBuilder.js +1 -1
- package/dist/components/LandscapeObject.d.ts +1 -1
- package/dist/components/LandscapeObject.d.ts.map +1 -1
- package/dist/components/LandscapeObject.js +1 -1
- package/dist/components/LensingGrid.d.ts +25 -0
- package/dist/components/LensingGrid.d.ts.map +1 -0
- package/dist/components/LensingGrid.js +81 -0
- package/dist/components/MoireGrid.d.ts +8 -12
- package/dist/components/MoireGrid.d.ts.map +1 -1
- package/dist/components/MoireGrid.js +31 -13
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +2 -2
- package/dist/components/ObjectsRenderer.d.ts.map +1 -1
- package/dist/components/ObjectsRenderer.js +37 -3
- package/dist/components/OceanBuilder.d.ts +1 -1
- package/dist/components/OceanBuilder.js +1 -1
- package/dist/components/ParastichyGrid.d.ts +25 -0
- package/dist/components/ParastichyGrid.d.ts.map +1 -0
- package/dist/components/ParastichyGrid.js +82 -0
- package/dist/components/ParticlesGenerator.d.ts.map +1 -1
- package/dist/components/ParticlesGenerator.js +6 -0
- package/dist/components/PhyllotaxisGrid.d.ts +25 -0
- package/dist/components/PhyllotaxisGrid.d.ts.map +1 -0
- package/dist/components/PhyllotaxisGrid.js +95 -0
- package/dist/components/QuasiGrid.d.ts +8 -11
- package/dist/components/QuasiGrid.d.ts.map +1 -1
- package/dist/components/QuasiGrid.js +31 -13
- package/dist/components/RadarGrid.d.ts +8 -13
- package/dist/components/RadarGrid.d.ts.map +1 -1
- package/dist/components/RadarGrid.js +31 -13
- package/dist/components/ReactionDiffusionGrid.d.ts +8 -1
- package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
- package/dist/components/ReactionDiffusionGrid.js +33 -139
- package/dist/components/SceneBuilder.js +1 -1
- package/dist/components/SkySystem.d.ts +1 -1
- package/dist/components/SparklesBurst.d.ts +7 -1
- package/dist/components/SparklesBurst.d.ts.map +1 -1
- package/dist/components/SparklesBurst.js +31 -28
- package/dist/components/TerrainBuilder.d.ts +1 -1
- package/dist/components/TerrainBuilder.d.ts.map +1 -1
- package/dist/components/TerrainBuilder.js +1 -1
- package/dist/components/TruchetGrid.d.ts +25 -0
- package/dist/components/TruchetGrid.d.ts.map +1 -0
- package/dist/components/TruchetGrid.js +82 -0
- package/dist/components/VoronoiGrid.d.ts +8 -10
- package/dist/components/VoronoiGrid.d.ts.map +1 -1
- package/dist/components/VoronoiGrid.js +31 -13
- package/dist/components/WallpaperGrid.d.ts +8 -1
- package/dist/components/WallpaperGrid.d.ts.map +1 -1
- package/dist/components/WallpaperGrid.js +33 -210
- package/dist/components/effects/AuraEffect.d.ts +8 -3
- package/dist/components/effects/AuraEffect.d.ts.map +1 -1
- package/dist/components/effects/AuraEffect.js +49 -24
- package/dist/components/effects/AuroraEffect.d.ts +8 -3
- package/dist/components/effects/AuroraEffect.d.ts.map +1 -1
- package/dist/components/effects/AuroraEffect.js +45 -25
- package/dist/components/effects/BlackHoleEffect.d.ts +8 -3
- package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -1
- package/dist/components/effects/BlackHoleEffect.js +42 -21
- package/dist/components/effects/ConstellationEffect.d.ts +8 -3
- package/dist/components/effects/ConstellationEffect.d.ts.map +1 -1
- package/dist/components/effects/ConstellationEffect.js +49 -23
- package/dist/components/effects/DandelionSeedsEffect.d.ts +7 -2
- package/dist/components/effects/DandelionSeedsEffect.d.ts.map +1 -1
- package/dist/components/effects/DandelionSeedsEffect.js +19 -9
- package/dist/components/effects/DataStreamEffect.d.ts +8 -3
- package/dist/components/effects/DataStreamEffect.d.ts.map +1 -1
- package/dist/components/effects/DataStreamEffect.js +54 -26
- package/dist/components/effects/DnaHelixEffect.d.ts +8 -3
- package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -1
- package/dist/components/effects/DnaHelixEffect.js +62 -30
- package/dist/components/effects/FallingLeavesEffect.d.ts +7 -2
- package/dist/components/effects/FallingLeavesEffect.d.ts.map +1 -1
- package/dist/components/effects/FallingLeavesEffect.js +19 -9
- package/dist/components/effects/FieldLinesEffect.d.ts +8 -3
- package/dist/components/effects/FieldLinesEffect.d.ts.map +1 -1
- package/dist/components/effects/FieldLinesEffect.js +30 -20
- package/dist/components/effects/Fire.d.ts +8 -3
- package/dist/components/effects/Fire.d.ts.map +1 -1
- package/dist/components/effects/Fire.js +47 -10
- package/dist/components/effects/FireflySwarmEffect.d.ts +7 -2
- package/dist/components/effects/FireflySwarmEffect.d.ts.map +1 -1
- package/dist/components/effects/FireflySwarmEffect.js +19 -9
- package/dist/components/effects/Flares.d.ts +10 -3
- package/dist/components/effects/Flares.d.ts.map +1 -1
- package/dist/components/effects/Flares.js +53 -56
- package/dist/components/effects/ForcefieldEffect.d.ts +8 -3
- package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -1
- package/dist/components/effects/ForcefieldEffect.js +52 -33
- package/dist/components/effects/GalaxyEffect.d.ts +7 -2
- package/dist/components/effects/GalaxyEffect.d.ts.map +1 -1
- package/dist/components/effects/GalaxyEffect.js +19 -9
- package/dist/components/effects/HarmonicShellEffect.d.ts +8 -3
- package/dist/components/effects/HarmonicShellEffect.d.ts.map +1 -1
- package/dist/components/effects/HarmonicShellEffect.js +30 -22
- package/dist/components/effects/HologramEffect.d.ts +8 -3
- package/dist/components/effects/HologramEffect.d.ts.map +1 -1
- package/dist/components/effects/HologramEffect.js +52 -23
- package/dist/components/effects/IceCrystalsEffect.d.ts +8 -3
- package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -1
- package/dist/components/effects/IceCrystalsEffect.js +36 -21
- package/dist/components/effects/IceHaloEffect.d.ts +7 -2
- package/dist/components/effects/IceHaloEffect.d.ts.map +1 -1
- package/dist/components/effects/IceHaloEffect.js +19 -9
- package/dist/components/effects/LichtenbergEffect.d.ts +7 -2
- package/dist/components/effects/LichtenbergEffect.d.ts.map +1 -1
- package/dist/components/effects/LichtenbergEffect.js +19 -9
- package/dist/components/effects/LightningEffect.d.ts +8 -3
- package/dist/components/effects/LightningEffect.d.ts.map +1 -1
- package/dist/components/effects/LightningEffect.js +54 -32
- package/dist/components/effects/MoleculesEffect.d.ts +8 -3
- package/dist/components/effects/MoleculesEffect.d.ts.map +1 -1
- package/dist/components/effects/MoleculesEffect.js +31 -21
- package/dist/components/effects/MurmurationEffect.d.ts +7 -2
- package/dist/components/effects/MurmurationEffect.d.ts.map +1 -1
- package/dist/components/effects/MurmurationEffect.js +19 -9
- package/dist/components/effects/NeuralNetworkEffect.d.ts +8 -3
- package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -1
- package/dist/components/effects/NeuralNetworkEffect.js +66 -33
- package/dist/components/effects/OrbEffect.d.ts +8 -3
- package/dist/components/effects/OrbEffect.d.ts.map +1 -1
- package/dist/components/effects/OrbEffect.js +89 -42
- package/dist/components/effects/PlanetaryRingsEffect.d.ts +7 -2
- package/dist/components/effects/PlanetaryRingsEffect.d.ts.map +1 -1
- package/dist/components/effects/PlanetaryRingsEffect.js +19 -9
- package/dist/components/effects/PortalEffect.d.ts +8 -3
- package/dist/components/effects/PortalEffect.d.ts.map +1 -1
- package/dist/components/effects/PortalEffect.js +41 -25
- package/dist/components/effects/ShockwaveEffect.d.ts +7 -2
- package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
- package/dist/components/effects/ShockwaveEffect.js +19 -9
- package/dist/components/effects/SmokePlumeEffect.d.ts +8 -3
- package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -1
- package/dist/components/effects/SmokePlumeEffect.js +30 -20
- package/dist/components/effects/SmokeRibbon.d.ts +8 -2
- package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
- package/dist/components/effects/SmokeRibbon.js +34 -24
- package/dist/components/effects/SmokeRingEffect.d.ts +8 -3
- package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -1
- package/dist/components/effects/SmokeRingEffect.js +33 -21
- package/dist/components/effects/StrangeAttractorEffect.d.ts +8 -3
- package/dist/components/effects/StrangeAttractorEffect.d.ts.map +1 -1
- package/dist/components/effects/StrangeAttractorEffect.js +30 -20
- package/dist/components/effects/VolumetricFogEffect.d.ts +8 -3
- package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -1
- package/dist/components/effects/VolumetricFogEffect.js +38 -20
- package/dist/components/effects/WaterCausticsEffect.d.ts +7 -2
- package/dist/components/effects/WaterCausticsEffect.d.ts.map +1 -1
- package/dist/components/effects/WaterCausticsEffect.js +19 -9
- package/dist/components/effects/index.d.ts +0 -1
- package/dist/components/effects/index.d.ts.map +1 -1
- package/dist/components/effects/index.js +0 -1
- package/dist/components/index.d.ts +14 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +7 -1
- package/dist/components/landscape/LandscapeMesh.js +1 -1
- package/dist/components/landscape/types.d.ts +1 -1
- package/dist/components/landscape/types.d.ts.map +1 -1
- package/dist/components/particles/MagneticBottleParticles.d.ts +17 -0
- package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -0
- package/dist/components/particles/MagneticBottleParticles.js +618 -0
- package/dist/components/particles/ShapeBurstParticles.d.ts +17 -0
- package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -0
- package/dist/components/particles/ShapeBurstParticles.js +588 -0
- package/dist/components/particles/ShapeFlowParticles.d.ts +17 -0
- package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -0
- package/dist/components/particles/ShapeFlowParticles.js +755 -0
- package/dist/components/particles/index.d.ts +6 -0
- package/dist/components/particles/index.d.ts.map +1 -1
- package/dist/components/particles/index.js +3 -0
- package/dist/components/terrain/types.d.ts +1 -1
- package/dist/components/terrain/types.d.ts.map +1 -1
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +1 -1
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
- package/dist/components/volumetricClouds/types.d.ts +1 -1
- package/dist/components/volumetricClouds/types.d.ts.map +1 -1
- package/dist/components/water/types.d.ts +1 -1
- package/dist/components/water/types.d.ts.map +1 -1
- 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/useConfigDriver.d.ts +22 -0
- package/dist/hooks/useConfigDriver.d.ts.map +1 -0
- package/dist/hooks/useConfigDriver.js +43 -0
- package/dist/hooks/useConfigLive.d.ts +1 -1
- package/dist/hooks/useConfigLive.d.ts.map +1 -1
- package/dist/hooks/useLandscapeMaps.d.ts +1 -1
- package/dist/hooks/useLandscapeMaps.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.d.ts +1 -1
- package/dist/hooks/useThunder.d.ts +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/interactions/index.d.ts +2 -1
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/interactions/index.js +1 -1
- package/dist/interactions/runner.d.ts +18 -3
- package/dist/interactions/runner.d.ts.map +1 -1
- package/dist/interactions/runner.js +25 -2
- package/dist/operations/catalogue/curlSmoke.d.ts +3 -0
- package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -0
- package/dist/operations/catalogue/curlSmoke.js +178 -0
- package/dist/operations/catalogue/displayImage.d.ts.map +1 -1
- package/dist/operations/catalogue/displayImage.js +1 -0
- package/dist/operations/catalogue/dissolve.d.ts +3 -0
- package/dist/operations/catalogue/dissolve.d.ts.map +1 -0
- package/dist/operations/catalogue/dissolve.js +57 -0
- package/dist/operations/catalogue/emberAsh.d.ts +3 -0
- package/dist/operations/catalogue/emberAsh.d.ts.map +1 -0
- package/dist/operations/catalogue/emberAsh.js +171 -0
- package/dist/operations/catalogue/fade.d.ts.map +1 -1
- package/dist/operations/catalogue/fade.js +1 -0
- package/dist/operations/catalogue/flip.d.ts +3 -0
- package/dist/operations/catalogue/flip.d.ts.map +1 -0
- package/dist/operations/catalogue/flip.js +69 -0
- package/dist/operations/catalogue/flock.d.ts +3 -0
- package/dist/operations/catalogue/flock.d.ts.map +1 -0
- package/dist/operations/catalogue/flock.js +163 -0
- package/dist/operations/catalogue/focus.d.ts.map +1 -1
- package/dist/operations/catalogue/focus.js +1 -0
- package/dist/operations/catalogue/frame.d.ts +3 -0
- package/dist/operations/catalogue/frame.d.ts.map +1 -0
- package/dist/operations/catalogue/frame.js +44 -0
- package/dist/operations/catalogue/frost.d.ts +3 -0
- package/dist/operations/catalogue/frost.d.ts.map +1 -0
- package/dist/operations/catalogue/frost.js +111 -0
- package/dist/operations/catalogue/fxInstances.d.ts +21 -0
- package/dist/operations/catalogue/fxInstances.d.ts.map +1 -0
- package/dist/operations/catalogue/fxInstances.js +47 -0
- package/dist/operations/catalogue/fxPoints.d.ts +22 -0
- package/dist/operations/catalogue/fxPoints.d.ts.map +1 -0
- package/dist/operations/catalogue/fxPoints.js +70 -0
- package/dist/operations/catalogue/glow.d.ts.map +1 -1
- package/dist/operations/catalogue/glow.js +2 -1
- package/dist/operations/catalogue/heatCracks.d.ts +3 -0
- package/dist/operations/catalogue/heatCracks.d.ts.map +1 -0
- package/dist/operations/catalogue/heatCracks.js +134 -0
- package/dist/operations/catalogue/hologram.d.ts +3 -0
- package/dist/operations/catalogue/hologram.d.ts.map +1 -0
- package/dist/operations/catalogue/hologram.js +118 -0
- package/dist/operations/catalogue/inkBloom.d.ts +3 -0
- package/dist/operations/catalogue/inkBloom.d.ts.map +1 -0
- package/dist/operations/catalogue/inkBloom.js +156 -0
- package/dist/operations/catalogue/ivy.d.ts +13 -0
- package/dist/operations/catalogue/ivy.d.ts.map +1 -0
- package/dist/operations/catalogue/ivy.js +469 -0
- package/dist/operations/catalogue/jelly.d.ts +3 -0
- package/dist/operations/catalogue/jelly.d.ts.map +1 -0
- package/dist/operations/catalogue/jelly.js +50 -0
- package/dist/operations/catalogue/kintsugi.d.ts +3 -0
- package/dist/operations/catalogue/kintsugi.d.ts.map +1 -0
- package/dist/operations/catalogue/kintsugi.js +173 -0
- package/dist/operations/catalogue/lidarScan.d.ts +3 -0
- package/dist/operations/catalogue/lidarScan.d.ts.map +1 -0
- package/dist/operations/catalogue/lidarScan.js +240 -0
- package/dist/operations/catalogue/liquidMetal.d.ts +3 -0
- package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -0
- package/dist/operations/catalogue/liquidMetal.js +122 -0
- package/dist/operations/catalogue/metalize.d.ts +3 -0
- package/dist/operations/catalogue/metalize.d.ts.map +1 -0
- package/dist/operations/catalogue/metalize.js +135 -0
- package/dist/operations/catalogue/moveToFront.d.ts.map +1 -1
- package/dist/operations/catalogue/moveToFront.js +1 -0
- package/dist/operations/catalogue/orbit.d.ts +3 -0
- package/dist/operations/catalogue/orbit.d.ts.map +1 -0
- package/dist/operations/catalogue/orbit.js +29 -0
- package/dist/operations/catalogue/particleSwarm.d.ts +3 -0
- package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -0
- package/dist/operations/catalogue/particleSwarm.js +138 -0
- package/dist/operations/catalogue/petalPeel.d.ts +3 -0
- package/dist/operations/catalogue/petalPeel.d.ts.map +1 -0
- package/dist/operations/catalogue/petalPeel.js +137 -0
- package/dist/operations/catalogue/petrify.d.ts +3 -0
- package/dist/operations/catalogue/petrify.d.ts.map +1 -0
- package/dist/operations/catalogue/petrify.js +94 -0
- package/dist/operations/catalogue/portal.d.ts +3 -0
- package/dist/operations/catalogue/portal.d.ts.map +1 -0
- package/dist/operations/catalogue/portal.js +224 -0
- package/dist/operations/catalogue/print3d.d.ts +3 -0
- package/dist/operations/catalogue/print3d.d.ts.map +1 -0
- package/dist/operations/catalogue/print3d.js +275 -0
- package/dist/operations/catalogue/rainBeads.d.ts +3 -0
- package/dist/operations/catalogue/rainBeads.d.ts.map +1 -0
- package/dist/operations/catalogue/rainBeads.js +223 -0
- package/dist/operations/catalogue/restPose.d.ts +21 -0
- package/dist/operations/catalogue/restPose.d.ts.map +1 -0
- package/dist/operations/catalogue/restPose.js +55 -0
- package/dist/operations/catalogue/rimLight.d.ts +3 -0
- package/dist/operations/catalogue/rimLight.d.ts.map +1 -0
- package/dist/operations/catalogue/rimLight.js +72 -0
- package/dist/operations/catalogue/sandErosion.d.ts +3 -0
- package/dist/operations/catalogue/sandErosion.d.ts.map +1 -0
- package/dist/operations/catalogue/sandErosion.js +167 -0
- package/dist/operations/catalogue/shaderLayers.d.ts +74 -0
- package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -0
- package/dist/operations/catalogue/shaderLayers.js +322 -0
- package/dist/operations/catalogue/shatter.d.ts +3 -0
- package/dist/operations/catalogue/shatter.d.ts.map +1 -0
- package/dist/operations/catalogue/shatter.js +267 -0
- package/dist/operations/catalogue/silkDrape.d.ts +3 -0
- package/dist/operations/catalogue/silkDrape.d.ts.map +1 -0
- package/dist/operations/catalogue/silkDrape.js +340 -0
- package/dist/operations/catalogue/spin.d.ts +3 -0
- package/dist/operations/catalogue/spin.d.ts.map +1 -0
- package/dist/operations/catalogue/spin.js +42 -0
- package/dist/operations/catalogue/surfaceSample.d.ts +17 -0
- package/dist/operations/catalogue/surfaceSample.d.ts.map +1 -0
- package/dist/operations/catalogue/surfaceSample.js +187 -0
- package/dist/operations/catalogue/swirl.d.ts +3 -0
- package/dist/operations/catalogue/swirl.d.ts.map +1 -0
- package/dist/operations/catalogue/swirl.js +69 -0
- package/dist/operations/catalogue/teleport.d.ts +3 -0
- package/dist/operations/catalogue/teleport.d.ts.map +1 -0
- package/dist/operations/catalogue/teleport.js +213 -0
- package/dist/operations/catalogue/transitionField.d.ts +124 -0
- package/dist/operations/catalogue/transitionField.d.ts.map +1 -0
- package/dist/operations/catalogue/transitionField.js +278 -0
- package/dist/operations/catalogue/unweave.d.ts +3 -0
- package/dist/operations/catalogue/unweave.d.ts.map +1 -0
- package/dist/operations/catalogue/unweave.js +233 -0
- package/dist/operations/catalogue/visibility.d.ts.map +1 -1
- package/dist/operations/catalogue/visibility.js +1 -0
- package/dist/operations/catalogue/voxelize.d.ts +3 -0
- package/dist/operations/catalogue/voxelize.d.ts.map +1 -0
- package/dist/operations/catalogue/voxelize.js +148 -0
- package/dist/operations/catalogue/warmup.d.ts +22 -0
- package/dist/operations/catalogue/warmup.d.ts.map +1 -0
- package/dist/operations/catalogue/warmup.js +106 -0
- package/dist/operations/catalogue/zoom.d.ts.map +1 -1
- package/dist/operations/catalogue/zoom.js +1 -0
- package/dist/operations/index.d.ts +4 -2
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +4 -2
- package/dist/operations/objectEffects.d.ts +46 -0
- package/dist/operations/objectEffects.d.ts.map +1 -0
- package/dist/operations/objectEffects.js +136 -0
- package/dist/operations/registry.d.ts +7 -2
- package/dist/operations/registry.d.ts.map +1 -1
- package/dist/operations/registry.js +45 -3
- package/dist/operations/runtime.d.ts +40 -2
- package/dist/operations/runtime.d.ts.map +1 -1
- package/dist/operations/runtime.js +164 -8
- package/dist/operations/types.d.ts +29 -3
- package/dist/operations/types.d.ts.map +1 -1
- package/dist/operations/types.js +6 -0
- package/dist/operations/useObjectEffectLayers.d.ts +4 -0
- package/dist/operations/useObjectEffectLayers.d.ts.map +1 -0
- package/dist/operations/useObjectEffectLayers.js +42 -0
- package/dist/operations/useOperationsRuntime.d.ts.map +1 -1
- package/dist/operations/useOperationsRuntime.js +42 -4
- package/dist/presets/landscapePresets.d.ts +1 -1
- package/dist/presets/landscapePresets.d.ts.map +1 -1
- package/dist/presets/landscapePresets.js +1 -1
- package/dist/presets/landscapeTypes.d.ts +1 -1
- package/dist/presets/landscapeTypes.d.ts.map +1 -1
- package/dist/presets/landscapeTypes.js +1 -1
- package/dist/presets/oceanSurfacePresets.d.ts +1 -1
- package/dist/presets/terrainPresets.d.ts +1 -1
- package/dist/presets/terrainPresets.d.ts.map +1 -1
- package/dist/presets/volumetricCloudPresets.d.ts +1 -1
- package/dist/types/cloudConfigs.d.ts +2 -309
- package/dist/types/cloudConfigs.d.ts.map +1 -1
- package/dist/types/cloudConfigs.js +2 -339
- package/dist/types/gridConfigs.d.ts +103 -0
- package/dist/types/gridConfigs.d.ts.map +1 -1
- package/dist/types/index.d.ts +9 -9
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/landscapeConfigs.d.ts +2 -217
- package/dist/types/landscapeConfigs.d.ts.map +1 -1
- package/dist/types/landscapeConfigs.js +2 -256
- package/dist/types/oceanConfigs.d.ts +2 -289
- package/dist/types/oceanConfigs.d.ts.map +1 -1
- package/dist/types/oceanConfigs.js +2 -380
- package/dist/types/terrainConfigs.d.ts +2 -250
- package/dist/types/terrainConfigs.d.ts.map +1 -1
- package/dist/types/terrainConfigs.js +2 -292
- package/dist/utils/cloudUniforms.d.ts +1 -1
- package/dist/utils/configAnimations.d.ts +6 -0
- package/dist/utils/configAnimations.d.ts.map +1 -1
- package/dist/utils/configAnimations.js +14 -0
- package/dist/utils/gridConfig.d.ts +19 -0
- package/dist/utils/gridConfig.d.ts.map +1 -0
- package/dist/utils/gridConfig.js +52 -0
- package/dist/utils/handleCloudsAnimations.d.ts +1 -1
- package/dist/utils/handleCloudsAnimations.js +1 -1
- package/dist/utils/hasHoverAnimation.d.ts.map +1 -1
- package/dist/utils/hasHoverAnimation.js +0 -2
- package/dist/utils/landscapeUniforms.d.ts +1 -1
- package/dist/utils/landscapeUniforms.d.ts.map +1 -1
- package/dist/utils/oceanUniforms.d.ts +1 -1
- package/dist/utils/particleShape.d.ts +33 -0
- package/dist/utils/particleShape.d.ts.map +1 -0
- package/dist/utils/particleShape.js +207 -0
- package/dist/utils/particleTrails.d.ts.map +1 -1
- package/dist/utils/particleTrails.js +29 -14
- package/dist/utils/terrainUniforms.d.ts +1 -1
- package/dist/utils/terrainUniforms.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
|
-
import * as THREE from 'three';
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
4
3
|
import { useFrame } from '@react-three/fiber';
|
|
5
|
-
import
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
6
|
+
import { DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from "@3driseai/3drise-core";
|
|
6
7
|
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
8
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
7
9
|
/**
|
|
8
10
|
* A buoyant smoke plume rising from the top of the host.
|
|
9
11
|
*
|
|
@@ -153,10 +155,27 @@ const plumeFrag = /* glsl */ `
|
|
|
153
155
|
gl_FragColor = vec4(col * a, a);
|
|
154
156
|
}
|
|
155
157
|
`;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
+
/** Knobs that rebuild the particle set: commit only, never live. */
|
|
159
|
+
const STRUCTURAL = ['particleCount'];
|
|
160
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyConfig pushes. */
|
|
161
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.smokePlume.map((p) => p.value));
|
|
162
|
+
/** The single push point: every config knob reaches its uniform here. */
|
|
163
|
+
function applyConfig(u, c, bound) {
|
|
164
|
+
u.uSpeed.value = c.speed;
|
|
165
|
+
u.uBound.value = bound;
|
|
166
|
+
u.uIntensity.value = c.intensity;
|
|
167
|
+
u.uOpacity.value = c.opacity;
|
|
168
|
+
u.uHeight.value = c.height;
|
|
169
|
+
u.uSpread.value = c.spread;
|
|
170
|
+
u.uTurbulence.value = c.turbulence;
|
|
171
|
+
u.uWind.value = c.wind;
|
|
172
|
+
u.uHeat.value = c.heat;
|
|
173
|
+
u.uSmokeColor.value.set(c.smokeColor);
|
|
174
|
+
}
|
|
175
|
+
const SmokePlumeEffect = ({ boundingRadius, config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
176
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.smokePlume, config), [config]);
|
|
177
|
+
const { particleCount } = cfg;
|
|
158
178
|
const rootRef = useRef(null);
|
|
159
|
-
const animCache = useRef({});
|
|
160
179
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
161
180
|
// a standalone effect gets boundingRadius 1; guard against an empty host
|
|
162
181
|
const b = boundingRadius > 0 ? boundingRadius : 1;
|
|
@@ -186,22 +205,13 @@ const SmokePlumeEffect = ({ boundingRadius, config, animations, onObjectReady, o
|
|
|
186
205
|
return g;
|
|
187
206
|
}, [particleCount]);
|
|
188
207
|
useEffect(() => () => geometry.dispose(), [geometry]);
|
|
189
|
-
|
|
190
|
-
uniforms
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
uniforms.uHeight.value = height;
|
|
195
|
-
uniforms.uSpread.value = spread;
|
|
196
|
-
uniforms.uTurbulence.value = turbulence;
|
|
197
|
-
uniforms.uWind.value = wind;
|
|
198
|
-
uniforms.uHeat.value = heat;
|
|
199
|
-
uniforms.uSmokeColor.value.set(smokeColor);
|
|
200
|
-
}, [uniforms, speed, b, intensity, opacity, height, spread, turbulence, wind, heat, smokeColor]);
|
|
208
|
+
const push = useCallback((merged) => {
|
|
209
|
+
applyConfig(uniforms, merged, b);
|
|
210
|
+
}, [uniforms, b]);
|
|
211
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
212
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
201
213
|
useFrame((_, delta) => {
|
|
202
214
|
uniforms.uTime.value += delta * uniforms.uSpeed.value;
|
|
203
|
-
if (animations?.length)
|
|
204
|
-
applyGenerativeAnimations(materials, animations, animCache.current, Date.now(), false);
|
|
205
215
|
});
|
|
206
216
|
return (_jsx("group", { ref: rootRef, children: _jsx("points", { geometry: geometry, material: materials[0], frustumCulled: false }) }));
|
|
207
217
|
};
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
import type { SmokeRibbonConfig } from '@3driseai/3drise-core';
|
|
1
|
+
import type { AnimationOptions, MouseMoveDomain, SmokeRibbonConfig } from '@3driseai/3drise-core';
|
|
2
2
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
3
3
|
export interface SmokeRibbonProps extends ObjectReadyProps {
|
|
4
4
|
config?: SmokeRibbonConfig;
|
|
5
5
|
boundingRadius?: number;
|
|
6
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
7
|
+
id?: string;
|
|
8
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
9
|
+
keyframes?: AnimationOptions[];
|
|
10
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
11
|
+
mouseMove?: MouseMoveDomain;
|
|
6
12
|
}
|
|
7
13
|
/**
|
|
8
14
|
* Place where you want the smoke to rise from — it climbs the parent's local +Y:
|
|
9
15
|
*
|
|
10
16
|
* <SmokeRibbon position={[0, 0, 0]} config={{ planes: 2, twistStart: 0.2 }} />
|
|
11
17
|
*/
|
|
12
|
-
declare const SmokeRibbon: ({ config, boundingRadius, onObjectReady, onObjectDispose, ...groupProps }: SmokeRibbonProps) => import("react").JSX.Element;
|
|
18
|
+
declare const SmokeRibbon: ({ config, boundingRadius, id, keyframes, mouseMove, onObjectReady, onObjectDispose, ...groupProps }: SmokeRibbonProps) => import("react").JSX.Element;
|
|
13
19
|
export default SmokeRibbon;
|
|
14
20
|
//# sourceMappingURL=SmokeRibbon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmokeRibbon.d.ts","sourceRoot":"","sources":["../../../src/components/effects/SmokeRibbon.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SmokeRibbon.d.ts","sourceRoot":"","sources":["../../../src/components/effects/SmokeRibbon.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAIlG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AA2BD;;;;GAIG;AACH,QAAA,MAAM,WAAW,GAAI,qGAA8G,gBAAgB,gCA6ClJ,CAAC;AACF,eAAe,WAAW,CAAC"}
|
|
@@ -1,16 +1,40 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { PlaneGeometry } from 'three';
|
|
3
|
-
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
4
4
|
import { useFrame, useThree } from '@react-three/fiber';
|
|
5
|
-
import { SmokeRibbonMaterial } from '@3driseai/3drise-core';
|
|
5
|
+
import { SmokeRibbonMaterial, DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
6
6
|
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
7
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
8
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
9
|
+
/** Knobs that rebuild the ribbon planes: commit only, never live. */
|
|
10
|
+
const STRUCTURAL = ['width', 'height', 'segmentsPerLength', 'planes'];
|
|
11
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyConfig pushes. */
|
|
12
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.smokeRibbon.map((p) => p.value));
|
|
13
|
+
/** The single push point: every config knob reaches its uniform here. */
|
|
14
|
+
function applyConfig(material, c) {
|
|
15
|
+
material.u_color.set(c.color);
|
|
16
|
+
material.u_colorTop.set(c.colorTop);
|
|
17
|
+
material.u_speed = c.speed;
|
|
18
|
+
material.u_detail = c.detail;
|
|
19
|
+
material.u_remapLow = c.remapLow;
|
|
20
|
+
material.u_remapHigh = c.remapHigh;
|
|
21
|
+
material.u_edgeX = c.edgeX;
|
|
22
|
+
material.u_edgeY = c.edgeY;
|
|
23
|
+
material.u_density = c.density;
|
|
24
|
+
material.u_twistStrength = c.twistStrength;
|
|
25
|
+
material.u_twistSpeed = c.twistSpeed;
|
|
26
|
+
material.u_twistScale = c.twistScale;
|
|
27
|
+
material.u_twistStart = c.twistStart;
|
|
28
|
+
material.u_windDir.set(c.wind[0], c.wind[1]);
|
|
29
|
+
}
|
|
7
30
|
/**
|
|
8
31
|
* Place where you want the smoke to rise from — it climbs the parent's local +Y:
|
|
9
32
|
*
|
|
10
33
|
* <SmokeRibbon position={[0, 0, 0]} config={{ planes: 2, twistStart: 0.2 }} />
|
|
11
34
|
*/
|
|
12
|
-
const SmokeRibbon = ({ config = {}, boundingRadius = 1, onObjectReady, onObjectDispose, ...groupProps }) => {
|
|
13
|
-
const
|
|
35
|
+
const SmokeRibbon = ({ config = {}, boundingRadius = 1, id, keyframes, mouseMove, onObjectReady, onObjectDispose, ...groupProps }) => {
|
|
36
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.smokeRibbon, config), [config]);
|
|
37
|
+
const { width, height, segmentsPerLength, planes, animate, interactive } = cfg;
|
|
14
38
|
// One material instance shared across the crossed planes -> one set of uniforms.
|
|
15
39
|
const material = useMemo(() => new SmokeRibbonMaterial(), []);
|
|
16
40
|
// One subdivided plane, bottom at the origin; reused per crossed copy.
|
|
@@ -29,30 +53,16 @@ const SmokeRibbon = ({ config = {}, boundingRadius = 1, onObjectReady, onObjectD
|
|
|
29
53
|
return [0, Math.PI / 2];
|
|
30
54
|
return [0, Math.PI / 3, (2 * Math.PI) / 3];
|
|
31
55
|
}, [planes]);
|
|
32
|
-
// Push the look config onto the shared uniforms whenever it changes.
|
|
33
|
-
useLayoutEffect(() => {
|
|
34
|
-
material.u_color.set(color);
|
|
35
|
-
material.u_colorTop.set(colorTop);
|
|
36
|
-
material.u_speed = speed;
|
|
37
|
-
material.u_detail = detail;
|
|
38
|
-
material.u_remapLow = remapLow;
|
|
39
|
-
material.u_remapHigh = remapHigh;
|
|
40
|
-
material.u_edgeX = edgeX;
|
|
41
|
-
material.u_edgeY = edgeY;
|
|
42
|
-
material.u_density = density;
|
|
43
|
-
material.u_twistStrength = twistStrength;
|
|
44
|
-
material.u_twistSpeed = twistSpeed;
|
|
45
|
-
material.u_twistScale = twistScale;
|
|
46
|
-
material.u_twistStart = twistStart;
|
|
47
|
-
material.u_windDir.set(wind[0], wind[1]);
|
|
48
|
-
}, [
|
|
49
|
-
material, color, colorTop, speed, detail, remapLow, remapHigh, edgeX, edgeY,
|
|
50
|
-
density, twistStrength, twistSpeed, twistScale, twistStart, wind,
|
|
51
|
-
]);
|
|
52
56
|
const { pointer } = useThree();
|
|
53
57
|
const hovering = useRef(false);
|
|
54
58
|
const rootRef = useRef(null);
|
|
55
59
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
60
|
+
// Committed config + live drag + keyframes + pointer, merged into the one push point.
|
|
61
|
+
const push = useCallback((merged) => {
|
|
62
|
+
applyConfig(material, merged);
|
|
63
|
+
}, [material]);
|
|
64
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
65
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
56
66
|
useFrame(({ clock }) => {
|
|
57
67
|
if (animate)
|
|
58
68
|
material.u_time = clock.getElapsedTime();
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import type { AnimationOptions,
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { SmokeRingConfig, AnimationOptions, MouseMoveDomain } from "@3driseai/3drise-core";
|
|
3
3
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
4
|
export interface SmokeRingEffectProps extends ObjectReadyProps {
|
|
5
5
|
boundingRadius: number;
|
|
6
6
|
config: SmokeRingConfig;
|
|
7
|
-
|
|
7
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
10
|
+
keyframes?: AnimationOptions[];
|
|
11
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
12
|
+
mouseMove?: MouseMoveDomain;
|
|
8
13
|
}
|
|
9
14
|
declare const SmokeRingEffect: React.FC<SmokeRingEffectProps>;
|
|
10
15
|
export default SmokeRingEffect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmokeRingEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/SmokeRingEffect.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SmokeRingEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/SmokeRingEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGhG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAwOD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAsEnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
|
-
import * as THREE from 'three';
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
4
3
|
import { useFrame } from '@react-three/fiber';
|
|
5
|
-
import
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
6
|
+
import { DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from "@3driseai/3drise-core";
|
|
6
7
|
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
8
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
7
9
|
/**
|
|
8
10
|
* Physically simulated vortex rings.
|
|
9
11
|
*
|
|
@@ -216,11 +218,29 @@ const ringFrag = /* glsl */ `
|
|
|
216
218
|
gl_FragColor = vec4(uSmokeColor * (0.55 + 0.6 * vShade) * a, a);
|
|
217
219
|
}
|
|
218
220
|
`;
|
|
219
|
-
|
|
220
|
-
|
|
221
|
+
/** Nothing rebuilds the rings: the particle pool is fixed, and the ring count only gates slots. */
|
|
222
|
+
const STRUCTURAL = [];
|
|
223
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what the push point applies. */
|
|
224
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.smokeRing.map((p) => p.value));
|
|
225
|
+
/** The single push point: every config knob reaches its uniform (shader or simulation) here. */
|
|
226
|
+
function applyConfig(u, c) {
|
|
227
|
+
u.uSpeed.value = c.speed;
|
|
228
|
+
u.uIntensity.value = c.intensity;
|
|
229
|
+
u.uOpacity.value = c.opacity;
|
|
230
|
+
u.uSmokeColor.value.set(c.smokeColor);
|
|
231
|
+
u.uWobble.value = c.wobble;
|
|
232
|
+
u.uRingCount.value = c.ringCount;
|
|
233
|
+
u.uExpansionRadius.value = c.expansionRadius;
|
|
234
|
+
u.uRiseSpeed.value = c.riseSpeed;
|
|
235
|
+
u.uIntervalSeconds.value = c.intervalSeconds;
|
|
236
|
+
u.uThickness.value = c.thickness;
|
|
237
|
+
}
|
|
238
|
+
const SmokeRingEffect = ({ boundingRadius, config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
239
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.smokeRing, config), [config]);
|
|
221
240
|
const rootRef = useRef(null);
|
|
222
|
-
const animCache = useRef({});
|
|
223
241
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
242
|
+
// the knobs read per frame (leapfrog), from the last merged config
|
|
243
|
+
const cur = useRef(cfg);
|
|
224
244
|
// a standalone effect gets boundingRadius 1; guard against an empty host
|
|
225
245
|
const b = boundingRadius > 0 ? boundingRadius : 1;
|
|
226
246
|
const uniforms = useMemo(() => ({
|
|
@@ -252,21 +272,13 @@ const SmokeRingEffect = ({ boundingRadius, config, animations, onObjectReady, on
|
|
|
252
272
|
}, []);
|
|
253
273
|
useEffect(() => () => geometry.dispose(), [geometry]);
|
|
254
274
|
const sim = useMemo(() => ({ state: createRingSim(), A: new Float32Array(16), B: new Float32Array(16), params: {} }), []);
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
uniforms
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
uniforms.uRingCount.value = ringCount;
|
|
262
|
-
uniforms.uExpansionRadius.value = expansionRadius;
|
|
263
|
-
uniforms.uRiseSpeed.value = riseSpeed;
|
|
264
|
-
uniforms.uIntervalSeconds.value = intervalSeconds;
|
|
265
|
-
uniforms.uThickness.value = thickness;
|
|
266
|
-
}, [uniforms, speed, intensity, opacity, smokeColor, wobble, ringCount, expansionRadius, riseSpeed, intervalSeconds, thickness]);
|
|
275
|
+
const push = useCallback((merged) => {
|
|
276
|
+
cur.current = merged;
|
|
277
|
+
applyConfig(uniforms, merged);
|
|
278
|
+
}, [uniforms]);
|
|
279
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
280
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
267
281
|
useFrame((_, delta) => {
|
|
268
|
-
if (animations?.length)
|
|
269
|
-
applyGenerativeAnimations(materials, animations, animCache.current, Date.now(), false);
|
|
270
282
|
const p = sim.params;
|
|
271
283
|
p.bound = b;
|
|
272
284
|
p.ringCount = uniforms.uRingCount.value;
|
|
@@ -274,7 +286,7 @@ const SmokeRingEffect = ({ boundingRadius, config, animations, onObjectReady, on
|
|
|
274
286
|
p.riseSpeed = uniforms.uRiseSpeed.value;
|
|
275
287
|
p.intervalSeconds = uniforms.uIntervalSeconds.value;
|
|
276
288
|
p.thickness = uniforms.uThickness.value;
|
|
277
|
-
p.leapfrog = leapfrog;
|
|
289
|
+
p.leapfrog = !!cur.current.leapfrog;
|
|
278
290
|
stepRingSim(sim.state, Math.min(delta, 0.05) * uniforms.uSpeed.value, p, sim.A, sim.B);
|
|
279
291
|
for (let i = 0; i < RING_SLOTS; i++) {
|
|
280
292
|
uniforms.uRingA.value[i].fromArray(sim.A, i * 4);
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import type { AnimationOptions,
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { StrangeAttractorConfig, AnimationOptions, MouseMoveDomain } from "@3driseai/3drise-core";
|
|
3
3
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
4
|
export interface StrangeAttractorEffectProps extends ObjectReadyProps {
|
|
5
5
|
boundingRadius: number;
|
|
6
6
|
config: StrangeAttractorConfig;
|
|
7
|
-
|
|
7
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
10
|
+
keyframes?: AnimationOptions[];
|
|
11
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
12
|
+
mouseMove?: MouseMoveDomain;
|
|
8
13
|
}
|
|
9
14
|
declare const StrangeAttractorEffect: React.FC<StrangeAttractorEffectProps>;
|
|
10
15
|
export default StrangeAttractorEffect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StrangeAttractorEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/StrangeAttractorEffect.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StrangeAttractorEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/StrangeAttractorEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGvG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,2BAA4B,SAAQ,gBAAgB;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AA8LD,QAAA,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAkDjE,CAAC;AACF,eAAe,sBAAsB,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
|
-
import * as THREE from 'three';
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
4
3
|
import { useFrame } from '@react-three/fiber';
|
|
5
|
-
import
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
6
|
+
import { DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from "@3driseai/3drise-core";
|
|
6
7
|
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
8
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
7
9
|
/**
|
|
8
10
|
* Glowing trails of a strange attractor (Lorenz, Aizawa or Thomas), integrated
|
|
9
11
|
* once on the CPU with RK4. The strands start 0.001 apart and visibly part
|
|
@@ -177,11 +179,28 @@ const pointFrag = /* glsl */ `
|
|
|
177
179
|
gl_FragColor = vec4(uHeadColor, core * core * vTrail * uOpacity);
|
|
178
180
|
}
|
|
179
181
|
`;
|
|
180
|
-
|
|
181
|
-
|
|
182
|
+
/** Knobs that re-integrate the trajectory (system, strand count, chaos): commit only, never live. */
|
|
183
|
+
const STRUCTURAL = ['system', 'strands', 'chaos'];
|
|
184
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyConfig pushes. */
|
|
185
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.strangeAttractor.map((p) => p.value));
|
|
186
|
+
/** The single push point: every config knob reaches its uniform here. */
|
|
187
|
+
function applyConfig(u, c, bound) {
|
|
188
|
+
u.uSpeed.value = c.speed;
|
|
189
|
+
u.uIntensity.value = c.intensity;
|
|
190
|
+
u.uOpacity.value = c.opacity;
|
|
191
|
+
u.uColor.value.set(c.color);
|
|
192
|
+
u.uHeadColor.value.set(c.headColor);
|
|
193
|
+
u.uTrailLength.value = c.trailLength;
|
|
194
|
+
u.uScale.value = c.scale;
|
|
195
|
+
u.uBound.value = bound;
|
|
196
|
+
u.uGhostOpacity.value = c.ghostOpacity;
|
|
197
|
+
u.uParticleSize.value = c.particleSize;
|
|
198
|
+
}
|
|
199
|
+
const StrangeAttractorEffect = ({ boundingRadius, config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
200
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.strangeAttractor, config), [config]);
|
|
201
|
+
const { system, strands, chaos } = cfg;
|
|
182
202
|
const rootRef = useRef(null);
|
|
183
203
|
const spinRef = useRef(null);
|
|
184
|
-
const animCache = useRef({});
|
|
185
204
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
186
205
|
// one uniform set, shared by the trails and the head beads
|
|
187
206
|
const uniforms = useMemo(() => ({
|
|
@@ -205,24 +224,15 @@ const StrangeAttractorEffect = ({ boundingRadius, config, animations, onObjectRe
|
|
|
205
224
|
// integration only reruns when the trajectory itself changes
|
|
206
225
|
const geometry = useMemo(() => buildAttractor(system, strands, chaos), [system, strands, chaos]);
|
|
207
226
|
useEffect(() => () => { geometry.points.dispose(); geometry.lines.dispose(); }, [geometry]);
|
|
208
|
-
|
|
209
|
-
uniforms
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
uniforms.uHeadColor.value.set(headColor);
|
|
214
|
-
uniforms.uTrailLength.value = trailLength;
|
|
215
|
-
uniforms.uScale.value = scale;
|
|
216
|
-
uniforms.uBound.value = boundingRadius;
|
|
217
|
-
uniforms.uGhostOpacity.value = ghostOpacity;
|
|
218
|
-
uniforms.uParticleSize.value = particleSize;
|
|
219
|
-
}, [uniforms, speed, intensity, opacity, color, headColor, trailLength, scale, boundingRadius, ghostOpacity, particleSize]);
|
|
227
|
+
const push = useCallback((merged) => {
|
|
228
|
+
applyConfig(uniforms, merged, boundingRadius);
|
|
229
|
+
}, [uniforms, boundingRadius]);
|
|
230
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
231
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
220
232
|
useFrame((_, delta) => {
|
|
221
233
|
uniforms.uTime.value += delta * uniforms.uSpeed.value;
|
|
222
234
|
if (spinRef.current)
|
|
223
235
|
spinRef.current.rotation.y += delta * 0.1 * uniforms.uSpeed.value;
|
|
224
|
-
if (animations?.length)
|
|
225
|
-
applyGenerativeAnimations(materials, animations, animCache.current, Date.now(), false);
|
|
226
236
|
});
|
|
227
237
|
return (_jsx("group", { ref: rootRef, children: _jsxs("group", { ref: spinRef, children: [_jsx("lineSegments", { geometry: geometry.lines, material: materials[0], frustumCulled: false }), _jsx("points", { geometry: geometry.points, material: materials[1], frustumCulled: false })] }) }));
|
|
228
238
|
};
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import type { AnimationOptions,
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { VolumetricFogConfig, AnimationOptions, MouseMoveDomain } from "@3driseai/3drise-core";
|
|
3
3
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
4
|
export interface VolumetricFogEffectProps extends ObjectReadyProps {
|
|
5
5
|
boundingRadius: number;
|
|
6
6
|
config: VolumetricFogConfig;
|
|
7
|
-
|
|
7
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
10
|
+
keyframes?: AnimationOptions[];
|
|
11
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
12
|
+
mouseMove?: MouseMoveDomain;
|
|
8
13
|
/** True when the fog surrounds a host object; the host's bounding sphere then blocks the fog behind it. */
|
|
9
14
|
hasHost?: boolean;
|
|
10
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VolumetricFogEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/VolumetricFogEffect.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"VolumetricFogEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/VolumetricFogEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,2GAA2G;IAC3G,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAoLD,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAiF3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
|
-
import * as THREE from 'three';
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
4
3
|
import { useFrame } from '@react-three/fiber';
|
|
5
|
-
import
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
6
|
+
import { DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from "@3driseai/3drise-core";
|
|
6
7
|
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
8
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
7
9
|
/**
|
|
8
10
|
* Ray-marched ground fog around the host.
|
|
9
11
|
*
|
|
@@ -34,6 +36,7 @@ const fogFrag = /* glsl */ `
|
|
|
34
36
|
uniform float uSteps;
|
|
35
37
|
uniform float uDensity;
|
|
36
38
|
uniform float uDriftSpeed;
|
|
39
|
+
uniform float uDrift; // integrated on the CPU: drift speed changes never jump
|
|
37
40
|
uniform float uNoiseScale;
|
|
38
41
|
uniform float uAnisotropy;
|
|
39
42
|
uniform vec3 uFogColor;
|
|
@@ -87,7 +90,7 @@ const fogFrag = /* glsl */ `
|
|
|
87
90
|
vec2 qc = (p.xz - 0.5 * (uBoxMin.xz + uBoxMax.xz)) / (0.5 * size.xz);
|
|
88
91
|
float radial = 1.0 - smoothstep(0.5, 1.0, length(qc));
|
|
89
92
|
if (layer * radial < 0.001) return 0.0;
|
|
90
|
-
float t =
|
|
93
|
+
float t = uDrift;
|
|
91
94
|
vec3 q = vec3(qc.x, h * size.y / (0.5 * size.x), qc.y) * uNoiseScale;
|
|
92
95
|
// domain warp gives rolling, folded banks instead of blobs
|
|
93
96
|
vec3 w = vec3(fbm3(q * 0.6 + vec3(t * 0.07, 0.0, 0.0), 2), fbm3(q * 0.6 + vec3(5.2, t * 0.05, 1.3), 2), 0.0);
|
|
@@ -157,12 +160,28 @@ const fogFrag = /* glsl */ `
|
|
|
157
160
|
`;
|
|
158
161
|
const _inv = new THREE.Matrix4();
|
|
159
162
|
const _cam = new THREE.Vector3();
|
|
160
|
-
|
|
161
|
-
|
|
163
|
+
/** Knobs that resize the fog box or set the march step count: commit only, never live. */
|
|
164
|
+
const STRUCTURAL = ['fogRadius', 'layerHeight', 'particleCount'];
|
|
165
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyConfig pushes. */
|
|
166
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.volumetricFog.map((p) => p.value));
|
|
167
|
+
/** The single push point: every config knob reaches its uniform here. */
|
|
168
|
+
function applyConfig(u, c) {
|
|
169
|
+
u.uSpeed.value = c.speed;
|
|
170
|
+
u.uIntensity.value = c.intensity;
|
|
171
|
+
u.uOpacity.value = c.opacity;
|
|
172
|
+
u.uColor.value.set(c.color);
|
|
173
|
+
u.uFogColor.value.set(c.fogColor);
|
|
174
|
+
u.uDensity.value = c.density;
|
|
175
|
+
u.uDriftSpeed.value = c.driftSpeed;
|
|
176
|
+
u.uNoiseScale.value = c.noiseScale;
|
|
177
|
+
u.uAnisotropy.value = c.anisotropy;
|
|
178
|
+
}
|
|
179
|
+
const VolumetricFogEffect = ({ boundingRadius, config, id, keyframes, mouseMove, hasHost = false, onObjectReady, onObjectDispose }) => {
|
|
180
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.volumetricFog, config), [config]);
|
|
181
|
+
const { particleCount, fogRadius, layerHeight } = cfg;
|
|
162
182
|
const rootRef = useRef(null);
|
|
163
183
|
const meshRef = useRef(null);
|
|
164
184
|
const insideRef = useRef(false);
|
|
165
|
-
const animCache = useRef({});
|
|
166
185
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
167
186
|
// a standalone effect gets boundingRadius 1; guard against an empty host
|
|
168
187
|
const b = boundingRadius > 0 ? boundingRadius : 1;
|
|
@@ -171,6 +190,7 @@ const VolumetricFogEffect = ({ boundingRadius, config, animations, hasHost = fal
|
|
|
171
190
|
const y0 = -b;
|
|
172
191
|
const uniforms = useMemo(() => ({
|
|
173
192
|
uTime: { value: 0 },
|
|
193
|
+
uDrift: { value: 0 },
|
|
174
194
|
uSpeed: { value: 1 },
|
|
175
195
|
uIntensity: { value: 1 },
|
|
176
196
|
uOpacity: { value: 1 },
|
|
@@ -196,23 +216,23 @@ const VolumetricFogEffect = ({ boundingRadius, config, animations, hasHost = fal
|
|
|
196
216
|
}, [R, H, y0]);
|
|
197
217
|
useEffect(() => () => geometry.dispose(), [geometry]);
|
|
198
218
|
const box = useMemo(() => new THREE.Box3(new THREE.Vector3(-R, y0, -R), new THREE.Vector3(R, y0 + H, R)), [R, H, y0]);
|
|
219
|
+
// the box and the march budget follow the committed (structural) knobs
|
|
199
220
|
useLayoutEffect(() => {
|
|
200
|
-
uniforms.uSpeed.value = speed;
|
|
201
|
-
uniforms.uIntensity.value = intensity;
|
|
202
|
-
uniforms.uOpacity.value = opacity;
|
|
203
|
-
uniforms.uColor.value.set(color);
|
|
204
|
-
uniforms.uFogColor.value.set(fogColor);
|
|
205
|
-
uniforms.uDensity.value = density;
|
|
206
|
-
uniforms.uDriftSpeed.value = driftSpeed;
|
|
207
|
-
uniforms.uNoiseScale.value = noiseScale;
|
|
208
|
-
uniforms.uAnisotropy.value = anisotropy;
|
|
209
221
|
uniforms.uSteps.value = Math.round(Math.min(Math.max(particleCount, 24), 128) * 0.5);
|
|
210
222
|
uniforms.uBoxMin.value.copy(box.min);
|
|
211
223
|
uniforms.uBoxMax.value.copy(box.max);
|
|
212
224
|
uniforms.uHostRadius.value = hasHost ? b * 0.97 : 0;
|
|
213
|
-
}, [uniforms,
|
|
225
|
+
}, [uniforms, particleCount, box, hasHost, b]);
|
|
226
|
+
const push = useCallback((merged) => {
|
|
227
|
+
applyConfig(uniforms, merged);
|
|
228
|
+
}, [uniforms]);
|
|
229
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
230
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
214
231
|
useFrame((state, delta) => {
|
|
215
|
-
|
|
232
|
+
const dt = delta * uniforms.uSpeed.value * 2.5;
|
|
233
|
+
uniforms.uTime.value += dt;
|
|
234
|
+
// integrated, so changing the drift speed never makes the fog jump
|
|
235
|
+
uniforms.uDrift.value += dt * uniforms.uDriftSpeed.value;
|
|
216
236
|
const mesh = meshRef.current;
|
|
217
237
|
if (mesh) {
|
|
218
238
|
mesh.updateWorldMatrix(true, false);
|
|
@@ -224,8 +244,6 @@ const VolumetricFogEffect = ({ boundingRadius, config, animations, hasHost = fal
|
|
|
224
244
|
materials[0].needsUpdate = true;
|
|
225
245
|
}
|
|
226
246
|
}
|
|
227
|
-
if (animations?.length)
|
|
228
|
-
applyGenerativeAnimations(materials, animations, animCache.current, Date.now(), false);
|
|
229
247
|
});
|
|
230
248
|
return (_jsx("group", { ref: rootRef, children: _jsx("mesh", { ref: meshRef, geometry: geometry, material: materials[0] }) }));
|
|
231
249
|
};
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { AnimationOptions, WaterCausticsConfig } from '@3driseai/3drise-core';
|
|
2
|
+
import type { AnimationOptions, WaterCausticsConfig, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
3
3
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
4
|
export interface WaterCausticsEffectProps extends ObjectReadyProps {
|
|
5
5
|
boundingRadius: number;
|
|
6
6
|
config: WaterCausticsConfig;
|
|
7
|
-
|
|
7
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
10
|
+
keyframes?: AnimationOptions[];
|
|
11
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
12
|
+
mouseMove?: MouseMoveDomain;
|
|
8
13
|
/** True when the effect is attached to an object, so it can react to the host. */
|
|
9
14
|
hasHost?: boolean;
|
|
10
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WaterCausticsEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/WaterCausticsEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"WaterCausticsEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/WaterCausticsEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAIxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAwSD,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAqC3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|