This ambient wind system works with physics, Apex cloth and Speedtree, with particle effects and the simple grass vertex shader.
The Unreal Engine's native wind object "Wind directional source" will only affect apex cloth and speedtree objects.
This wind system affects all possible kinds of actors and objects.
Also, wind affected physical actors will be audible when moving. It is possible to trigger rolling or swinging movement sounds as also "OnHit" sounds.
The Windsystem works with an unbound wind zone and wind actors that react to this wind.
The wind zone is the class that creates the wind force. The wind actors are affected by the wind.
To actually have a physical object react to the wind it has to have a new "WindComponent" added to its blueprint components
Since the possible affected wind objects are all different object classes, a few different approaches are needed to project the wind.
For the physical actors, the wind is driven by add force, whilst the windload on each wind affected actor is calculated by the objects projected surface area and the objects material density.
Cloth is driven by a spawned "Wind Directional Source" that is synchronized to the generated blueprint wind.
PFX and the Grass shader take their wind strength directly from the wind curves and go through multipliers.
Where the PFX wind result drives an emitter parameter and the foliage wind goes into a material parameter value that drives additional World Position Offsets in the foliage shader.
Explanation videos on how to setup the different object types can be found on the products documentation page, which is linked below.
The features of the wind zone are:
set global wind intensities for physical objects, cloth, PFX and grass/vertex shader
toggle random wind direction changes
modulated wind sound by wind intensity
add user created windcurves that define the wind intensities over a timeline. Those windcurves are randomly played one after another.
Additional features of the windzone:
Randomly spawn wind affected actors inside the windzone. This is useful for ambient actors like the tumbleweeds.
Define the spawned actor amount and apply random scalings.
Spawn from an array of selected actor classes
Mask out spawning areas by defining classes where actors are allowed to spawn on. Default is "landscape".
The windactor base class has a smaller feature set:
The mesh can be set
Its angular and linear damping are editable
An estimated surface area can be defined. This is used for wind load calculations. A larger value will apply more windforce to the object.
A wind movement sound can be set.
It has a switch "Is using sound loop"
Looped sounds are used for continuous moving objects, like the tumbleweeds, swinging signs.
These need to be special sound cues and will be modulated in volume by the objects velocity.
"One shot" sounds will typically be used for objects that only collide on impact and do not roll or sway.
Like lightweight objects that fall over when the wind hits them.