分布数据(Distributions)

分布 是一组数据类型,这些数据类型可以是常量值、某个范围内的随机值、沿着曲线上的插值及由参数驱动的值,从而提供了很好的灵活性。 这些数据类型一般用于粒子系统属性和SoundCues节点中。

尽管在编辑器中,按照字母排序的话 regions 也列着,但文档这里我们根据复杂度来整理。这么做只是为了帮助刚刚接触的同学更容易理解这些概念。

分布数据的烘培

无论使用哪种分布类型,总是能够在下方看到 是否能被烘培(Can be Baked) 的选项。它决定分布数据的数值结果是否要被烘培到一个查找表中。 相对于运行时实时计算随机数值或者曲线插值而言,预先将数值烘培到查找表中将会极大的提高效率。因此这个选项默认是勾选状态。

CanBeBaked.png

分布类型

当创建粒子系统时,为了获得最大的灵活性,大多数粒子属性都使用 DistributionFloat (浮点分布) 和 DistributionVector (向量分布)类型。 当使用分布类型时有很多种可用的选项,在以下部分将会对各种类型进行详细解释。

注意实际使用的值是根据使用它的属性进行变化的。比如,粒子的 Initial Size (初始大小) 是在粒子产生的时间确定的。 如果把这个属性的分布类型设置为常量曲线,那么将会使用粒子产生时的发射器时间来从曲线中计算获得所期望的值。

Float Distributions (浮点型分布)

当有需要美术人员控制的标量属性时,使用浮点型分布。一个实例便是粒子的生命周期或发射器的产生速率。

DistributionFloatConstant (浮点常量分布)

这种类型用于为常量属性提供一个值。下图显示了在数轴上的该数值

FloatConstant_Graph.png

  1. 常量浮点值不会改变。

当选中这个类型时,将会提供以下对话框来编辑值:

FloatConstant.png

DistributionFloatConstant 属性

单项

描述

常量

为给定的属性设置静态且不变的数值

DistributionFloatUniform(浮点型均匀分布)

这个类型用于为属性提供一定范围内的值。当计算时,在选中的范围随机地设置返回的值。

FloatUniform_Graph.png

  1. 最小值。

  2. 最大值。

  3. 随机值的取值范围。

当选中这个类型时,将会提供以下对话框来编辑值:

FloatUniform.png

DistributionFloatUniform 属性

单项

描述

最小

随机计算的最小值

最大

随机计算的最大值

DistributionFloatConstantCurve (浮点常量曲线分布)

这种类型用于为分布在曲线编辑器上的随着时间变化属性提供值。时间是绝对的(随着发射器的生命周期)或相对的(随着单个粒子的生命周期)取决于使用这个分布的模块。

floatConstantCurve_Graph.png

  1. 关键帧点

  2. 插值曲线。最终数值是根据这条曲线在给定时间来得出。

  3. 切线句柄 - 它们定义了曲线在进入/离开关键帧的行为。

当选中这个类型时,将会提供以下对话框来编辑值:

FloatConstantCurve.png

注意所有文本域都可以进行手动编辑,但是使用曲线编辑器来编辑这些值是我们推荐的方法。

DistributionFloatConstantCurve 属性

单项

描述

点(points)

这个是数组属性,包含了曲线上所有的点。可以使用 AddPoint_button.png 按钮创建新的点。然而,通常在图形编辑器窗口中新增点更加容易。

点(Point)的属性

InVal

这个是图形里水平轴的点,通常作为时间计算。

OutVal

这是图形里垂直轴的点,通常作为属性数值计算。

ArriveTangent

提供点的切线进入角。有意义的数值通常在 -150 到 150。

LeaveTangent

提供点的切线离去角。有意义的数值通常在 -150 到 150。

InterpMode

让用户选择不同的曲线差值模式。查看 曲线编辑器用户手册 的页面来了解更多。

DistributionFloatUniformCurve (浮点型均匀曲线分布)

这个类型用于为分布在曲线编辑器上随着时间变化的属性提供一定范围的值。在特定的时间点上

FloatUniformCurve_graph.png

  1. 最小值曲线 - 定义了随着时间变化的最小值。

  2. 最大值曲线 - 定义了随着时间变化的最大值。

  3. 值范围 - 定义了特定时间下最终值得取值范围。

当选中这个类型时,将会提供以下对话框来编辑值:

