Presets
Playback
Parameters
Model checks
The science
Wind sway as a travelling wave
The 3D page bends every tree with a gust g(φ) = 0.6 sin φ + 0.4 sin(2.3φ + 1), where the phase φ = ωt + 0.3(x + z) depends on the tree position. That makes a gust a wave crossing the forest: a crest moves along the x + z axis at ω/0.3 units of (x + z) per second, which is ω/(0.3√2) along the diagonal. The shift at height y is multiplied by (y/3)3/2 (capped at 1), so the base stays still and the crown moves most — the same shape as the deflection of a cantilever loaded at the top.
Optional physical response
A real tree is a damped oscillator. Switching on Physical tree response drives each tree top with x″ + 2ζω0x′ + ω02x = ω02 g(φ)·strength. Driven at its natural frequency the steady amplitude gain is 1/(2ζ); the right-hand graph is the full resonance curve |H| = 1/√((1 − r2)2 + (2ζr)2), r = f/f0, with a dot at the current gust frequency.
Honest simplifications: the 3D page only shifts vertices with a shader and has no tree dynamics; the resonance mode is an added single-mode model, not a full cantilever with several bending modes, canopy drag or turbulence. Natural frequencies of real trees are roughly 0.2–1 Hz for tall trunks, so the default 0.45 Hz is plausible but not measured. Displacements are magnified for visibility.
What to try
- Watch the top view: coloured bands of swaying trees are the gust crests travelling across the forest.
- Press Resonant gusts and compare the tree response with the raw gust: the response peaks when the gust frequency matches the tree frequency.
- Change the wind direction to turn the sway arrows and the side-view lean.
- Run the three model checks in the left panel.