Maya 在处理数据类型方面很灵活。如果在两种不同的数据类型之间执行赋值或算术运算,Maya 会在必要时转化数据类型,而不报告语法错误。
下列主题介绍此类情况下进行的转化。了解这些细节可能有助于解决非期望属性和变量值的问题。
除非有编程经验,否则不要自行转化数据类型。非期望属性和变量值可能会令人困惑。
指定给浮点属性或变量
如果将向量指定给浮点属性或变量,Maya 会根据以下等式将该向量转化为一个浮点值:
公式中的 x、y 和 z 数值表示向量中的三个分量。结果值是向量的幅值。
示例
Ball.scaleY = <<1,2,0>>;
Maya 将已转化的向量指定给浮点 ScaleY 属性:
如果将一个整数指定给浮点属性或变量,那么 Maya 不会进行任何转化。无需执行任何操作。
示例
Ball.scaleY = 1;
Maya 将值 1 指定给 Ball.scaleY。
指定给整数属性或变量
如果将浮点值指定给一个整数属性或变量,Maya 会删除数值的小数部分。
如果将向量指定给整数属性或变量,Maya 会使用上一主题中提到的平方根等式,将向量转化为整数。但是,它会删除结果的小数分量。
示例
int $pi = 3.14;
Maya 将值 3 指定给整数变量 $pi。
int $temp = <<1,2,0>>;
Maya 将该向量值指定给整数变量 $temp:
它会删除小数分量 .2360607。$temp 变量会收到删除分量后的值 2。
指定给向量属性或变量
如果将一个整数或浮点值指定给向量属性或变量,Maya 会将该整数或浮点值放入向量的每个分量中。
示例
vector $speed = 1.34;
因为 $speed 是一个向量,Maya 会将 <<1.34,1.34,1.34>> 指定给它。
将混合数据类型与算术运算符一起使用
下表列出了在表达式中不同类型之间使用算术运算符时,Maya 转化数据类型的方式。
| ||||||||
|
示例
假定将名为 $velocity 的向量变量与浮点数 0.5 相乘,如下所示:
$race = $velocity * 0.5;
执行上述表达式时,如果 $velocity 为 <<2,3,0>>,则将结果向量值 <<1,1.5,0>> 指定给 $race 变量。
重要信息Maya 在未声明数据类型的文字常量和变量上执行算术运算时,它会基于存在的值来猜测数据类型。
例如,在语句 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。
,