Let the wind move the trees and grass #186

Closed
opened 2026-10-25 02:38:44 +00:00 by sermuns · 1 comment
Owner

The campus is full of trees and, soon, undergrowth (#89), and none of it moves. A wind field — direction, strength, gusts — should bend the trees, ripple the grass and push the clouds, with a rustle that rises and falls with it. It is the difference between a diorama and a place.

How it fits. Trees are instanced TreeBatches and the undergrowth is vertex geometry; a wind term in the vertex shader costs almost nothing and needs no CPU animation. The wind state belongs with the weather and the sky, and the audio can read the same number. Gusts should be spatial and slow, not a global sine.

Scope.

  • A wind vector and gust field, driven by weather.
  • Sway trees by height and stiffness, ripple grass, drift clouds.
  • Rustle and creak audio scaled by wind and proximity.
  • Keep the effect subtle indoors and in the lee of buildings.
  • A debug control for direction and strength.

Related. #227 (kites), #215 (balloon), #187 (seasons), #89 (undergrowth).

The campus is full of trees and, soon, undergrowth (#89), and none of it moves. A wind field — direction, strength, gusts — should bend the trees, ripple the grass and push the clouds, with a rustle that rises and falls with it. It is the difference between a diorama and a place. **How it fits.** Trees are instanced `TreeBatch`es and the undergrowth is vertex geometry; a wind term in the vertex shader costs almost nothing and needs no CPU animation. The wind state belongs with the weather and the sky, and the audio can read the same number. Gusts should be spatial and slow, not a global sine. **Scope.** - A wind vector and gust field, driven by weather. - Sway trees by height and stiffness, ripple grass, drift clouds. - Rustle and creak audio scaled by wind and proximity. - Keep the effect subtle indoors and in the lee of buildings. - A debug control for direction and strength. **Related.** #227 (kites), #215 (balloon), #187 (seasons), #89 (undergrowth).
Author
Owner

Implemented. liuverse-world::wind is one field — a veering base direction, gust bands travelling downwind, and a speed — and the same value bends the trees and grass in the vertex shader, drifts the cloud panorama, lifts the kites and carries the balloons, and drives the wind bed and canopy rustle in liuverse-audio. The debug panel can turn and strengthen it live. The module landed with the kite work (b6c6bdd) and the base is southerly since 784275e. Closing as done.

Implemented. `liuverse-world::wind` is one field — a veering base direction, gust bands travelling downwind, and a speed — and the same value bends the trees and grass in the vertex shader, drifts the cloud panorama, lifts the kites and carries the balloons, and drives the wind bed and canopy rustle in `liuverse-audio`. The debug panel can turn and strengthen it live. The module landed with the kite work (`b6c6bdd`) and the base is southerly since `784275e`. Closing as done.
sermuns added this to the Living campus milestone 2026-10-28 20:43:31 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
elsie/liuverse#186
No description provided.