命令条目:指定控制器 ... 脚本

脚本控制器与表达式控制器运行方式类似。这些版本提供了一个可在其中为计算控制器值输入脚本的“脚本控制器”对话框。          

可以在 3ds Max 中使用以下“脚本”控制器:          

  • 浮点脚本:浮点控制器

  • Point3 脚本:Point3 控制器

  • 变换脚本:matrix3 PRS 控制器

  • 位置脚本:位置 Point3 控制器

  • 旋转脚本:旋转“四元数”控制器

  • 缩放脚本:缩放 Point3 控制器

不同类型的“脚本”控制器之间的区别主要在于您可以将其指定到的动画轨迹的类型不同。例如,将“变换脚本”控制器指定给“变换轨迹”;将“位置脚本”控制器指定给“位置”轨迹;如果“位置”控制器为“位置 XYZ”,则还可以将“浮点脚本”控制器指定给所有单独的“位置”轨迹(位置            X/Y/Z)。          

脚本控制器的主要优点是:          

  • 它们能够使用 MAXScript 语言的所有功能,包括循环、脚本功能和路径名。

  • 几乎可以使用场景中对象的任一属性来辅助计算控制器的值,包括网格顶点,任意帧时间属性值以及其他在表达式控制器中不可访问的非动画属性。

  • 可以使用 MAXScript 全局变量,与 3ds Max 中其他控制器和脚本进行沟通和协调。

有关该脚本语言的完整说明,请参考“MAXScript 帮助”。          

变换脚本控制器

“变换脚本”控制器在一个脚本化矩阵值中包含位置/旋转/缩放 (PRS) 控制器含有的所有信息。可以从一个脚本控制器对话框中同时访问全部三个值,而不是为位置、旋转和缩放控制器分配三个单独轨迹。因为脚本定义了变换值,因此更易于设置动画。

控制器脚本的值必须是 matrix3 值。matrix3 值是 4x3 3D 变换距阵。有关详细信息,请参见 MAXScript 帮助中的“Matrix3 值”主题。

编写控制器脚本

3ds Max 将输入到“脚本”文本框中的文本解释为 MAXScript 块表达式的主体。您可以按照所需的行数键入很多表达式,并依次进行计算。最后一个表达式的值将作为控制器的值。该值会针对不同的控制器生成相应的类型:即为浮点控制器生成 float,为位置控制器生成               point3,为旋转控制器生成 quat,为变换控制器生成 matrix3 等。

由于文本在块表达式中,所以可以声明只在脚本中可见的并临时在评估中的局部变量。还可以声明或访问与 MAXScript 中的其他所有脚本共享的全局变量,并保留从一个计算到下一个计算的值。

控制器始终由 3ds Max 根据特定的动画时间来计算。如果正在播放动画或正在进行渲染,则这可能是当前时间滑块或增量帧时间。在脚本控制器中,所计算的时间用于围绕控制器脚本建立自动“时间”上下文,因此访问的任何属性(其他显式“时间”表达式除外)将为当前控制器计算时间生成正确的值。这意味着不必在脚本中进行任何特殊操作即可在正确的时间工作。可以用标准               MAXScript 变量 currentTime 访问计算时间。还可以通过在脚本中使用“时间”表达式(与在正则 MAXScript 编程中一样)引用其他时间的场景属性值。

给变量指定节点和轨迹

当需要参考场景中的节点或动画轨迹时,建议您使用“脚本”控制器变量工具组创建变量,来指定给任何特定的节点或控制器轨迹。这样,如果您决定以后重命名场景对象,就保留了使用这些对象的脚本控制器,因为变量保持了到节点的链接。

否则,例如,您在对话框的“表达式”窗口中手动将节点指定给变量,则只要您重命名该特定节点,该链接就会断开。

注意在使用外部参照场景和对象时,用相应的按钮将节点和轨迹指定给变量尤其重要。

过程

