EXPANSE WEATHER CONTROLLER
I have created this asset to integrate with the fantastic Expanse – Volumetric Skies, Clouds, and Atmospheres in HDRP to easily control Weather Changes and Time progression using the Expanse Creative Blocks.
This asset is now out of Beta stage and will follow development of Expanse itself. I initially wanted to make a basic time progression and weather change script and release the scripts for free but it has grown arms and legs into what I see as a complete Weather controller for Expanse and because of the time invested and the support required going forward, I have decided to charge what I think is a reasonable amount. If the Expanse Weather Controller proves popular, I will consider moving the asset to the Unity asset store.
Installation instructions: Purchase, Download and Install the ExpanseWeatherController.unitypackage by dragging it into the asset folder.
Add the Weather Controller prefab into an existing Creative sky prefab and assign the required components in the Weather controller.
For VFX lightning, please import the Visual Effects Graph samples as those shaders are used. Will ship with own in the future.
EXPANSE TIME AND WEATHER CONTROLLER SETUP
Used to identify the required components for the Expanse Weather Controller to work.
EXPANSE TIME CONTROLLER
Control of Time progression
EXPANSE WEATHER CONTROLLER
Weather Presets from the hierarchy. (Auto populated by toggling this component)
Transition Speed in seconds to Lerp between Weather Conditions
Configure Season Dates: Set the season dates.
Configure Season Weather. Add the Weather presets you wish to use for different seasons and select the checkbox if you wish to use that specific season. The presets will randomly change within the Random Min and Random Max settings in minutes.
UI Components exposes a convenient way to add a drop-down component to change the weather accordingly. The drop-down will automatically populate from the weather presets. Drag the Expanse Weather Preset from the hierarchy into the Event and select the “ExpanseWeatherController.Weatherchange” from the Expanse Weather Controller script (see image below – “example of dropdown”)
Crest support Optional. When enabled, a Expanse Crest script will be added to each preset automatically. If OWM Weather is activated, OWM will control the Crest ShapeFFT parameters based on the chosen weather location
Microsplat Support Optional. Microsplat script will be added automatically. Enable the required parameters and enable the “G” button in the microsplat material
Add ‘EXPANSE_CREST‘ to the define symbols in Project settings => player
Set the ShapeFFT parameters for the Crest wave generator. If OWM Weather is activated, OWM will control the Crest ShapeFFT parameters based on the chosen weather location
EXPANSE WEATHER API
Enable OWM Support. Get a free API key from openweathermap.org and put in your coordinates for the required location. Different weather presets can be added for different conditions.
Enable OWM Support uses real time weather globally
Enable OWM Zone support uses real-time weather in the zones but weather outside the zones is controlled by dropdown or random season changes
EXPANSE WEATHER EVENTS
Assign a custom event or use a preset Event condition.
Custom Event: The custom events are only fired when time progresses by either Simulation or System mode, seconds will be ignored in the Custom Event if the time progression is set to Simulation
EXPANSE WEATHER PRESETS
Expanse Weather presets. Expand the “Weather Preset Settings” and adjust to your preference.
Particle Systems: Enable and attach 1 or multiple particle systems. A Parent constraint component will be attached automatically on gameplay with the Player as the source for the Particle system to follow. The particle origin will be set to the Player position. The offset can be adjusted using the Particle offset.
Sound FX: When enabled, an Audio Source is added. Just add the sound required for day and night sounds. The sound files provided where downloaded from: https://freesound.org/and https://soundbible.com/ (license: Creative Commons — Attribution 3.0 Unported — CC BY 3.0)
Thunder/Lightning: Select GameObject with particle Lightning or VFX Lightning (For VFX lightning, please import the Visual Effects Graph samples as those shaders are used. Will ship with own at some point.)
When assigning a particle system to a preset, the particle location will take on the Player position set in the Weather Controller (Y offset can be set) and the parent constraint will be generated and populated with the Player source and set to Active.
EXPANSE WEATHER ZONES
Add an empty as a child and add the Expanse Weather Zone script. Pick a collider and choose the preset(s) to use. Set the bounding box size (Enable Gizmo for visual feedback) and the zone transition speed. An example is provided under Weather Zones in Hierarchy. If you supply multiple presets, select the “Change weather zone presets”. the “Update Interval” sets the time in minutes before the next preset will be activated.
You can specify the real-time weather in a zone by inputting the Lat Lon coordinates of the location you require and enabling the checkbox. Need to have OWM support or OWM Zone support enabled in the Weather Controller Settings
Many of the ideas have come from Enviro and a few from Azure which are great products in their own right.
No major issues have been found regarding performance using the Expanse Weather Controller but I will continue to optimize and refactor the code where required and add further enhancements where possible. I am very much open to ideas and comments so please don’t hesitate to contact me by email or on Discord