分布数据(Distributions)
分布 是一组数据类型,这些数据类型可以是常量值、某个范围内的随机值、沿着曲线上的插值及由参数驱动的值,从而提供了很好的灵活性。 这些数据类型一般用于粒子系统属性和SoundCues节点中。
尽管在编辑器中,按照字母排序的话 regions 也列着,但文档这里我们根据复杂度来整理。这么做只是为了帮助刚刚接触的同学更容易理解这些概念。
分布数据的烘培
无论使用哪种分布类型,总是能够在下方看到 是否能被烘培(Can be Baked) 的选项。它决定分布数据的数值结果是否要被烘培到一个查找表中。 相对于运行时实时计算随机数值或者曲线插值而言,预先将数值烘培到查找表中将会极大的提高效率。因此这个选项默认是勾选状态。
分布类型
当创建粒子系统时,为了获得最大的灵活性,大多数粒子属性都使用 DistributionFloat (浮点分布) 和 DistributionVector (向量分布)类型。 当使用分布类型时有很多种可用的选项,在以下部分将会对各种类型进行详细解释。
注意实际使用的值是根据使用它的属性进行变化的。比如,粒子的 Initial Size (初始大小) 是在粒子产生的时间确定的。 如果把这个属性的分布类型设置为常量曲线,那么将会使用粒子产生时的发射器时间来从曲线中计算获得所期望的值。
Float Distributions (浮点型分布)
当有需要美术人员控制的标量属性时,使用浮点型分布。一个实例便是粒子的生命周期或发射器的产生速率。
DistributionFloatConstant (浮点常量分布)
这种类型用于为常量属性提供一个值。下图显示了在数轴上的该数值
常量浮点值不会改变。
当选中这个类型时,将会提供以下对话框来编辑值:
DistributionFloatConstant 属性 |
|
---|---|
单项 |
描述 |
常量 |
为给定的属性设置静态且不变的数值 |
DistributionFloatUniform(浮点型均匀分布)
这个类型用于为属性提供一定范围内的值。当计算时,在选中的范围随机地设置返回的值。
最小值。
最大值。
随机值的取值范围。
当选中这个类型时,将会提供以下对话框来编辑值:
DistributionFloatUniform 属性 |
|
---|---|
单项 |
描述 |
最小 |
随机计算的最小值 |
最大 |
随机计算的最大值 |
DistributionFloatConstantCurve (浮点常量曲线分布)
这种类型用于为分布在曲线编辑器上的随着时间变化属性提供值。时间是绝对的(随着发射器的生命周期)或相对的(随着单个粒子的生命周期)取决于使用这个分布的模块。
关键帧点
插值曲线。最终数值是根据这条曲线在给定时间来得出。
切线句柄 - 它们定义了曲线在进入/离开关键帧的行为。
当选中这个类型时,将会提供以下对话框来编辑值:
注意所有文本域都可以进行手动编辑,但是使用曲线编辑器来编辑这些值是我们推荐的方法。
DistributionFloatConstantCurve 属性 |
|
---|---|
单项 |
描述 |
点(points) |
这个是数组属性,包含了曲线上所有的点。可以使用 按钮创建新的点。然而,通常在图形编辑器窗口中新增点更加容易。 |
点(Point)的属性 |
|
InVal |
这个是图形里水平轴的点,通常作为时间计算。 |
OutVal |
这是图形里垂直轴的点,通常作为属性数值计算。 |
ArriveTangent |
提供点的切线进入角。有意义的数值通常在 -150 到 150。 |
LeaveTangent |
提供点的切线离去角。有意义的数值通常在 -150 到 150。 |
InterpMode |
让用户选择不同的曲线差值模式。查看 曲线编辑器用户手册 的页面来了解更多。 |
DistributionFloatUniformCurve (浮点型均匀曲线分布)
这个类型用于为分布在曲线编辑器上随着时间变化的属性提供一定范围的值。在特定的时间点上
最小值曲线 - 定义了随着时间变化的最小值。
最大值曲线 - 定义了随着时间变化的最大值。
值范围 - 定义了特定时间下最终值得取值范围。
当选中这个类型时,将会提供以下对话框来编辑值:
和使用 ConstantCurve(常量曲线) 类型一样,我们推荐使用曲线编辑器来编辑这个分布类型。
DistributionFloatConstantCurve 属性 |
|
---|---|
单项 |
描述 |
点(points) |
这个是数组属性,包含了曲线上所有的点。可以使用 按钮创建新的点。然而,通常在图形编辑器窗口中新增点更加容易。 |
点(Point)的属性 |
|
InVal |
这个是图形里水平轴的点,通常作为时间计算。 |
OutVal |
这是图形里垂直轴的点,通常作为属性数值计算。 |
ArriveTangent |
提供点的切线进入角。有意义的数值通常在 -150 到 150。 |
LeaveTangent |
提供点的切线离去角。有意义的数值通常在 -150 到 150。 |
InterpMode |
让用户选择不同的曲线差值模式。查看 曲线编辑器用户手册 的页面来了解更多。 |
DistributionFloatParticleParam(浮点型粒子参数分布)
这种类型用于为发射器的参数进行简单的游戏代码设置。它提供了把输入值从一个范围映射到另一个范围的功能, 允许您在 "Cascade-空间" 中调整参数而不需要更新游戏形代码。一旦游戏性编程人员定义了一个可靠的输入范围, 美术工作人员便可以通过 Output(输出) 映射自由地调整属性了。
当选中这个类型时,将会提供以下对话框来编辑值:
输入到输出是线性映射,也就是说,最小输入为 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 (向量常量分布)
这种类型用于为常量属性提供一个值。
X-轴数值
Y-轴数值
Z-轴数值
当选中这个类型时,将会提供以下对话框来编辑值:
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 (向量均匀分布)
这个类型用于为属性提供一定范围内的值。当计算时,在选中的范围随机地设置返回的值。
X-轴最小值
X-轴最大值
X-轴随机值
Y-轴最小值
Y-轴最大值
Y-轴随机值
Z-轴最小值
Z-轴最大值
Z-轴随机值
当选中这个类型时,将会提供以下对话框来编辑值:
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 (向量常量曲线分布)
这种类型用于为分布在曲线编辑器上的随着时间变化属性提供值。时间是绝对的(随着发射器的生命周期)或相对的(随着单个粒子的生命周期)取决于使用这个分布的模块。
根据时间变化的曲线上 Point 0 的 X 轴
根据时间变化的曲线上 Point 1 的 X 轴
根据时间变化的曲线上插值后的 X 轴
根据时间变化的曲线上 Point 0 的 Y 轴
根据时间变化的曲线上 Point 1 的 Y 轴
根据时间变化的曲线上插值后的 Y 轴
根据时间变化的曲线上 Point 0 的 Z 轴
根据时间变化的曲线上 Point 1 的 Z 轴
根据时间变化的曲线上插值后的 Z 轴
当选中这个类型时,将会提供以下对话框来编辑值:
和使用 FloatConstantCurve (浮点常量曲线)一样,我们推荐通过曲线编辑器来编辑这种分布类型。
注意: 当一个 ConstantCurve (常量曲线)分布的 LockedAxes 标志设置为除 EDVLF_None 以外的其它选项时,为了避免混淆曲线编辑器将不会显示锁定的坐标轴。 比如,当标志设置为 EDVLF_XY,那么曲线编辑器将仅包含 X 和 Z 曲线。
DistributionFloatConstantCurve 属性 |
|
---|---|
单项 |
描述 |
点(points) |
这个是数组属性,包含了曲线上所有的点。可以使用 按钮创建新的点。然而,通常在图形编辑器窗口中新增点更加容易。 |
点(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 (向量均匀曲线分布)
这个类型用于为分布在曲线编辑器上随着时间变化的属性提供一定范围的值。
最小 X 轴曲线
最大 X 轴曲线
X 轴的随即插值范围
最小 Y 轴曲线
最大 Y 轴曲线
Y 轴的随即插值范围
最小 Z 轴曲线
最大 Z 轴曲线
Z 轴的随即插值范围
当选中这个类型时,将会提供以下对话框来编辑值:
DistributionVectorUniformCurve 属性 |
|
---|---|
单项 |
描述 |
点(points) |
这个是数组属性,包含了曲线上所有的点。可以使用 按钮创建新的点。然而,通常在图形编辑器窗口中新增点更加容易。 |
点(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类型的向量类型等价物。
当选中这个类型时,将会提供以下对话框来编辑值:
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 |
直接使用输入值(没有重新映射)。 |