示例:要在动画期间,保持对象相对于场景中的其他对象居中,请执行以下操作:

  1. 为应该保持居中的对象命名 foo 并为“位置”轨迹指定“脚本”控制器。                

  2. 在“名称”字段输入 foo,然后单击“创建”。                  

    新变量自动添加到“变量”列表。                  

  3. 高亮显示变量,然后单击“指定节点”。                  

    将打开“轨迹视图拾取”对话框,其中列出了场景的内容。

  4. 展开“对象”层次,直到您找到 foo。将其高亮显示,然后单击“确定”。

    foo 节点便指定给您的变量。                  

  5. 在“脚本控制器”对话框的“表达式”窗口中输入以下脚本:

    local pos=[0,0,0]                  

    for o in objects where o != foo do                

    pos += o.pos                  

    pos / (objects.count - 1)                  

    这个脚本可以通过以下方式计算除当前对象(在此写为 foo)之外所有对象的平均位置:对局部进行设置,对除了 foo 之外的所有对象反复演算,对总位置向量进行积累,对最后一行的平均值进行计算,这是该脚本的最后结果。                  

要使用变换脚本控制器,请执行以下操作:

  1. 选择对象。                

  2. 右键单击以打开四元菜单。

  3. 在“变换”区域中,单击“曲线编辑器”。

  4. 在“轨迹视图”中选择选定对象的变换轨迹。

  5. 从“指定变换控制器”对话框选择“变换脚本”,然后单击“确定”。

    “脚本控制器”对话框将打开。                  

  6. 在“脚本控制器”对话框中编辑 matrix3 值,完成后单击“计算”。

界面

自动指定“脚本”控制器能够打开可以输入脚本的“脚本控制器”对话框。要打开随后的对话框,可以右键单击“运动”面板上或者“轨迹视图”层次中的轨迹,选择“属性”,或者单击“轨迹视图”工具栏上的“属性”按钮。

提示通过拖动边或角可调整对话框。                

“创建变量”组              

名称

让您输入并编辑用户变量的名称。                      

创建

创建一个变量并将其添加到变量列表中。                      

删除

从“变量”列表中移除高亮显示的变量。也可以将其名称键入“名称”字段再单击“删除”来删除变量。                      

重命名

用于重命名高亮显示的组。                      

“变量参数”组              

tick 偏移

以刻度为单位指定当前变量的时间偏移。计算脚本时,从当前时间和“tick 偏移”值设置该变量的值。

注意“时间偏移”对指定为常量的变量不起作用。                            

变量列表

列出控制器中的所有可用变量。在每个脚本控制器中都可以使用以下预定义的常量变量,但是不能将其删除或重命名。                      

  • F以帧为单位的当前时间

  • NT标准化的时间

  • S以秒为单位的当前时间

  • T以刻度为单位的当前时间

指定常量

打开一个对话框,可从中将常量指定给高亮显示的变量。

  • 值表达式 输入任意 MAXScript 值或表达式(如整数、浮点、数组等)。

  • 值表达式结果显示以上表达式的结果。

  • 计算 在当前时间分析表达式。

  • 确定将值表达式的结果指定给当前变量。

  • 取消忽略当前值表达式结果并关闭对话框。

指定轨迹

允许将轨迹指定给高亮显示的变量。                  

指定控制器

允许您将控制器指定给高亮显示的变量。在当前时间和变量的“Tick 偏移”上获得控制器的值。                  

指定节点

允许将节点指定给高亮显示的变量。                  

“表达式”窗口

显示要计算的表达式。可以在此窗口中编辑文本。

“描述”窗口

在此文本窗口中,可以输入与控制器工作原理、使用方式等有关的注释。

保存

单击以将脚本保存至 MAXScript (.ms) 文本文件。

加载

单击以从 MAXScript (.ms) 文本文件中加载脚本。

调试

打开“脚本控制器调试窗口”,它将显示在脚本中使用的所有变量值

计算

计算脚本表达式。将计算时间滑块当前位置的值。

关闭

编译并检查控制器脚本以发现错误。如果没有发现错误,则关闭该对话框。出现任何问题都会显示询问框,询问您是否将表达式还原为当前轨迹的原始值并关闭对话框(确定),或返回编辑表达式(取消)。                  

,