Maya 以厘米、弧度和秒为单位进行内部计算。弧度是数学中常用的角度单位。它等于 180 度除以派 (π),或大约为 57.3 度。
将某个数字指定给其值为度量单位的属性时,默认情况下,该表达式会将数字解释为您在“首选项”(Preferences)窗口的“设置”(Settings)类别中选定的适当单位。默认情况下,单位类型的选择为厘米、弧度和每秒 24 帧。
如果已选择的度量单位与对应的内部单位不同,则 Maya 会将该数字转化为适当的内部单位,以执行指定。
假设已从“首选项”(Preferences)窗口的“设置”(Settings)区域中的“角度”(Angular)菜单选择度。然后为名为“球”的对象编写以下表达式:
Ball.rotateZ = 10;
Maya 会将 10 读取为 10 度,然后将该值转化为适当的弧度数,以便对球的“rotateZ”属性进行指定。转化将自动进行。从您的角度来说,Maya 仅会使球旋转 10 度。
在非粒子表达式中,这些自动转化会影响 Maya 性能。由于该表达式执行速度较慢,因此当您播放、回放或以其他方式更改动画时间时,Maya 的运行速度会比较慢。此外,在包含表达式的场景上执行保存、打开和其他文件操作也比较慢。
若要提高 Maya 性能,则可禁用转化为内部单位的功能。如果执行该操作,则必须以表达式语句转化单位。
假设在“首选项”(Preferences)窗口中,已将“线性”(Linear)单位设定为“毫米”(millimeter),且将“角度”(Angular)单位设定为“度”(degrees)。然后,可以编写下列表达式:
Ball.translateX = 5; Ball.rotateZ = 10;
“全部”(All)可导致 Maya 将 5 读取为 5 毫米,将 10 读取为 10 度。
“无”(None)可导致 Maya 将 5 读取为 5 厘米,将 10 读取为 10 弧度。
“仅角度”(Angular Only)会导致 Maya 将 5 读取为 5 厘米,将 10 读取为 10 度。
假设在“首选项”(Preferences)窗口中,已将“线性”(Linear)单位设定为“毫米”(millimeter),且将“角度”(Angular)单位设定为“度”(degrees)。
在“表达式编辑器”(Expression Editor)中,将“转化单位”(Convert Units)选项设定为“无”(None)并输入以下表达式:
Ball.translateX = 5; Ball.rotateZ = 10;
“无”会导致 Maya 将 5 读取为 5 厘米,将 10 读取为 10 弧度,但这并非是您所需的结果。
若要将 5 毫米指定给球的“translateX”属性,则必须将 5 转化为适当的厘米数。若要将 10 度指定给球的“rotateZ”属性,则必须将 10 转化为适当的弧度数。
Ball.translateX = 5.0 / 10.0; Ball.rotateZ = 10.0 / 57.3;
每厘米有 10 毫米。换句话说,1 毫米等于 1 厘米除以 10。因此,5 毫米等于 5 厘米除以 10。这样,可以使用运算 5.0/10.0。
每弧度等于 57.3 度。换句话说,1 度等于 1 弧度除以 57.3。因此,10 度等于 10 弧度除以 57.3。这样,可以使用值 10.0/57.3。
如果需要更精确地转化为弧度,请将 1 度除以 57.29578,而不是除以 57.3。可以改为使用如下所示的 deg_to_rad 函数:
Ball.rotateZ = deg_to_rad(10.0);
deg_to_rad 函数会将 10.0 度转化为精确的等价弧度。有关详细信息,请参见 deg_to_rad。
禁用单位转化仅影响表达式。它不会影响其他 Maya 命令、选项或显示。例如,上述示例表达式将厘米指定给“translateX”,将弧度指定给“rotateZ”。但是,“通道盒”(Channel Box)仍会以毫米和弧度为单位显示这些属性的值。它将以您在“首选项”(Preferences)窗口的“设置”(Settings)部分中选择的任何单位为单位显示值。