FloatUniformCurve.png

和使用 ConstantCurve(常量曲线) 类型一样,我们推荐使用曲线编辑器来编辑这个分布类型。

DistributionFloatConstantCurve 属性

单项

描述

点(points)

这个是数组属性,包含了曲线上所有的点。可以使用 AddPoint_button.png 按钮创建新的点。然而,通常在图形编辑器窗口中新增点更加容易。

点(Point)的属性

InVal

这个是图形里水平轴的点,通常作为时间计算。

OutVal

这是图形里垂直轴的点,通常作为属性数值计算。

ArriveTangent

提供点的切线进入角。有意义的数值通常在 -150 到 150。

LeaveTangent

提供点的切线离去角。有意义的数值通常在 -150 到 150。

InterpMode

让用户选择不同的曲线差值模式。查看 曲线编辑器用户手册 的页面来了解更多。

DistributionFloatParticleParam(浮点型粒子参数分布)

这种类型用于为发射器的参数进行简单的游戏代码设置。它提供了把输入值从一个范围映射到另一个范围的功能, 允许您在 "Cascade-空间" 中调整参数而不需要更新游戏形代码。一旦游戏性编程人员定义了一个可靠的输入范围, 美术工作人员便可以通过 Output(输出) 映射自由地调整属性了。

当选中这个类型时,将会提供以下对话框来编辑值:

FloatParticleParam.png

输入到输出是线性映射,也就是说,最小输入为 0 最大输入为 5,最小输出为 0 最大输出为 100 时,如果用 2 作为输入,那么输出就是 40。

简单地设置输入值 0-1 映射到多个输入处值是非常有用的,因为您可以通过名称来共享粒子参数变量。比如,您可以设置通过粒子参数Foo来驱动SpawnRate, 并设置输入值为 0-1、输出端为 20-200,同时在 InitialSize(初始大小) 中也是使用 Foo,使其它们具有相同的输入值,但输出值为 10-20。

在代码中,程序员将会书写类似于以下的代码:

ParticleComponent->SetFloatParameter('MyParameter', CurrentParameter);

DistributionFloatParticleParameter 属性

单项

描述

参数名称 ParameterName

脚本代码通过该参数名称来访问参数。

最小输入 Min Input

可以传递给分布数据的最小值,通常通过游戏代码设置。

最大输入 Max Input

可以传递给分布数据的最大值,通常通过游戏代码设置。

最小输出 Min Output

根据输入的范围,获得的最小输出值。

最大输出 Max Output

根据输入的范围,获得的最大输出值。

参数模式 Param Mode

决定了如何使用输入值。详见下面的参数模式标记表格。

常量 Constant

当没有输入时,这里提供一个默认值。

参数模式标识ParamMode Flag

描述

DPM_Normal

保持输入值不变。

DPM_Abs

在进行重新映射之前,使用输入值的绝对值。

DPM_Direct

直接使用输入值(没有重新映射)。

Vector Distributions (向量分布)

向量分布用于美术人员控制的基于向量的属性。比如粒子的大小或者速度。

DistributionVectorConstant (向量常量分布)

这种类型用于为常量属性提供一个值。

VectorConstant_Graph.png

  1. X-轴数值

  2. Y-轴数值

  3. Z-轴数值

当选中这个类型时,将会提供以下对话框来编辑值:

VectorConstant.png

LockedAxes(锁定坐标轴)标志允许用户锁定一个坐标轴的值为另一个坐标轴的值。支持以下标志:

DistributionVectorConstant 属性

单项

描述

Constant 常量

这是给定属性的静态且不变的数值。作为向量,包含 X,Y,Z 三个值。

Locked Axes 锁定轴

这里定义了将某个轴固定到其他三个轴的方式来简化分布。查看下面的锁定坐标轴标志表格。

LockedAxes(锁定坐标轴) 标志

描述

EDVLF_None

不把坐标轴锁定为另一个坐标轴上的值。

EDVLF_XY

锁定Y-轴的值为X-轴的值。

EDVLF_XZ

锁定Z-轴的值为X-轴的值。

EDVLF_YZ

锁定Z-轴的值为Y-轴的值。

EDVLF_XYZ

锁定Y-轴和Z-轴的值为X-轴的值。

