Three.js 蒸汽波太阳特效
🎯 提示词
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. 圆形遮罩
为什么需要这个技术:将平面限制为圆形太阳形状。
float circular = length(uv - vec2(0.5));
circular = smoothstep(0.3, 0.29, circular);
2. 条纹动画
为什么需要这个技术:用 fract 创造无限重复的水平线。
float line = fract(uv.y * 20. - uTime / 10.);
line = abs(line - 0.5);
line -= decreasing;
line = step(line, 0.2);
3. 颜色渐变
为什么需要这个技术:模拟蒸汽波风格的粉红到黄色渐变。
vec3 sumCol = mix(vec3(4.,0.,.2), vec3(1.,1.1,0.), uv.y);
4. 递进衰减
为什么需要这个技术:线条在底部更密集,向上逐渐稀疏。
float decreasing = -uv.y + 0.3;
💡 调试与优化
| 问题类型 |
表现形式 |
解决方案 |
| 线条闪烁 |
不连贯 |
调整 fract 频率 |
| 边缘锯齿 |
不平滑 |
增大 smoothstep 范围 |
| 颜色过曝 |
刺眼 |
限制颜色最大值 |
🚀 扩展思路
| 变体效果 |
核心改动 |
难度 |
| 彩虹太阳 |
多色渐变 |
⭐ |
| 脉动效果 |
圆大小呼吸 |
⭐ |
| 扫描线 |
垂直移动 |
⭐ |
| 3D 球体 |
SphereGeometry |
⭐⭐ |
| 动态背景 |
添加云层 |
⭐⭐⭐ |
本文档由 ThreeLab 编辑整理,如需转载,请注明出处。
💬 评论区
评论功能即将上线,敬请期待!