关于 3d-four-seasons
用于为 3D 场景加入协调的四季变化,同时保留场景、摄像机和交互。指导开发者将季节状态用于植被、材质、光照、积雪与动态效果。
主要功能
- 01四季混合状态
- 02协调季节光照与材质
- 03按树种调整植被
- 04依据暴露情况添加积雪
- 05流畅切换与减少动态效果
适用场景
- 01创建易于辨认的四季场景
- 02切换季节并避免颜色累积偏移
- 03仅在暴露表面选择性覆盖积雪
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mengto/ skills --skill 3d-four-seasons安装后在 Claude Code 中输入/3d-four-seasons确认已加载。
附带文件agents/openai.yamlREFERENCES.md
详细介绍
3D 四季
让一个易于辨认的地点贯穿四季。每个季节都应改变若干相互协调的视觉线索,同时保留相机状态和交互方式。
设计季节特征
盘点落叶树、常青树、裸露表面、避风表面、灯光、天空和现有天气。根据项目选择适合的树种和气候;下表是温带场景的起点。
| 季节 | 植被与地面 | 光线与氛围 | 动态效果 |
|---|---|---|---|
| 春季 | 新鲜的植被;适宜树种开花 | 柔和温暖的日光;轻柔薄雾 | 零星花瓣或嫩叶 |
| 夏季 | 茂密浓绿的植被;地面覆盖完整 | 更强的日光;阴影中的绿意清晰可见 | 克制的落叶与微风 |
| 秋季 | 符合树种特点的琥珀色、红色和棕色;落叶 | 较低的暖色阳光;金色薄雾 | 更多飘落的树叶 |
| 冬季 | 落叶树枝干裸露;常青树保留;裸露处覆雪 | 冷色天空补光;苍白的阳光;温暖的室内光 | 可选的零星降雪;较少的落叶 |
仅在粒子效果有助于场景表现时才使用它们。季节选择器不需要暴风雪或完整的天气模拟器。
共享一种状态
使用由四个分量组成的混合值,顺序为 [spring, summer, fall, winter]。将 autumn 作为 fall 的别名接受,然后规范化为一个内部键。权重初始值均为非负数,且总和为 1。
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;
}
将相同状态传入材质 uniform、天空、太阳光与补光、粒子密度,以及可选的环境音频。选择新季节时,应将当前混合效果转向新状态,而不是排入另一个动画或重置为夏季。根据已设定的基础值和权重计算每项结果;反复对上一帧的颜色进行染色会导致偏移。
逼真地改变植被与积雪
使用针对树种的调色板和稳定的实例 ID。在冬季,通过确定性阈值或抖动逐渐减少落叶树的枝叶。保留常青植被的覆盖。为阴影和深度材质应用匹配的可见性与风力规则,避免已消失的树叶仍投射夏季的阴影。
要以较低成本表现积雪,可将冬季权重与朝上的世界空间几何法线及暴露遮罩结合:
snow = winterWeight * smoothstep(0.3, 0.85, worldNormal.y) * exposure
将材质混合为浅色、粗糙的雪材质。仅靠朝上的法线也会让遮蔽处的桌面和室内地板变白;请为物体添加暴露标签,或提供遮蔽遮罩。材质叠加不会增加厚度,也不会改变轮廓。只有在深度表现重要的特写边缘处,才添加局部积雪几何体。如果场景模拟积雪堆积和融化,请将降雪强度与积雪覆盖量分开处理。
保持过渡响应灵敏
预先分配粒子池,并重复使用材质和几何体。更改 uniform,而不是重新编译着色器或重建场景。扩展着色器时保留现有材质钩子,并使用稳定的程序缓存键;应匹配已安装渲染器的着色器片段,不要假定旧的注入点仍然存在。
让季节与一天中的时间及天气保持独立。根据这些输入一次性计算最终光照状态,避免多个控制器覆盖同一组太阳或雾效参数。在受控的状态变化时刷新开销较大的环境贴图,并尽可能使用缓存。
使用支持键盘操作的控件,显示当前选中状态并更新无障碍标签。启用减少动态效果时,应立即应用所选季节的外观,并保留构图完整的静态场景。页面隐藏时暂停持续动画。
验证
使用同一台摄像机捕捉四季。每个季节都应无需标签即可辨认。在过渡期间快速切换春天 → 冬天 → 夏天 → 秋天,并检查是否出现颜色漂移、阴影过时、分配峰值以及摄像机控制丢失。验证室内/室外的雪景曝光、常绿植物保留情况、粒子数量,以及桌面端/移动端渲染效果。
阅读 REFERENCES.md。Seijaku 展示了共享的 uSeason 权重、setSeason、snowInject、植被稀疏化和季节性光线着色。完整的降雪物理模拟和气候模拟属于扩展功能,并非该实现所声称具备的功能。