注意:当激活锁定标志时,值将不能反映在属性窗口的设置中。也就是,当设置 LockedAxes 标志为 EDVLF_XY 时,Y 值将不会显示 X 的内容。 仅当从分布(代码中)计算出那个值时,才应用被锁定的坐标轴的值。

DistributionVectorUniform (向量均匀分布)

这个类型用于为属性提供一定范围内的值。当计算时,在选中的范围随机地设置返回的值。

VectorUniform_Graph.png

  1. X-轴最小值

  2. X-轴最大值

  3. X-轴随机值

  4. Y-轴最小值

  5. Y-轴最大值

  6. Y-轴随机值

  7. Z-轴最小值

  8. Z-轴最大值

  9. Z-轴随机值

当选中这个类型时,将会提供以下对话框来编辑值:

VectorUniform.png

DistributionVectorUniform 属性

单项

描述

Min 最小值

用于随机计算的最小值。鉴于向量的规格,这包含了 X,Y,Z 三个值。

Max 最大值

用于随机计算的最大值。鉴于向量的规格,这包含了 X,Y,Z 三个值。

Use Extremes 使用极端值

意味选择的值应该作为 Min(最小值)或者 Max(最大值),把这些值限定为这两个极端值其中的一个。

LockedAxes(锁定坐标轴) 标志

描述

EDVLF_None

不把坐标轴锁定为另一个坐标轴上的值。

EDVLF_XY

锁定Y-轴的值为X-轴的值。

EDVLF_XZ

锁定Z-轴的值为X-轴的值。

EDVLF_YZ

锁定Z-轴的值为Y-轴的值。

EDVLF_XYZ

锁定Y-轴和Z-轴的值为X-轴的值。

MirrorFlags(镜像标志)用于镜像值的每个分量的Min/Max(最小/最大)值。镜像支持以下标志:

MirrorFlags(镜像标志)

描述

EDVMF_Same(相同)

在Min(最小值)处使用Max (最大值)。

EDVMF_Different(不同)

按照最初设置使用每个值。

EDVMF_Mirror

在Min(最小值)处使用Max(最大值)的负值。

Mirror 标志下的 0,1,2 属性相应的对应了 X,Y,Z 轴。

DistributionVectorConstantCurve (向量常量曲线分布)

这种类型用于为分布在曲线编辑器上的随着时间变化属性提供值。时间是绝对的(随着发射器的生命周期)或相对的(随着单个粒子的生命周期)取决于使用这个分布的模块。

VectorConstantCurve_Graph.png

  1. 根据时间变化的曲线上 Point 0 的 X 轴

  2. 根据时间变化的曲线上 Point 1 的 X 轴

  3. 根据时间变化的曲线上插值后的 X 轴

  4. 根据时间变化的曲线上 Point 0 的 Y 轴

  5. 根据时间变化的曲线上 Point 1 的 Y 轴

  6. 根据时间变化的曲线上插值后的 Y 轴

  7. 根据时间变化的曲线上 Point 0 的 Z 轴

  8. 根据时间变化的曲线上 Point 1 的 Z 轴

  9. 根据时间变化的曲线上插值后的 Z 轴

当选中这个类型时,将会提供以下对话框来编辑值:

VectorConstantCurve.png

和使用 FloatConstantCurve (浮点常量曲线)一样,我们推荐通过曲线编辑器来编辑这种分布类型。

注意: 当一个 ConstantCurve (常量曲线)分布的 LockedAxes 标志设置为除 EDVLF_None 以外的其它选项时,为了避免混淆曲线编辑器将不会显示锁定的坐标轴。 比如,当标志设置为 EDVLF_XY,那么曲线编辑器将仅包含 X 和 Z 曲线。

DistributionFloatConstantCurve 属性

单项

描述

点(points)

这个是数组属性,包含了曲线上所有的点。可以使用 AddPoint_button.png 按钮创建新的点。然而,通常在图形编辑器窗口中新增点更加容易。

点(Point)的属性

InVal

这个是图形里水平轴的点,通常作为时间计算。

OutVal

这是图形里垂直轴的点,通常作为属性数值计算。

ArriveTangent

提供点的切线进入角。有意义的数值通常在 -150 到 150。

LeaveTangent

提供点的切线离去角。有意义的数值通常在 -150 到 150。

InterpMode

让用户选择不同的曲线差值模式。查看 曲线编辑器用户手册 的页面来了解更多。

LockedAxes(锁定坐标轴) 标志

描述

EDVLF_None

