
3d Four Seasons
Add coordinated spring, summer, fall, and winter states to a 3D scene, blending...
Install
npx skills add MengTo/Skills --skill 3d-four-seasons -g -a claude-code -y- Repository
- MengTo/Skills7.2k
- Category
- Media
- Updated
- 3d ago
- License
- MIT
- Context cost
- Lightabout 1,176 tokens
- Runs scripts
- No, instructions only
What it does
Add coordinated spring, summer, fall, and winter states to a 3D scene, blending foliage, sunlight, sky, ground materials, snow, and particles without rebuilding the world. Use for seasonal controls, architectural walkthroughs, and outdoor scenes with four-season transitions.
3D Four Seasons
Keep one recognizable place across all four seasons. Each season should change several mutually consistent visual cues while preserving camera state and interactions.
Author the seasonal identity
Inventory deciduous trees, evergreens, exposed surfaces, sheltered surfaces, lights, sky, and existing weather. Use species and climate appropriate to the project; the table is a temperate-scene starting point.
| Season | Foliage and ground | Light and atmosphere | Motion |
|---|---|---|---|
| Spring | Fresh foliage; blossom on appropriate species | Soft warm daylight; gentle haze | Sparse petals or young leaves |
| Summer | Dense deep greens; full ground cover | Stronger daylight; readable shaded greens | Restrained leaf drift and breeze |
| Fall | Species-specific amber, red, and brown; litter | Lower warm sun; golden haze | More falling leaves |
| Winter | Bare deciduous branches; retained evergreens; exposed snow | Cool sky fill; pale sun; warm interiors | Optional sparse snow; little leaf drift |
Choose particle effects only when they serve the scene. A seasonal selector does not require a storm or a full weather simulator.
Share one state
Use a four-component blend in the order [spring, summer, fall, winter]. Accept autumn as an alias for fall, then normalize to one internal key. The weights start nonnegative and sum to one.
const presets = {
spring: [1, 0, 0, 0], summer: [0, 1, 0, 0],
fall: [0, 0, 1, 0], winter: [0, 0, 0, 1],
};
const weights = [0, 1, 0, 0];
let target = presets.summer;
function setSeason(name) {
const key = name === 'autumn' ? 'fall' : name;
if (!Object.hasOwn(presets, key)) return false;
target = presets[key];
return true;
}
function stepSeason(dt, reducedMotion = false) {
const a = reducedMotion ? 1 : 1 - Math.exp(-1.4 * Math.min(Math.max(dt, 0), 0.05));
for (let i = 0; i < 4; i++) weights[i] += (target[i] - weights[i]) * a;
}


