数据类型转化

 
 
 

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。