不把坐标轴锁定为另一个坐标轴上的值。

EDVLF_XY

锁定Y-轴的值为X-轴的值。

EDVLF_XZ

锁定Z-轴的值为X-轴的值。

EDVLF_YZ

锁定Z-轴的值为Y-轴的值。

EDVLF_XYZ

锁定Y-轴和Z-轴的值为X-轴的值。

DistributionVectorUniformCurve (向量均匀曲线分布)

这个类型用于为分布在曲线编辑器上随着时间变化的属性提供一定范围的值。

VectorUniformCurve_graph.png

  1. 最小 X 轴曲线

  2. 最大 X 轴曲线

  3. X 轴的随即插值范围

  4. 最小 Y 轴曲线

  5. 最大 Y 轴曲线

  6. Y 轴的随即插值范围

  7. 最小 Z 轴曲线

  8. 最大 Z 轴曲线

  9. Z 轴的随即插值范围

当选中这个类型时,将会提供以下对话框来编辑值:

VectorUniformCurve.png

DistributionVectorUniformCurve 属性

单项

描述

点(points)

这个是数组属性,包含了曲线上所有的点。可以使用 AddPoint_button.png 按钮创建新的点。然而,通常在图形编辑器窗口中新增点更加容易。

点(Point)的属性

InVal

这个是图形里水平轴的点,通常作为时间计算。

OutVal

这是图形里垂直轴的点,通常作为属性数值计算。

ArriveTangent

提供点的切线进入角。有意义的数值通常在 -150 到 150。

LeaveTangent

提供点的切线离去角。有意义的数值通常在 -150 到 150。

InterpMode

让用户选择不同的曲线差值模式。查看 曲线编辑器用户手册 的页面来了解更多。

Use Extremes 使用极端值

意味选择的值应该作为 Min(最小值)或者 Max(最大值),把这些值限定为这两个极端值其中的一个。

LockedAxes(锁定坐标轴) 标志

描述

EDVLF_None

不把坐标轴锁定为另一个坐标轴上的值。

EDVLF_XY

锁定Y-轴的值为X-轴的值。

EDVLF_XZ

锁定Z-轴的值为X-轴的值。

EDVLF_YZ

锁定Z-轴的值为Y-轴的值。

EDVLF_XYZ

锁定Y-轴和Z-轴的值为X-轴的值。

MirrorFlags(镜像标志)用于镜像值的每个分量的Min/Max(最小/最大)值。镜像支持以下标志:

MirrorFlags(镜像标志)

描述

EDVMF_Same(相同)

在Min(最小值)处使用Max (最大值)。

EDVMF_Different(不同)

按照最初设置使用每个值。

EDVMF_Mirror

在Min(最小值)处使用Max(最大值)的负值。

和其它曲线类型一样,我们推荐通过曲线编辑器来编辑这种分布类型。

DistributionVectorParticleParam (向量粒子参数分布)

这个类型是上面讨论的FloatParticleParam类型的向量类型等价物。

当选中这个类型时,将会提供以下对话框来编辑值:

VectorParticleParam.png

DistributionFloatParticleParameter 属性

单项

描述

参数名称 ParameterName

脚本代码通过该参数名称来访问参数。

最小输入 Min Input

可以传递给分布数据的最小值,通常通过游戏代码设置。

最大输入 Max Input

可以传递给分布数据的最大值,通常通过游戏代码设置。

最小输出 Min Output

根据输入的范围,获得的最小输出值。

最大输出 Max Output

根据输入的范围,获得的最大输出值。

参数模式 Param Mode

决定了如何使用输入值。详见下面的参数模式标记表格。

常量 Constant

当没有输入时,这里提供一个默认值。

LockedAxes(锁定坐标轴) 标志

描述

EDVLF_None

不把坐标轴锁定为另一个坐标轴上的值。

EDVLF_XY

锁定Y-轴的值为X-轴的值。

EDVLF_XZ

锁定Z-轴的值为X-轴的值。

EDVLF_YZ

锁定Z-轴的值为Y-轴的值。

EDVLF_XYZ

锁定Y-轴和Z-轴的值为X-轴的值。

参数模式标识ParamMode Flag

描述

DPM_Normal

保持输入值不变。

DPM_Abs

在进行重新映射之前,使用输入值的绝对值。

DPM_Direct

直接使用输入值(没有重新映射)。