在表达式中使用自定义属性

 
 
 

将某个自定义属性添加到对象并在表达式中使用该自定义属性通常很有用。您可以使用自定义属性控制其他属性的组合。您还可以将自定义属性用作变量,变量是一个临时存储要由其他属性读取的值的地方。

自定义属性不会对对象的任何特性产生直接影响。

有关如何添加和使用与粒子相关的自定义属性的详细信息,请参见指定给自定义属性

示例

假设您使用以下表达式为名为“Planet”的 NURBS 球体指定一个圆形,以便在 XY 平面中进行环绕运动:

Planet.tx = sin(time);
Planet.ty = cos(time);

Planet 以 1 个单位为半径环绕原点旋转。

在下列步骤中,您将创建一个名为“distance”的自定义属性,使“Planet”的环绕半径随时间增大。

注意

上图中的小球显示了“Planet”的圆形路径。之所以在图中显示它们,只是为了帮助您看到其运动。它们不是动画或表达式的一部分。

添加自定义属性以改变环绕

  1. 选择“Planet”
  2. 选择修改 > 添加属性(Modify > Add Attribute)
  3. “添加属性”(Add Attribute)窗口中,在“长名称”(Long Name)文本框中输入 distance。
  4. 确保“创建属性: 可设定关键帧”(Make attribute: Keyable)处于启用状态。
  5. “数据类型”(Data Type)设定为“浮点型”(Float),将“属性类型”(Attribute Type)设定为“标量”(Scalar)
  6. “最小值”(Minimum)设定为 1,将“最大值”(Maximum)设定为 10,将“默认”(Default)设定为 4。

    “最小值”(Minimum)“最大值”(Maximum)设定您可在“属性编辑器”(Attribute Editor)“通道盒”(Channel Box)中为属性输入的最低值和最高值。

    “默认”设置为属性显示的默认值。

    表达式不受“最小值”(Minimum)“最大值”(Maximum)的约束。属性将接收您在表达式中指定的任何值。

    表达式可以读取“默认”(Default)值或您在“属性编辑器”(Attribute Editor)“通道盒”(Channel Box)中设定的任何其他值。

  7. 单击“添加”(Add)添加属性,然后关闭“添加属性”(Add Attribute)窗口。

    distance 属性将显示在“Planet”“表达式编辑器”(Expression Editor)“属性”(Attributes)列表中。您现在可以在任何表达式中设定或读取属性值。

  8. 按以下形式编辑表达式:
    Planet.tx = distance * sin(time);
    Planet.ty = distance * cos(time);
    

    将 sin (time) 和 cos (time) 乘以 distance 属性,可以使“Planet”以 distance 属性值指定的距离绕原点环绕。有关正弦和余弦函数的详细信息,请参见有用的函数

    因为您先前将距离属性添加到“Planet”时已为其给定默认值 4,因此播放动画将使 “Planet”以距离原点 4 个栅格单位的距离绕原点环行。

    您可以使表达式随时间控制距离属性。

  9. 按以下形式编辑表达式:
    distance = time;
    Planet.tx = distance * sin(time);
    Planet.ty = distance * cos(time);
    

    通过将距离设置为时间值,“Planet” 的旋转距离将随播放时间增加。播放动画时,“Planet”向外匀速螺旋移动。

    与使用表达式控制距离不同,您可以随时间设置距离值的关键帧。

    例如,通过在第 1 帧处设置距离值 1 的关键帧,在第 200 帧处设置距离值 10 的关键帧,“Planet”就会在您播放这 200 帧时向外匀速螺旋移动。播放动画时,“Planet”的距离以线性插值方式从 1 增加到 10。

    您可以单独使用关键帧或单独使用表达式设置距离属性的动画,不能同时使用二者。

    提示如果表达式控制某属性,而您希望改为使用关键帧控制该属性,请删除将值指定给该属性的所有语句,然后单击“编辑”(Edit)按钮。使用“通道盒”(Channel Box)将该属性的值重置为初始值,然后根据需要设定关键帧。

    如果关键帧控制某属性,而您希望改为使用表达式控制该属性,请在“通道盒”(Channel Box)中单击该属性的文本框,然后选择“通道 > 删除选定项”(Channels > Delete Selected)。根据需要将值指定给表达式中的属性名称。