可以将自定义属性添加到“粒子形状”(particle shape)节点中并通过表达式控制其值。
要添加自定义属性,请执行以下操作:
选择对象的“粒子形状”(particle shape)节点,而非其“变换”(transform)节点。
使用“Hypergraph”或“大纲视图”(Outliner)选择形状节点。
执行下列操作之一:
选择修改 > 添加属性(Modify > Add Attribute)。
在“属性编辑器”(Attribute Editor)的“添加动态属性”(Add Dynamic Attributes)区域中,单击“常规”(General)按钮。
此时将显示“添加属性”(Add Attribute)窗口:
在“长名称”(Long name)框中输入属性的名称。
确保“创建属性: 可设定关键帧”(Make attribute: Keyable)处于启用状态。
选择下列数据类型之一:
向量(Vector)
创建由三个浮点值组成的向量属性。
- 浮点型(Float)
创建浮点属性。
- 整型(Integer)
创建整型属性。
- 布尔(Boolean)
创建由开/关切换组成的属性。
- 字符串(String)
创建接受字母数字条目作为数据输入的字符串属性。
- 枚举(Enum)
创建接受从枚举属性下拉列表中所做的选择的属性。
选择下列属性类型之一:
标量(Scalar)
创建每对象属性,可将其设定为单值,应用于该对象中的每个粒子。向量标量被视为包含三个数字的单值。
- 每粒子(数组) (Per particle (array))
创建每粒子属性。对于每个粒子,可以将该类型属性设定为不同的值。
如果选择“标量”(Scalar),可以为“浮点型”(Float)或“整型”(Integer)属性指定“最小值”(Minimum)、“最大值”(Maximum)和“默认”(Default)值的值。
“最小值”(Minimum)和“最大值”(Maximum)用于设定可以在“属性编辑器”(Attribute Editor)或“通道盒”(Channel Box)中为属性输入的最小值和最大值。“默认值”用于设定为属性显示的默认值。由于要使用表达式控制属性的值,因此可能要跳过为这些选项输入值这一步骤。
表达式不受“最小值”(Minimum)和“最大值”(Maximum)的值限制。只要是在表达式中指定的值,属性都会接收。表达式可以读取属性的“默认”(Default)值”的值或在“属性编辑器”(Attribute Editor)或“通道盒”(Channel Box)中为其指定的任何其他值。
如果选择“标量”(Scalar),将无法通过启用“添加初始状态属性”(Add Initial State Attribute)创建对应的初始状态属性。
如果选择“每粒子(数组)”(Per particle (array)),还可以通过启用“添加初始状态属性”(Add Initial State Attribute)来创建对应的初始状态属性。有关详细信息,请参见了解初始状态属性。
不能为“数组”(Array)属性设置“最小值”(Minimum)、“最大值”(Maximum)或“默认”(Default)值。
如果要添加更多属性,请单击“添加”(Add)。单击“确定”(OK)添加属性并关闭“添加属性”(Add Attribute)窗口。
此时,新的属性将显示在“属性编辑器”(Attribute Editor)的“附加属性”(Extra Attributes)区域下。尽管在“属性编辑器”(Attribute Editor)中属性名称始终以首字母大写形式拼写,但必须使用“表达式编辑器”(Expression Editor)中显示的精确拼写(无论小写或大写)。
为自定义属性指定值
可以使用为静态或动态属性指定值的相同方法为自定义属性指定值。
示例
假设已创建名为 sunspot 的 10 粒子对象,并将名为 glow 的浮点标量(每对象)属性添加到该对象的“粒子形状”(particle shape)节点中。在创建表达式中为 glow 属性指定一个值,如下所示:
sunspotShape.glow = 11.5; print (sunspotShape.glow + " ");
回放动画时,sunspotShape 的 glow 属性会接收到值 11.5。输出语句会在“脚本编辑器”(Script Editor)中显示该值。由于表达式会为对象中的每个粒子各执行一次,因此该值将显示 10 次。
示例
假设将名为 heat 的向量数组(每粒子)属性添加到 10 粒子 sunspot 形状节点中。可以为每个粒子指定不同的值,如以下创建表达式所示:
float $randomNumber = rand(1);
sunspotShape.heat = <<$randomNumber,0,0>>;
print(sunspotShape.heat + " ");
回放动画时,表达式会循环执行 10 次(为每个粒子各执行一次)。
第一条语句将 $randomNumber 变量设定为介于 0 到 1 之间的随机数值。下一条语句为单粒子的 heat 属性指定向量。每次执行语句时,指定给 heat 的向量的左侧分量都是不同的随机数值。中间和右侧分量始终为 0。
一个粒子的值可能为 <<0.57, 0, 0>>、<<0.32, 0, 0>>、<<0.98, 0, 0>> 等。
输出语句会在“脚本编辑器”(Script Editor)中显示这些值。
注意
如果为对象添加了自定义向量属性,则 Maya 会在“属性编辑器”(Attribute Editor)中显示该属性,但无法在其中输入该属性的值。必须在表达式中或使用“属性编辑器”(Attribute Editor)提供的“组件编辑器”(Component Editor),才能为该属性输入值。
,