可以将自定义属性添加到“粒子形状”(particle shape)节点中并通过表达式控制其值。
“最小值”(Minimum)和“最大值”(Maximum)用于设定可以在“属性编辑器”(Attribute Editor)或“通道盒”(Channel Box)中为属性输入的最小值和最大值。“默认值”用于设定为属性显示的默认值。由于要使用表达式控制属性的值,因此可能要跳过为这些选项输入值这一步骤。
表达式不受“最小值”(Minimum)和“最大值”(Maximum)的值限制。只要是在表达式中指定的值,属性都会接收。表达式可以读取属性的“默认”(Default)值”的值或在“属性编辑器”(Attribute Editor)或“通道盒”(Channel Box)中为其指定的任何其他值。
如果选择“标量”(Scalar),将无法通过启用“添加初始状态属性”(Add Initial State Attribute)创建对应的初始状态属性。
不能为“数组”(Array)属性设置“最小值”(Minimum)、“最大值”(Maximum)或“默认”(Default)值。
此时,新的属性将显示在“属性编辑器”(Attribute Editor)的“附加属性”(Extra Attributes)区域下。尽管在“属性编辑器”(Attribute Editor)中属性名称始终以首字母大写形式拼写,但必须使用“表达式编辑器”(Expression Editor)中显示的精确拼写(无论小写或大写)。
假设已创建名为 sunspot 的 10 粒子对象,并将名为 glow 的浮点标量(每对象)属性添加到该对象的“粒子形状”(particle shape)节点中。在创建表达式中为 glow 属性指定一个值,如下所示:
sunspotShape.glow = 11.5; print (sunspotShape.glow + "\n");
回放动画时,sunspotShape 的 glow 属性会接收到值 11.5。输出语句会在“脚本编辑器”(Script Editor)中显示该值。由于表达式会为对象中的每个粒子各执行一次,因此该值将显示 10 次。
假设将名为 heat 的向量数组(每粒子)属性添加到 10 粒子 sunspot 形状节点中。可以为每个粒子指定不同的值,如以下创建表达式所示:
float $randomNumber = rand(1); sunspotShape.heat = <<$randomNumber,0,0>>; print(sunspotShape.heat + "\n");
回放动画时,表达式会循环执行 10 次(为每个粒子各执行一次)。
第一条语句将 $randomNumber 变量设定为介于 0 到 1 之间的随机数值。下一条语句为单粒子的 heat 属性指定向量。每次执行语句时,指定给 heat 的向量的左侧分量都是不同的随机数值。中间和右侧分量始终为 0。