blender-weather-fx
Agent skill fromEL4CTEO/blender-skills
Weather effects in Blender 5.2 - looping Geometry Nodes rain, snow, dust, ash and embers with ground hits and splashes, wet surfaces, puddles with animated ripples, wall streaks, snow cover (shader + real snow geometry), storm lightning with multi-stroke flashes and bolts, engine-ready weather masks. Use for rain, storm, snow, wet street, puddle, dust or ember scenes.
How to install blender-weather-fx
install blender-weather-fx
# install the blender-skills pack with the skills CLI
npx skills add EL4CTEO/blender-skills# or add only this skill to Claude Code: copy the folder
skills/blender-weather-fx/
# into
~/.claude/skills/blender-weather-fx/ (all projects)
.claude/skills/blender-weather-fx/ (one project)
1# Weather FX23The execution model is in `blender-core`. Sky, sun/moon, fog and mood come from `blender-time-of-day`, so run `scene_mood.py` first, then add weather. Rendering settings are in `blender-rendering`.45## One call each6```7scripts/precipitation.py -- --type rain --intensity heavy --ground Street Roofs --wind 2 08scripts/surface_weather.py -- --objects Street Car Walls --wetness 0.7 --puddles 0.4 --ripples 1 --streaks 0.59scripts/lightning.py -- --flashes 2 --strokes 310scripts/precipitation.py -- --type snow --intensity moderate --ground Terrain11scripts/surface_weather.py -- --objects Terrain Roofs --snow 0.8 --snow-depth 0.0612scripts/surface_weather.py -- --objects Street Car Walls --remove # exact restore13```14A rainy night: `scene_mood.py --time night --fog-visibility 250` → rain → wetness + puddles → lightning. Rain and puddles at night are what sell a wet scene: wet surfaces reflect every practical light.1516## precipitation.py (rain, snow, dust, ash, embers)17- Builds a GN modifier on `ENV_Weather_<Type>`. Its box covers what the camera sees across the frame range: world-fixed, so moving cameras don't drag the rain. With no camera, it covers a 18 m box. The floor is the lowest top of `--ground`.18- **Seamless loop with no simulation**: each particle lives N whole times per loop (`Lives`), so the last frame + 1 equals the first frame exactly. It renders any frame on its own and works headless.19…
Excerpt shown under the repository's MIT license.
