mengto/skills

3d-four-seasons

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.

Ver código fuente
Documento original del Skill

Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.

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.

js
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;
}

Feed the same state into material uniforms, sky, sun/fill lighting, particle density, and optional ambient audio. A new selection should redirect the current blend, not queue another animation or reset to summer. Resolve each result from authored base values and weights; repeatedly tinting last frame's color causes drift.

Change foliage and snow convincingly

Use species-specific color palettes and stable per-instance IDs. Gradually thin deciduous foliage for winter using a deterministic threshold or dither. Preserve evergreen coverage. Apply matching visibility and wind rules to shadow/depth materials so absent leaves do not cast summer shadows.

For inexpensive settled snow, combine winter weight with upward-facing world-space geometric normals and an exposure mask:

text
snow = winterWeight * smoothstep(0.3, 0.85, worldNormal.y) * exposure

Blend toward a pale, rough snow material. Upward normal alone also whitens sheltered tables and indoor floors; tag exposed objects or supply shelter masks. A material overlay does not add thickness or change silhouette. Add selective snow-cap geometry only for close-up edges where depth matters. Keep falling snow intensity separate from settled coverage if the scene models accumulation and melt.

Keep the transition responsive

Preallocate particle pools and reuse materials/geometry. Change uniforms rather than recompiling shaders or rebuilding the world. Preserve existing material hooks when extending shaders and use stable program cache keys; match the installed renderer's shader chunks instead of assuming an old injection point exists.

Keep season independent of time of day and weather. Derive a final lighting state from those inputs once, so several controllers do not overwrite the same sun or fog values. Refresh expensive environment maps at controlled state changes, with caching where possible.

Use keyboard-accessible controls with a visible selected state and updated accessible labels. Under reduced motion, apply the chosen seasonal appearance immediately and retain a composed still scene. Pause continuous animation while hidden.

Verify

Capture all four seasons from the same camera. Each should be recognizable without its label. Rapidly switch spring → winter → summer → fall mid-transition and check for color drift, stale shadows, allocation spikes, and lost camera controls. Verify snow exposure indoors/outdoors, evergreen retention, particle count, and desktop/mobile rendering.

Read REFERENCES.md. Seijaku demonstrates shared uSeason weights, setSeason, snowInject, foliage thinning, and seasonal light tinting. Full snowfall physics and climate simulation are extensions, not claims about that implementation.

del mismo repositorio

Más Skills

Todos los Skills
mengto
Comunidad

3d-cloth-material

Build convincing woven cloth in Three.js, with a thread-level weave normal map, sheen and anisotropic highlights, folds that never stretch the texture, hems with thickness, stitches, seams, frayed edges, fold occlusion, dye and wear variation, and light passing through thin fabric. Use for linen, silk, wool, canvas, curtains, banners, cloaks, tablecloths, tapestries or any 3D drape that currently looks like a plastic sheet, a stretched texture, or a flat coloured plane.

instalaciones
2
GitHub Stars
6,7 mil
Actualizado
6 oct
mengto
Comunidad

3d-falling-leaves

Build recognizable falling leaves in world space using instanced geometry, independent tumble, coupled sideways drift, shared wind, scene occlusion, and camera-aware recycling. Use for 3D autumn leaves or drifting foliage in Three.js and similar scenes; use falling-leaves for a 2D canvas overlay.

instalaciones
2
GitHub Stars
6,7 mil
Actualizado
6 oct
mengto
Comunidad

3d-high-poly-models

Create or integrate highly detailed 3D models with smooth silhouettes, shaped surfaces, believable bevels, and close-up geometry, then prepare suitable runtime LODs and loading. Use when a user requests high polygon counts, ultra-realistic models, detailed architectural assets, or removal of visibly faceted geometry.

instalaciones
2
GitHub Stars
6,7 mil
Actualizado
6 oct
mengto
Comunidad

3d-high-resolution-textures

Build sharp, physically coherent high-resolution materials for 3D rendering with appropriate PBR maps, texel density, UV direction, mipmaps, anisotropic filtering, and progressive asset delivery. Use for detailed wood, stone, fabric, foliage, and architectural close-ups without excessive download or GPU memory costs.

instalaciones
2
GitHub Stars
6,7 mil
Actualizado
6 oct