Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
处理材质属性¶
最小、最大和曲线属性¶
在这个材质中的属性控制粒子在其生命周期中的行为和变化。它们中的许多拥 Min 、 Max 和 Curve 值,允许你对其行为进行微调。这些值之间的关系是:当一个粒子被生成时,属性会被设置为 Min 和 Max 之间的一个随机值。如果 Min 和 Max 是相同的,那么每个粒子的值将始终是相同的。如果也设置了 Curve ,属性的值将会乘以粒子生命周期当前点上曲线的值。使用曲线来改变粒子生命周期中的属性。这种方式可以表达非常复杂的行为。
时间¶
Lifetime Randomness 属性控制对每个粒子的生命周期应用多少随机性。 值 0 意味着根本没有随机性,并且所有粒子的生存时间相同,由 Lifetime <doc_3d_articles_properties_time> 属性设置。 值 1 意味着粒子的寿命在[0.0, Lifetime]范围内完全随机。
粒子标志¶
Align Y 属性将每个粒子的 Y 轴与其速度对齐。 启用此属性与将 Transform Align 属性设置为 Y to Velocity 相同。
Rotate Y `` 属性与 `Angle <#angle>`__ 和 `Angular Velocity <#angle-velocity>`__ 组中的属性一起使用来控制粒子旋转。如果你想对粒子应用任何旋转,则必须启用 `` Rotate Y ``。例外情况是任何使用 :ref:`<doc_standard_material_3d>` 的粒子,其中``Billboard 属性设置为 Particle Billboard 。在这种情况下,即使没有启用 ``Rotate Y `` ,粒子也会旋转。
当启用 Disable Z 属性时,粒子将不会沿 Z 轴移动。粒子系统的旋转是用局部 Z 轴还是世界 Z 轴由 Local Coords 属性确定。
Daming as Friction 属性将阻尼行为从恒定减速度更改为基于速度的减速度。
生成¶
发射形状¶
粒子可以从空间中的单个点发射,也可以以填充形状的方式发射。 Shape 属性控制该形状。 Point 是默认值。所有粒子均从粒子系统中心的单个点发射。当设置为 Sphere 或 Box 时,粒子以均匀填充球体或盒子形状的方式发射。你可以完全控制这些形状的大小。 Sphere Surface 的工作方式与 Sphere 类似,但所有粒子都在球体表面生成,而不是填充它。
从点(左)、球体(中)和盒子(右)发射的粒子¶
一个环形粒子系统¶
Ring 发射形状使粒子以环形发射。你可以通过更改 Ring Axis 属性来控制环的方向。 Ring Height 控制环沿其轴线的厚度。 Ring Radius 和 Ring Inner Radius 控制环的宽度以及中间的孔应有多大。该图像显示了一个半径为 2 、内半径为 1.5 的粒子系统,粒子轴指向沿全局 Z 轴。
除了这些相对简单的形状之外,你还可以选择 Points (点)或 Directed Points (定向点)选项来创建高度复杂的发射形状。有关如何设置这些形状的详细说明,请参阅: Complex emission shapes 部分。
Angle(角度)¶
Angle 属性控制粒子的起始旋转, 如上所述 。要让此属性对粒子产生实际效果,你必须启用以下两个属性之一: Rotate Y <#particle-flags> 使粒子围绕粒子系统的 Y 轴旋转。在 标准材质 中的 Billboard 属性,如果设置为 Particle Billboard ,则使粒子围绕从粒子指向相机的轴旋转。
方向¶
备注
Direction 属性本身不足以看到任何粒子移动。你在这里设置的任何值,只有在设置了速度或加速度属性后才会生效。
Direction 属性是一个向量,控制每个粒子在生成时的移动方向。一个值为 (X=1,Y=0,Z=0) 将使所有粒子沿着 X 轴侧向移动。对于像喷泉这样的粒子向上射出的效果,一个值为 (X=0,Y=1,Z=0) 会是一个好的起点。
不同的方向值:仅 Y 轴(左侧),X 和 Y 的值相等(中间),启用重力的 X 和 Y(右侧)¶
在设置了方向后,你会注意到所有粒子都沿着同一方向直线移动。 Spread 属性为每个粒子的方向添加了一些变化和随机性。值越高,偏离原始路径的程度就越强。 0 的值意味着根本没有扩散,而 180 的值使粒子向每个方向射出。你可以用这个效果来模拟像爆炸效果中的碎片那样的场景。
无展开(左)、45 度角(中)、全 180 度(右)¶
Flatness 属性限制了沿 Y 轴的扩散。 0 的值表示没有限制, 1 的值将消除沿 Y 轴的所有粒子移动。粒子将完全“水平”的地展开。
你只有在为下面的速度和加速度属性设置了一些值之后,才会看到任何实际的移动,所以让我们接下来看看这些属性。
初始速度¶
虽然 Direction 属性控制粒子的移动方向, Initial Velocity 则控制其移动速度。它分为 Velocity Min 和 Velocity Max ,两者默认均设置为 0 ,这就是你最初看不到任何移动的原因。一旦你为这些属性中的任何一个设置了值 如上所述,粒子就开始移动了。方向会被这些值乘以,因此,通过设置负速度,你可以使粒子向相反方向移动。
加速度¶
Gravity(重力)¶
接下来的几个属性分组紧密协作,控制粒子的运动和旋转。 Gravity 将粒子向其所指的方向拉动,默认情况下是直接向下,强度等于地球的重力。重力影响所有粒子的运动。如果你的游戏使用物理,并且世界的重力可以在运行时更改,你可以使用这个属性来保持游戏的重力与粒子重力同步。如果未设置其他运动属性, Gravity 值 (X=0,Y=0,Z=0) 意味着没有粒子将永远移动。
左:(X=0,Y=-9.8,Z=0),中间:(X=0,Y=9.8,Z=0),右:(X=4,Y=2,Z=0)。¶
角速度¶
Angular Velocity 控制粒子的旋转速度,如上文所述 。你可以通过使用 Velocity Min 或 Velocity Max 的负数值来反转方向。像 Angle 属性一样,只有当设置了 Rotate Y 位标记或在 Standard Material 中选择了 Particle Billboard 模式时,旋转才会可见。
备注
Damping 属性对角速度没有影响。
线性加速度¶
粒子的速度是一个恒定值:一旦设置,它就不会改变,粒子将始终以相同的速度移动。你可以使用 Linear Accel 属性来改变粒子生命周期中的移动速度, 如上文所述 。正值将加快粒子速度,使其移动得更快。负值将减慢其速度,直至停止并开始向反方向移动。
负值(上)和正值(下)的线性加速度¶
我们必须牢记,当我们改变加速度时,我们并不是直接改变速度,我们改变的是速度的 变化 。加速度曲线上的 0 值并不会停止粒子的运动,它会停止粒子运动的变化。在那一刻,无论它的速度是多少,它将保持那个速度继续移动,直到加速度再次改变。
径向加速度¶
Radial Accel 属性为所有粒子添加了类似重力的力,该力的起源位于粒子系统当前位置。负值使粒子向中心移动,就像行星对其轨道上物体的重力一样。正值使粒子远离中心。
负值(左)和正值(右)的径向加速度¶
切向加速度¶
圆上的切线¶
这个属性在粒子系统XZ平面上的圆的切线方向上添加了粒子加速度,该圆的原点位于粒子系统的中心,半径是每个粒子当前位置与系统中心的距离投影到该平面上。
让我们解压它。
圆的切线是与圆 “接触 ”的直线,在接触点与圆的半径成直角。粒子系统XZ平面上的圆是你从上方直接向下看粒子系统时所看到的圆。
从上方观察切向加速度¶
Tangential Accel 始终限制在该平面内,并且不会沿系统的Y轴移动粒子。一个粒子的位置足以定义这样一个圆,如果我们忽略向量的Y分量,到系统中心的距离就是半径。
Tangential Accel 属性将使粒子围绕粒子系统的中心轨道运动,但半径会不断增加。从上方看,粒子将从中心向外螺旋移动。负值会反转方向。
Damping(阻尼)¶
Damping 属性逐渐停止所有运动。每一帧,粒子的运动都会稍微减慢,除非总加速度大于阻尼效果。如果不是,粒子将继续减速直到完全不动。值越大,将粒子完全停止所需的时间就越少。
吸引器相互作用¶
如果你想让粒子系统与 particle attractors 互动,你必须勾选 Enabled 属性。当它被禁用时,粒子系统会忽略所有的粒子吸引器。
显示¶
Scale(大小)¶
Scale 控制粒子的大小,如上文所述 <#process-material-properties>,你可以为 Scale Min 和 Scale Max 设置不同的值,以随机化每个粒子的大小。不允许负值,所以你无法用这个属性翻转粒子。如果你将粒子作为公告板发射,你的 draw passes 中的 Standard Material 的 Keep Size 属性必须启用,才能使任何缩放生效。
Color¶
Color 属性控制粒子的初始颜色。只有在 Standard Material 的 Vertex Color 组中的 Use As Albedo 属性启用后,这个属性才会生效。这个属性与来自粒子材质自己的 Color 或 Texture 属性的颜色相乘。
设置颜色渐变¶
Color 组中有两个 Ramp 属性。这些允许你定义一系列颜色,用于设置粒子的颜色。 Color Ramp 属性在粒子的生命周期内改变粒子的颜色。它会遍历你所定义的所有颜色范围。 Color Initial Ramp 属性从颜色坡道上的随机位置选择粒子的初始颜色。
要设置颜色坡道,点击属性名旁边的框,从下拉菜单选择 New GradientTexture1D 。再次点击该框以打开纹理的详细信息。找到 Gradient 属性,点击旁边的框并选择 New Gradient 。再次点击该框,你将看到一个颜色范围。点击该范围上的任何位置插入一个新标记。你可以用鼠标移动标记,并通过右键点击删除它。当一个标记被选中时,你可以使用范围旁边的颜色选择器来改变它的颜色。
色调变化¶
像 Color 属性一样, Hue Variation 控制粒子的颜色,但是方式不同。它不是直接设置颜色值,而是通过*改变颜色的色相*来实现。
色相是描述色彩种类的名称,如:红色、橙色、黄色、绿色等。它无法体现颜色有多亮或有多饱和。如 `上文所述<#process-material-properties>`__ , Hue Variation 属性控制的是可用色相的范围。
它在粒子当前颜色的基础上工作。你为 Variation Min 和 Variation Max 设置的值控制色相在任一方向上所允许偏移的距离。将其设为较高的值会导致颜色变化更加剧烈,而较低的值则限制可用颜色为原始的最近邻颜色。
不同的色相变化值,两次都以蓝色为基色:0.6(左)和 0.1(右)¶
动画¶
The Animation property group controls the behavior of sprite
sheet animations in the particle's Standard Material.
The Min, Max, and Curve values work as described above.
动态 sprite 画板(精灵表)是一个包含多个小图像的纹理,在栅格上对齐。这些图像按序快速播放,像翻页手书一样连续起来就能播放一个短动画。你可以用它们来制作像烟雾或火焰这样的动画粒子。以下是创建动画粒子系统的步骤:
8x8 动画烟雾精灵表¶
将精灵表纹理导入引擎。如果你手头没有,你可以下载
示例图像的高分辨率版本。设置一个粒子系统,至少添加一个绘制阶段并为该阶段的网格指定一个 ``Standard Material`。
将精灵表指定给
Albedo组中的Texture属性将材质的
Billboard属性设置为Particle Billboard。这样就可以用材质中的Particles Anim分组了。将
H Frames设置为精灵表中的列数,将V Frames设置为精灵表中的行数。如果你希望动画持续重复,请勾选
Loop。
That's it for the Standard Material. You won't see any animation right away. This is
where the Animation properties come in. The Speed properties control how fast
the sprite sheet animates. Set Speed Min and Speed Max to 1 and you should see the
animation playing. The Offset properties control where the animation starts on a
newly spawned particle. By default, it will always be the first image in the sequence.
You can add some variety by changing Offset Min and Offset Max to randomize
the starting position.
三个不同的粒子系统使用相同的烟雾精灵表¶
根据精灵表包含的图像数量以及粒子的存活时间情况,你的动画可能看起来会并不流畅。粒子的存活时间、动画速度和精灵表中图像数量之间的关系是这样的:
备注
当动画速度为 1.0 时,动画将在粒子生命周期结束时,播放到序列中的最后一个图像。
如果你的精灵表包含 64 张(8x8)图片,粒子的生命周期设置为 1 秒,那么动画播放时将非常流畅,以 64 FPS**(1 秒 / 64 张图片)。如果生命周期设置为 ``2 秒``,它仍然相当流畅,为 **32 FPS。但如果粒子存活 8 秒,那么动画将以 8 FPS 播放,会感受到明显卡顿。为了使动画再次流畅,你需要将动画速度增加到类似 3 这样的值,以达到可接受的帧率。
不同生命周期的相同粒子系统:1 秒(左),2 秒(中),8 秒(右)¶
Note that the GPUParticles3D node's Fixed FPS also affects animation playback. For smooth animation playback, it's recommended to set it to 0 so that the particle is simulated on every rendered frame. If this is not an option for your use case, set Fixed FPS to be equal to the effective framerate used by the flipbook animation (see above for the formula).
湍流¶
湍流为粒子运动添加了噪声,能够创造出生动有趣的图案。勾选 Enabled 属性旁边的框就可以激活。此时会出现一些新的属性,可以用来控制运动速度、噪声图案以及对粒子系统的总体影响。你可以在粒子湍流章节找到这些属性的详细解释。
碰撞¶
The Mode property controls how and if emitters collide with particle collision nodes. Set it
to Disabled to disable any collision for this particle system. Set it to Hide On Contact
if you want particles to disappear as soon as they collide. Set it to Constant to make
particles collide and bounce around. You will see two new properties appear in the inspector.
They control how particles behave during collision events.
A high Friction value will reduce sliding along surfaces. This is especially
helpful if particles collide with sloped surfaces and you want them to stay in
place instead of sliding all the way to the bottom, like snow falling on a mountain.
A high Bounce value will make particles bounce off surfaces they collide with,
like rubber balls on a solid floor.
If the Use Scale property is enabled, the collision base size
is multiplied by the particle's current scale. You can use this to
make sure that the rendered size and the collision size match for particles
with random scale or scale that varies over time.
你可以在 碰撞 部分的手册中了解更多关于粒子碰撞的信息。
子发射器¶
可用的子发射器模式¶
The Mode property controls how and when sub-emitters are spawned. Set it to Disabled
and no sub-emitters will ever be spawned. Set it to Constant to make sub-emitters
spawn continuously at a constant rate. The Frequency property controls how often
that happens within the span of one second. Set the mode to At End to make the sub-emitter
spawn at the end of the parent particle's lifetime, right before it is destroyed. The
Amount At End property controls how many sub-emitters will be spawned. Set the
mode to At Collision to make sub-emitters spawn when a particle collides with the
environment. The Amount At Collision property controls how many sub-emitters will be spawned.
When the Keep Velocity property is enabled, the newly spawned sub-emitter starts off
with the parent particle's velocity at the time the sub-emitter is created.
See the Sub-emitters section in this manual for a detailed explanation of how to add a sub-emitter to a particle system.