Skills

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.

SeasonFoliage and groundLight and atmosphereMotion
SpringFresh foliage; blossom on appropriate speciesSoft warm daylight; gentle hazeSparse petals or young leaves
SummerDense deep greens; full ground coverStronger daylight; readable shaded greensRestrained leaf drift and breeze
FallSpecies-specific amber, red, and brown; litterLower warm sun; golden hazeMore falling leaves
WinterBare deciduous branches; retained evergreens; exposed snowCool sky fill; pale sun; warm interiorsOptional 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;
}
Read the whole SKILL.md on GitHub

More in Media