diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1739f59 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +webgl/.claude \ No newline at end of file diff --git a/README.md b/README.md index 4ef53c3..51c8b64 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,10 @@ A self-contained, GPU-accelerated reimagining of the classic XScreenSaver *Fluid ### ▶ [**Launch the live simulation →**](https://node0.github.io/FluidBallsJS/) No install, no server, no build step — it runs entirely in your browser. +**Check out the `presets` folder in this repository, downlaod the json files, +then in FluidBallsJS scroll all the way to "Interaction & Tools" -> Import .json** +`pressure_networks_like_synaptic_cascades.fluidballs.json` is mesmermizing, +and `ocean_wave_chasing_its_own_tail.fluidballs.json` is fun to watch too. Did I mention you can record videos 🎥 ? FLUIDBALLS_SCREENSHOT diff --git a/presets/ocean_wave_chasing_its_own_tail.fluidballs.json b/presets/ocean_wave_chasing_its_own_tail.fluidballs.json new file mode 100644 index 0000000..629ef66 --- /dev/null +++ b/presets/ocean_wave_chasing_its_own_tail.fluidballs.json @@ -0,0 +1,61 @@ +{ + "version": 1, + "app": "fluidballs", + "settings": { + "ballCount": 3500, + "sizeMode": "mixed", + "radius": 11.5, + "radiusMin": 3, + "radiusMax": 4, + "solverIterations": 5, + "physicsHz": 60, + "compliance": 0.00052, + "gravityMode": "rotate", + "gravityStrength": 340, + "gravityAngle": 21, + "gravityCycleTime": 16, + "gravityTransitionTime": 5, + "windStrength": 10, + "windAngle": 45, + "windTurbulence": 0.16, + "elasticity": 1.2, + "wallBounce": 1.2, + "airDrag": 0.11, + "contactViscosity": 0.46, + "clumpAffinity": 850, + "splitEnergy": 200, + "renderMode": "metaball", + "fusionThreshold": 0.1, + "edgeSoftness": 0.005, + "fieldRadius": 2.3, + "specFusion": 12, + "colorMode": "mono", + "baseHue": 216, + "hueSpread": 273, + "colorSpeed": 0, + "pressureScale": 0.8, + "pressureDiffuse": false, + "glow": 0, + "bloomStrength": 0, + "trailPersistence": 0, + "exposure": 2.72, + "backgroundColor": "#02050b", + "bloomEnabled": false, + "vignette": false, + "msaa": true, + "lightAngle": 69, + "lightWidth": 0.87, + "lightSoftness": 0.87, + "ior": 2.19, + "clarity": 0.94, + "translucency": 0.91, + "lightFalloff": 5.15, + "bandPosition": 0.85, + "bandWidth": 0.15, + "tintColor": "#2aa6ff", + "tintStrength": 0, + "mouseMode": "vortex", + "mouseStrength": 4500, + "mouseRadius": 500 + } +} \ No newline at end of file diff --git a/presets/ocean_wave_preset.fluidballs.json b/presets/ocean_wave_preset.fluidballs.json new file mode 100644 index 0000000..8657f8d --- /dev/null +++ b/presets/ocean_wave_preset.fluidballs.json @@ -0,0 +1,61 @@ +{ + "version": 1, + "app": "fluidballs", + "settings": { + "ballCount": 3500, + "sizeMode": "mixed", + "radius": 4, + "radiusMin": 3, + "radiusMax": 4, + "solverIterations": 3, + "physicsHz": 60, + "compliance": 0.00042, + "gravityMode": "rotate", + "gravityStrength": 340, + "gravityAngle": 21, + "gravityCycleTime": 18, + "gravityTransitionTime": 4, + "windStrength": 10, + "windAngle": 45, + "windTurbulence": 0.16, + "elasticity": 0.74, + "wallBounce": 0.84, + "airDrag": 0.06, + "contactViscosity": 0.4, + "clumpAffinity": 1300, + "splitEnergy": 240, + "renderMode": "metaball", + "fusionThreshold": 0.19, + "edgeSoftness": 0.005, + "fieldRadius": 2.5, + "specFusion": 11, + "colorMode": "mono", + "baseHue": 216, + "hueSpread": 281, + "colorSpeed": 0, + "pressureScale": 0.8, + "pressureDiffuse": false, + "glow": 0.38, + "bloomStrength": 0.2, + "trailPersistence": 0, + "exposure": 3, + "backgroundColor": "#02050b", + "bloomEnabled": false, + "vignette": false, + "msaa": true, + "lightAngle": 180, + "lightWidth": 1.5, + "lightSoftness": 0.61, + "ior": 2.5, + "clarity": 0.85, + "translucency": 1, + "lightFalloff": 2.2, + "bandPosition": 0.14, + "bandWidth": 0.15, + "tintColor": "#2aa6ff", + "tintStrength": 0.55, + "mouseMode": "vortex", + "mouseStrength": 4500, + "mouseRadius": 500 + } +} \ No newline at end of file diff --git a/presets/pressure_networks_like_synaptic_cascades.fluidballs.json b/presets/pressure_networks_like_synaptic_cascades.fluidballs.json new file mode 100644 index 0000000..9acec24 --- /dev/null +++ b/presets/pressure_networks_like_synaptic_cascades.fluidballs.json @@ -0,0 +1,61 @@ +{ + "version": 1, + "app": "fluidballs", + "settings": { + "ballCount": 4120, + "sizeMode": "mixed", + "radius": 11.5, + "radiusMin": 4, + "radiusMax": 8, + "solverIterations": 3, + "physicsHz": 180, + "compliance": 0, + "gravityMode": "cardinal", + "gravityStrength": 30, + "gravityAngle": 21, + "gravityCycleTime": 6.1, + "gravityTransitionTime": 1.2, + "windStrength": 10, + "windAngle": 45, + "windTurbulence": 0.16, + "elasticity": 1.14, + "wallBounce": 1.15, + "airDrag": 0.06, + "contactViscosity": 0.49, + "clumpAffinity": 890, + "splitEnergy": 300, + "renderMode": "sphere", + "fusionThreshold": 0.1, + "edgeSoftness": 0.12, + "fieldRadius": 2.45, + "specFusion": 12, + "colorMode": "pressure", + "baseHue": 272, + "hueSpread": 298, + "colorSpeed": 1, + "pressureScale": 0.8, + "pressureDiffuse": false, + "glow": 0.06, + "bloomStrength": 0.14, + "trailPersistence": 0.085, + "exposure": 2.58, + "backgroundColor": "#02050b", + "bloomEnabled": false, + "vignette": false, + "msaa": true, + "lightAngle": 224, + "lightWidth": 0.97, + "lightSoftness": 0.73, + "ior": 1.93, + "clarity": 0.85, + "translucency": 0.91, + "lightFalloff": 6, + "bandPosition": 0, + "bandWidth": 0.15, + "tintColor": "#2aa6ff", + "tintStrength": 0, + "mouseMode": "vortex", + "mouseStrength": 4500, + "mouseRadius": 500 + } +} \ No newline at end of file