2. 3D粒子与视觉特效
2026/4/14大约 2 分钟
3D粒子与视觉特效
游戏里的爆炸火焰、飘落的雪花、角色脚下的尘土——这些都是"粒子"做的。粒子就像一群极小的小球,成千上万个一起运动,看起来就像火焰、烟雾或水流。再加上"后处理"(类似手机拍照时的滤镜),就能让整个画面更有氛围感。
本章你将学到
- GPUParticles3D 节点的基本用法
- 如何用 ProcessMaterial 控制粒子的运动方式
- 后处理效果:Bloom(泛光)、HDR(高动态范围)
- 如何用自定义 Shader 制作独特特效
粒子系统:成千上万个"小点"同时运动
Godot 提供了 GPUParticles3D 节点,利用 GPU 来同时计算成千上万个粒子的位置、速度和颜色。它比旧的 CPUParticles3D 性能高得多,适合做大规模特效。
创建粒子的关键参数:
- Emission(发射):粒子从哪里出生、每秒出生多少个
- Direction + Spread(方向和扩散):粒子往哪个方向飞、散开角度多大
- Gravity(重力):粒子受不受重力影响(火焰向上飘就设负重力)
- Color Ramp(颜色渐变):粒子出生和死亡时的颜色变化(火焰从白色变橙色再变透明)
代码示例:创建一个爆炸粒子特效
C#
using Godot;
public partial class ExplosionEffect : GpuParticles3D
{
public override void _Ready()
{
// 一次性爆发所有粒子
OneShot = true;
// 爆炸向外扩散
ProcessMaterial = new ParticleProcessMaterial
{
EmissionShape = ParticleProcessMaterial.EmissionShapeEnum.Sphere,
EmissionSphereRadius = 0.5f,
Direction = new Vector3(0, 1, 0),
Spread = 180f,
Gravity = Vector3.Zero,
InitialVelocityMin = 5.0f,
InitialVelocityMax = 10.0f
};
Amount = 100;
Lifetime = 1.0;
// 自动播放
Emitting = true;
}
}GDScript
extends GPUParticles3D
func _ready():
# 一次性爆发所有粒子
one_shot = true
# 爆炸向外扩散
var mat = ParticleProcessMaterial.new()
mat.emission_shape = ParticleProcessMaterial.EMISSION_SHAPE_SPHERE
mat.emission_sphere_radius = 0.5
mat.direction = Vector3(0, 1, 0)
mat.spread = 180.0
mat.gravity = Vector.ZERO
mat.initial_velocity_min = 5.0
mat.initial_velocity_max = 10.0
process_material = mat
amount = 100
lifetime = 1.0
# 自动播放
emitting = true后处理:给整个画面加"滤镜"
后处理(Post-processing)是对最终画面整体应用的效果,类似于给照片加滤镜:
- Bloom(泛光):让亮的东西周围产生柔和的光晕,像灯光在空气中散射
- Glow:和 Bloom 类似,让发光物体更醒目
- HDR:让亮处更亮、暗处更暗,增加画面层次
在 Godot 中,后处理通过 WorldEnvironment 节点配置。
相关章节
- 基础篇 - 材质与 Shader:理解材质系统是做特效的前提
- 地形与环境系统:环境中大量使用粒子做雨雪雾等效果
- 性能优化与 LOD:粒子数量过多会影响性能
