Three.js 蒸汽波太阳特效

🎯 提示词

PROMPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
使用 Three.js 实现蒸汽波风格太阳特效,具体要求:

**核心特效**
- 圆形太阳形状
- 水平条纹动画
- 渐变色彩 (红色到黄色)
- 递进式线条衰减

**场景与光照**
- 全屏 PlaneGeometry
- 无额外光源
- 透明背景

**交互与控制**
- 无控制器,纯动画展示

**技术要求**
- Three.js 版本 (ES Module)
- 自定义 ShaderMaterial
- PlaneGeometry 全屏
- fract + step 动画

📖 效果拆解

层次 视觉效果 技术实现
基础 圆形太阳 smoothstep 边缘软化
条纹 水平动态线 fract(uv.y * 20. - uTime)
颜色 红到黄渐变 mix(vec3(4.,0.,.2), vec3(1.,1.1,0.), uv.y)
衰减 底部浓密 decreasing 因子

🔧 核心技术点

1. 圆形遮罩

为什么需要这个技术:将平面限制为圆形太阳形状。

GLSL
1
2
float circular = length(uv - vec2(0.5));
circular = smoothstep(0.3, 0.29, circular);

2. 条纹动画

为什么需要这个技术:用 fract 创造无限重复的水平线。

GLSL
1
2
3
4
float line = fract(uv.y * 20. - uTime / 10.);
line = abs(line - 0.5);
line -= decreasing;
line = step(line, 0.2);

3. 颜色渐变

为什么需要这个技术:模拟蒸汽波风格的粉红到黄色渐变。

GLSL
1
vec3 sumCol = mix(vec3(4.,0.,.2), vec3(1.,1.1,0.), uv.y);

4. 递进衰减

为什么需要这个技术:线条在底部更密集,向上逐渐稀疏。

GLSL
1
float decreasing = -uv.y + 0.3;

💡 调试与优化

问题类型 表现形式 解决方案
线条闪烁 不连贯 调整 fract 频率
边缘锯齿 不平滑 增大 smoothstep 范围
颜色过曝 刺眼 限制颜色最大值

🚀 扩展思路

变体效果 核心改动 难度
彩虹太阳 多色渐变
脉动效果 圆大小呼吸
扫描线 垂直移动
3D 球体 SphereGeometry ⭐⭐
动态背景 添加云层 ⭐⭐⭐

本文档由 ThreeLab 编辑整理,如需转载,请注明出处。