Maya 在处理数据类型方面很灵活。如果在两种不同的数据类型之间执行赋值或算术运算,Maya 会在必要时转化数据类型,而不报告语法错误。
下列主题介绍此类情况下进行的转化。了解这些细节可能有助于解决非期望属性和变量值的问题。
除非有编程经验,否则不要自行转化数据类型。非期望属性和变量值可能会令人困惑。
如果将向量指定给浮点属性或变量,Maya 会根据以下等式将该向量转化为一个浮点值:
如果将浮点值指定给一个整数属性或变量,Maya 会删除数值的小数部分。
如果将向量指定给整数属性或变量,Maya 会使用上一主题中提到的平方根等式,将向量转化为整数。但是,它会删除结果的小数分量。
下表列出了在表达式中不同类型之间使用算术运算符时,Maya 转化数据类型的方式。
运算 | 结果数据类型 |
---|---|
整数运算符浮点 | 浮点 |
整数运算符向量 | 向量 |
向量运算符浮点 | 向量 |
假定将名为 $velocity 的向量变量与浮点数 0.5 相乘,如下所示:
$race = $velocity * 0.5;
执行上述表达式时,如果 $velocity 为 <<2,3,0>>,则将结果向量值 <<1,1.5,0>> 指定给 $race 变量。
例如,在语句 Ball.scaleY = 1/3; 中,Maya 将 1 和 3 视为整数,因为它们没有小数点。该表达式会将整数 1 除以整数 3。整数结果为 0,并有余数 1。Maya 会丢弃该余数。
因为 Ball.scaleY 是浮点属性,所以 Maya 会将整数 0 结果转化为浮点 0(它是相同的值),然后将其指定给 Ball.scaleY。
若要获得预期的结果 1/3,必须键入 Ball.scaleY = 1.0/3.0;
Maya 会将 1.0 和 3.0 视为浮点数,因为它们包含小数点。数值 1.0 除以 3.0 的结果是 0.33333333333。