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.

3D 粒子吸引子

粒子吸引子

粒子吸引器是对其所能触及的所有粒子施加力的节点。它们根据力的方向将粒子拉近或推开。有三种类型的吸引子::ref:'class_GPUParticlesAttractorBox3D,ref:'class_GPUParticlesAttractorSphere3D,和:ref:'class_GPUParticlesAttractorVectorField3D '。你可以在运行时实例化它们,并从游戏代码中更改它们的属性;你甚至可以用动画来组合它们以获得复杂的吸引效果。

备注

粒子吸引器还没有实现二维粒子系统。

如果你想要使用吸引器,你首先必须做的是,能够把“Attractoryne”财产放在ParticleProcesMaterial上。让每一颗粒子都能对吸引器作出反应。 和Godot的大多数功能一样,你也可以在运行时更改它。

Common properties

Common particle attractor properties

Common attractor properties

有一些性质,你可以找到所有的吸引子。它们位于检视面板中的“GPUParticlesAttractor3D”部分。

“强度[Strength]”控制吸引力的大小。正值将粒子拉近吸引器的中心,负值将粒子推开。

``衰减控制[Attenuation]``吸引器影响区域内的强度衰减。每个粒子吸引器都有边界。它的力量在边界的边界最弱,在边界的中心最强。边界外的粒子根本不受吸引子的影响。衰减曲线控制强度如何减弱超过这个距离。直线意味着强度与距离成正比:如果一个粒子在边界和中心的中间,吸引器的强度将是它在中心的一半。不同的曲线形状改变粒子加速吸引子的速度。

Different attractor attenuation curves

强度增加变化:不断超过吸引子的距离(左),快速在边界边界和缓慢在中心(中),缓慢在边界和快速在中心(右)。

“Directionality”属性改变粒子被拉向的方向。在“0.0”值时,没有方向性,这意味着粒子被拉向吸引子的中心。在“1.0”时,吸引子是完全定向的,这意味着粒子将沿着吸引子的局部“Z”轴被牵引。你可以通过旋转吸引子改变全局方向。如果“强度”为负,粒子就沿着“+Z”轴被牵引。

Different attractor directionality values

无方向性(左)与全方向性(右)。注意粒子如何沿着吸引子的局部Z轴运动。

“剔除Mask”属性根据每个系统的:ref:“可见层<class_VisualInstance3D>”控制哪些粒子系统受到吸引子的影响。粒子系统只有在吸引子的剔除掩模中启用了至少一个系统的可见层,才会受到吸引子的影响。

警告

有一个“已知问题<https://github.com/godotengine/Godot/issues/61014>_与GPU粒子吸引器,阻止剔除遮罩在Godot 4.0中正常工作。”我们将更新文件,一旦它是固定的。

Box attractors

粒子吸引子箱

节点列表中的盒吸引器

盒吸引子具有盒形影响域。你可以使用“Extent”属性控制它们的大小。框范围总是度量其边界的一半,因此'X=1.0,Y=1.0,Z=1.0)'的值创建一个框,其影响区域两边都有2米宽。

要创建一个框吸引子,添加一个新的子节点到你的场景,并从可用节点列表中选择'GPUParticlesAttractorBox3D'。你可以移动框的位置或附加到移动节点,以获得更多的动态效果。

Box attractor parts particle field

具有负强度值的盒吸引子在粒子场运动时分割粒子场。

Sphere attractors

粒子吸引子球

Sphere attractor in the node list

球面吸引器具有球面影响域。你可以用“半径[Radius]”属性控制它们的大小。虽然盒吸引器不一定是完美的立方体,球吸引器将永远是球:你不能设置宽度独立于高度。如果你想修改形状并使用球形吸引器,你必须改变它在吸引器的“Node3D”部分的“比例[Scale]”。

要创建一个球面吸引器,在场景中添加一个新的子节点,并从可用节点列表中选择“GPUParticlesAttractorSphere3D”。你可以移动球体的位置或附加到一个可移动的节点,以获得更多的动态效果。

球面吸引器粒子场

具有强度值的球形吸引器在粒子场运动时分割粒子场。

向量运算

粒子吸引向量场

节点表中的向量场吸引器

向量场是包含网格上的矢量的三维区域。网格密度控制着向量的数量以及它们的分布距离。向量场中的每个向量都指向一个特定的方向。这可以是完全随机或对齐的方式,形成不同的模式和路径。

当粒子与向量场相互作用时,它们的运动方向会发生变化,以与场中最近的矢量相匹配。当粒子靠近场中的下一个向量时,它改变方向以匹配该向量的方向。粒子的速度取决于矢量的长度。

与盒吸引器一样,向量场吸引子也具有盒形影响域。你可以使用“Extent”属性控制它们的大小,其中“X=1.0,Y=1.0,Z=1.0)”的值将创建一个盒子,盒子的两边各有一个2米宽的影响区域。属性为:ref:`3D Texture<class_Texture 3D>`其中每个像素表示一个矢量,像素的颜色解释为矢量的方向和大小。

备注

当纹理用作向量场时,需要注意两种类型的转换:

  1. 纹理坐标映射到吸引器边界。下图显示了纹理的哪一部分对应于向量场体积的哪一部分。例如,纹理的下半部分会影响向量场吸引子的上半部分,因为“+Y”在纹理UV空间中是向下的,但在Godot的世界空间中是向上的。

  2. 像素颜色值映射到空间中的方向向量。下图提供了一个概述。由于粒子可以沿着每个轴向两个方向移动,颜色范围的下半部分代表负方向值,而上半部代表正方向值。因此,黄色像素“X=1,G=1,B=0)”映射到向量“X=1,Y=1,Z=-1)”,而中性灰色“(R=0.5,G=0.5,B=0.5)”则不会产生任何移动。

纹理映射到向量场

要创建一个向量场吸引子,在场景中添加一个新的子节点,并从可用节点列表中选择“gpupparticeclesattractorvectorfielD3D”。你可以动画化吸引子的位置或附加到一个移动节点更多的动态效果。

小技巧

如果你没有外部工具可以创建向量场纹理,你可以用带有颜色渐层的3D噪声纹理(NoiseTexture3D )来代替它。修改颜色渐层可以调整每个坐标受向量场影响的程度。

粒子场中的向量场吸引器

两个粒子系统受到同一个向量场吸引器影响。点击这里下载 3D 纹理