编辑关键帧、表达式和动画曲线。
选择“Animation”>“Editors”>“Action Window” 可打开“Action Window”。“Action Window”包含三个组件:
动作列表器
动作图形编辑器
动作时间视图
“Action Lister”始终显示在“Action Window”的左侧。
在右侧,可以显示图形编辑器或时间视图。使用列表器标题栏中的以下两个图标可在这两个视图之间切换。
“Action Window”还包含自己的下拉菜单集。有关信息,请参见“Action Window”菜单。
菜单下方有一个提示行。该提示行将显示错误消息信息,并在您选择特定菜单时提示您输入所需的内容。如果提示行是深粉色,并且光标不在“Action Window”中,则该窗口未处于激活状态。只有光标在“Action Window”中时,才能识别键盘输入。提示行还包含可帮助您约束移动的捕捉开关(请参见动作窗口捕捉开关)。
“key”开关位于提示行的右侧。打开该开关时,时间滑块将捕捉到关键帧。在移动关键帧时,它们将捕捉到其他关键帧的时间或值,如下所述:
“time”开关位于“key”开关的右侧。移动关键帧或当前时间滑块时,可使用此开关来约束移动。
打开“time”开关时,时间滑块和关键帧的时间将捕捉到整数值。关闭该开关时,可以将所选的关键帧或时间滑块移动到任意时间。
“value”开关位于“time”捕捉开关的右侧。此开关用于在移动关键帧时约束移动。
打开“value”开关时,关键帧的值将捕捉到整数值。关闭该开关时,可以将所选的关键帧移到任意值。
图形编辑器和时间视图均包含时间滑块。时间滑块是一个在窗口中横向移动的竖条,竖条上部是一个包含当前时间的框。时间滑块沿着水平轨道滑动。可以通过单击该轨道中的任意位置向左侧或右侧拖动,更改当前时间。在拖动到新的当前时间时,您会注意到,所有已设置动画的对象将会使用在该新时间评估的通道更新。
还可以在时间滑块框中双击来更改当前时间。(这类似于选择“Animation”>“Show”>“View Frame” 并选择一个用于查看世界空间的新当前时间。)
当该框变为粉红色而且现有时间的背景是灰色时,键入新的当前时间。在时间滑块框中单击将更新已设置动画的世界空间。如果已更改了任何关键帧位置,这样做很有用,因为这些更改不会自动反映在已设置动画的世界空间中。
动作列表器中列出了各个项及其通道,并且始终显示在“Action Window”的左侧。该列表器的内容取决于“List Mode”菜单的设置。具有关联动画的对象和通道以深色显示,而不带有动画的条目则以较浅的颜色显示。
附加了表达式的参数也显示为深色,参数名称的旁边有一对括号“()”;如果在“Action Window”中启用了“Disp Tools”>“Show curve names”,表达式将显示在括号中。
对于通过单个动作设置动画的通道,其参数名称旁边还会显示动作曲线的名称。
获取当前在“Action Window Lister”中选择的对象,并使其在建模窗口中处于激活状态。
打开过滤器控制面板,使您可以选择要在动作列表器中显示的通道。
若要打开和关闭过滤器控制面板,请单击“Param Filter”按钮。过滤器控制面板打开之后,将无法在 Alias 中执行任何其他功能。
过滤器控制面板适用于 DAG 节点通道。对于其他类型的对象,可以在“Param Control”窗口中选择局部设置和全局设置(请参见“Animation”>“Editors”>“Param Control”)。
一个 DAG 节点有十个可设置动画的参数,但是最常用的参数是 X、Y 和 Z 的平移、旋转和缩放参数。参数控制过滤器中的 3X3 栅格使您可以快速启用和禁用这九个参数的显示,控制动作列表器中的数据量。
若要启用或禁用某个参数,请单击其对应的框。例如,单击第一行的第二列将禁用 Y 平移参数;再次单击该框将启用该参数。通过单击“Tra”、“Rot”或“Sca”按钮,可以一次切换全部平移、旋转或缩放参数。同样,可以通过分别单击 X、Y 或 Z 按钮,切换全部 X、Y 或 Z 参数。
3 个 XYZ 开关下方是另外五个按钮:
第一个按钮是已设置动画的通道的过滤器。如果按下此按钮,列表器中将仅显示带有动画信息的通道。
第二个按钮“Visibility”是第十个 DAG 节点动画参数的过滤器。该按钮显示为移除了某部分的 DAG 节点 SBD 框。
第三个按钮已过时,没有任何功能。(它复制了时间扭曲的显示。)
过滤器面板中的第四个按钮(显示为一个四分之一球体)和第五个按钮(显示为一个完整的球体)分别表示局部和全局参数过滤器。这些按钮可控制要从动作列表器中过滤掉的动画参数(对于除 DAG 节点以外所有可设置动画的项)。
如果第四个按钮和第五个按钮均未选择,将列出非 DAG 节点项的所有动画参数。如果只选择了局部参数按钮,将只列出与在项的局部参数控制中选择的参数对应的动画参数。
如果选择了全局参数按钮,则只会使用在全局参数控制中选定的动画参数。
有关更多详细信息,请参见“Animation”>“Editors”>“Param Control”。
在参数过滤器面板中启用和禁用按钮之后,再次单击该参数过滤器按钮将关闭面板。动作列表器将更新以显示所选参数。
图形编辑器按钮用于激活图形编辑器(位于动作列表器的右侧)。在图形编辑器中可以查看和更改任何通道的动作曲线。
时间视图按钮用于处于激活状态的时间视图(出现在动作列表器右侧,取代图形编辑器)。在时间视图中可以查看任何通道的总体动画计时,并创建和编辑表达式,将其附加到动画参数。
对于动作列表器中的各种操作,在选择一种功能之前,必须先在列表器中选择元素。
如果已在列表中选择了多个项,可以使用展开项按钮和展开动画按钮同时展开所有选定项。例如,如果选择五个已设置动画的项中的三个项,然后单击某个所选项的展开动画按钮,则所有三个选定项均会将其动画参数添加到列表中。(有关这些按钮的深入说明,请参见下一部分。)
有关各种可设置动画项的所有动画参数的完整列表,请参见“Animation”>“Editors”>“Param Control”。
对于动作列表器中的大多数项,可通过双击要更改的项来更改其名称。相应字段变为浅粉色,表示可以键入新名称。按 键清空当前名称的字段,然后键入新名称。如果出错,请使用 键。可以为任何动作曲线以及大多数可设置动画的项(例如 DAG 节点和材质球)重命名。
您无法重命名 CV,因为它们的名称源自它们上方的 DAG 节点的名称。也不能为动画参数重命名,因为这些名称用于在整个 Alias 中标识相应参数。
每个对象名称左侧的图标显示对象类型。例如,曲面上层的 DAG 节点具有曲面图标,另一个 DAG 节点上层的 DAG 节点具有 DAG 节点图标,相机具有相机图标。
如果对象有任何子对象,其旁边将显示此按钮。选择此按钮可以将对象的子对象添加到列表器中。新的子对象在第一个对象下方缩进显示,以体现对象的层次。例如,如果曲面上层的 DAG 节点在列表器中,则将具有展开项按钮。
按该按钮时,将列出所有曲面 CV,并在 DAG 曲面节点的名称下方缩进显示其名称。
展开某个对象后,单击该按钮可以收拢其项,即将其子对象从动作列表器中移除。
如果按住 键并单击展开项按钮,该项将展开到其子项,每个子项又展开到其子项,一直继续到展开原始项下的所有项。
使用 键展开时不会将叶几何体 DAG 节点展开到其 CV。此限制是为了可以快速展开 DAG 节点的层次,而不必列出可能大量存在的属于曲线或曲面的 CV。
如果可对列表器中的项设置动画,则其名称旁边将有一个展开动画按钮(在展开项按钮和项类型图标之间)。单击此按钮可以在列表器中显示该项的动画参数。列表器中显示的内容取决于过滤器控制面板的设置。
展开某个项以显示其动画参数后,再次按展开动画按钮将收拢该项,并将该项的动画参数显示从列表器中移除。
如果已设置动画的对象是一个 IK 控制柄,则其参数名称可能会包含特殊说明。例如,如果该对象是一个单链 IK 控制柄,其“X Rot”可能显示为“X Rot[PoleX]”,“Y Rot”可能显示为“Y Rot[Plane]”,“Z Rot”可能显示为“Z Rot[PoleY]”。在更改单链控制柄的旋转顺序时,说明也将进行相应更新。
对于其他示例,如果该对象是样条曲线根控制柄,“X Rot”参数将变为“X Rot[Roll]”,“X Tra”参数将变为“X Tra[Pos]”。如果该对象是样条曲线主控制柄,“X Rot”将变为“X Rot[Twist]”。
如果某个对象被锁定,它将始终在“Action Window”的列表器中显示,即使在建模窗口中取消拾取该对象或在列表器中收拢了其父对象时也是如此。
如果某个动画参数已设置动画,则该参数有一个通道。如果该通道有多个动作(例如,至少有一个定时曲线应用于其基础动作),在其名称旁边会有一个展开通道按钮。单击此按钮可以在列表器中显示该通道的动作曲线。
新动作相对于通道缩进显示。动作按照其应用顺序列出,从基础动作开始。
展开通道后,按其展开通道按钮可以收拢,即将该通道的动作显示从动作列表器中移除。
如果某个通道被锁住,则该通道将始终显示在“Action Window”的列表器中,即使更改了通道过滤器或参数控制选项而本应将通道从列表器中移除时也是如此。
即使收拢了对象的通道列表,锁住的通道仍会从列表器中移除。
使用此图标可查看图形编辑器。
使用图形编辑器可创建和修改动作。还有一些操作可应用于通道。
图形编辑器中的曲线反映动作列表器中的内容。例如,如果某个项有三个参数,每个参数都通过单个曲线通道设置动画,则图形编辑器中将显示三个动作。
如果某个通道上有两个或两个以上的动作(例如基础动作以及使用“Set motion”创建的定时曲线),则该通道将与展开通道按钮一起出现在列表器中。单击此按钮时,会将该通道的动画曲线添加到列表器和图形编辑器中。如果通道未展开,图形编辑器中将只显示在该通道上生成的动画曲线。
生成的曲线(结果曲线)是对该通道及其所有动作的最终评估。结果曲线始终显示为虚线,因为结果曲线不可编辑。可以通过从“Action Window”的“Disp Tools”菜单中选择“Tgl result curves”,打开或关闭其显示。
可以通过在动作列表器中选择动画参数的名称,在图形编辑器中拾取通道和动画曲线。
使用以下图标查看时间视图:
时间视图是另一种查看动作和通道的方式。只能看到动作的持续时间,看不到图形编辑器中出现的动画曲线。如果您对动画的运动很满意,但是希望调整其计时,时间视图会很有用。可以编辑各个动作、某个可设置动画的项的单个通道或整个可设置动画的项的通道。还可以使用此视图来协调对象在场景中的移动。
参数曲线动作通过时间条来表示,其长度由动作的第一个关键帧和最后一个关键帧来定义。关键帧显示为小三角形。
运动路径动作仅在其旁边显示名称:其三维 NURBS 建模曲线的名称。若要编辑运动路径动作,请在建模窗口中编辑 NURBS 曲线。
时间视图在已设置动画的项旁边包含概要栏。概要栏提供通过项的所有通道为该项设置动画的范围。如果概要栏可以编辑(即可以按时间移动或缩放),它将具有实线轮廓。如果概要栏不可编辑(即该项至少有一个通道不可编辑),它将具有虚线轮廓。只有所有通道均可以编辑,才可编辑相应的概要栏。如果通道只使用一个动作,并且此动作是一条参数曲线,则可以编辑通道的概要栏。如果某个通道不可编辑,请尝试展开该通道,并编辑其参数曲线。
可以在时间视图中创建、查看和编辑表达式。可以将表达式附加到任何当前未设置动画的动画参数(选择“Edit”>“Clear”可以将动画从动画参数中移除)。
通过在某个动画参数旁边的时间视图中双击可以输入表达式。
还可以选择“Edit”>“Edit Expression”,使用外部编辑器来编辑或创建表达式。
使用“List Mode”菜单可以指定在动作列表器中显示的对象。
列出拾取的所有建模对象。
列出领域中的所有根级项。
对于 SBD 窗口中出现的项,将只列出根级 DAG 节点。可以使用展开项按钮展开 DAG 节点下层的分层项。
此模式下列出的其他项类型包括领域以及所有可设置动画的透视窗口。
使用“Edit”菜单可以对动作列表器中所选的项执行操作。
打开“Keyframe Stats”窗口,可以使用该窗口编辑各个关键帧的帧、值和切线。
打开外部 ASCII 编辑器,为当前所选的动画参数创建或编辑表达式。
删除所选的项。
例如,若要从参数中移除动画,请在动作列表器中选择该参数,然后选择“Cut”删除其通道。此时只会删除动画;参数本身仍保留在列表器中,但将显示为暗色,表示其没有动画。
还可以使用“Cut”删除关键帧或各个动作。如果意外地剪切了某个项,可以使用“Undo”进行恢复。
如果只剪切了一个通道或一条动作曲线,则动画将放到剪贴板上(替换其中可能已存在的任何内容),以便以后可将其粘贴到未设置动画的参数上(请参见下文的“Paste”和“Paste Instance”)。
将一个通道或动作曲线复制到剪贴板上(替换其中可能已存在的任何内容),以便以后可以粘贴(请参见“Paste”和“Paste Instance”)。
如果拾取了切线,将同时复制切角和切线类型。
将通道或动作曲线粘贴到尚未附加动画的动画参数上。
如果已将切线信息复制到剪贴板上,可以使用“Paste”修改任何拾取的切线的切线角度和切线类型。
粘贴到动画参数上的通道或动作是当前位于剪贴板上的通道或动作。在执行“Copy”或“Cut”操作之后,动作和通道将放到剪贴板上。
将某一段动画曲线复制到剪贴板上。
使用“Paste Segment”可将该曲线段插入另一条曲线。若要复制曲线段,请从曲线上拾取关键帧。曲线段定义为曲线上第一个关键帧和最后一个关键帧之间拾取的部分。
将剪贴板上的曲线段粘贴到现有曲线上。
“Paste Segment With Offset”可偏移所粘贴的曲线段的值(即提高或降低曲线段),使其第一个关键帧可以在指定时间精确地定位到所选曲线上。“Paste Segment”(无偏移)可使所粘贴的曲线段的所有值保持不变。
选择要将曲线段粘贴到的曲线。
单击该曲线,然后沿着该曲线拖动,直到应插入曲线段的位置。
或者,还可以使用键盘来指定应粘贴曲线段的位置。选择“Paste Segment”或“Paste Segment With Offset”时,系统将提示:
Click or drag on curve to define insert location (time, [repeat], [gap]):
键入应放置曲线段的第一个关键帧的时间。可以选择键入要粘贴的曲线段副本数(即使用“Repeat”选项)。“repeat”的默认值是 1。如果输入的“repeat”值大于 1,可以选择输入要在曲线段之间插入的时间间隙。默认值为 0。
若要将曲线段粘贴到未设置动画的参数上,必须使用键盘输入。
删除所选的项,而不将其放在剪贴板上。(如果意外地清除了某个项,可以使用“Undo”进行恢复。)
例如,若要从参数中移除动画,可在动作列表器中选择该参数,然后选择“Clear”删除通道。
此时只会删除动画,参数本身仍保留在列表器中,但将显示为暗色,表示其没有动画。
与粘贴操作类似,只是新设置动画的参数反复使用剪贴板上的动画曲线,而不是创建副本。
使用“Paste Instance”:
从一个对象中选择通道,并调用“Copy”。
从该对象或其他对象中选择未设置动画的参数,并调用“Paste Instance”。
新设置动画的参数和原始通道共享相同的动作曲线。现在,如果编辑该动作,将影响两个通道的动画。
显示正在使用特定动作曲线的所有通道。
有时,一条动作曲线可以供多个通道使用。例如,如果创建运动路径动画(选择“Animation”>“Tools”>“Set Motion”)或新的时间扭曲(选择“Animation”>“Create”>“New Time Warp”),则创建的动画曲线将由多个通道共享。若要与多个通道共享现有动作,请使用“Paste Instance”。
若要查看正在使用特定动作曲线的所有通道,请选择该动作,并从“Edit”菜单中选择“Show Instance”。
此时将显示实用程序列表器,列出该动作的名称。在该动作下方列出了使用该动作的对象名称及其动画参数。
在 Alias 中继续执行任何其他操作之前,必须先通过单击“OK”关闭该实用程序。
撤消以前对关键帧、切线以及动作本身执行的操作(例如“Transform”、“Tangent Type”和“Edit operations”)。
“Undo”会保留变换的历史,这样,如果重复执行“Undo”,将撤消历史中更早的操作。
在“Action Window”中使用“Edit”>“Cut”将限制撤消功能。如果选择“Edit”>“Cut”并在“Action Window”中剪切同一个通道的多个动作,则可能无法使用“Edit”>“Undo”。
剪切一个动作,然后再剪切第二个动作,或将通道作为一个项剪切。
重新创建通过“Undo”撤消的操作。
可以使用“Redo”恢复通过“Undo”撤消的上一项操作。可以重做使用“Undo”撤消的任意项操作。
在“Action Window”之外执行的删除操作(例如,“Delete”>“Delete Active” 或“Delete”>“Animation”>“Delete Channels”)将删除“Action Window”中的撤消历史。
选择“Keyframe Edit”打开“Keyframe stats”窗口,在该窗口可以查看和编辑一个或多个关键帧的帧、值和切线信息,一次编辑一个关键帧。
“Keyframe Stats”窗口打开后,在“Action window”中拾取一个关键帧。每次拾取关键帧时,“Keyframe Stats”窗口都将显示拾取的关键帧的信息。
“Keyframe Stats”窗口中的参数如下所述。
关键帧的当前位置。第一个数字是关键帧的帧时间,第二个数字是关键帧的值。可以通过单击某个数字并输入新数字,更改关键帧的位置。
输入的时间不能在包含关键帧的曲线段之外。
关键帧处的入切线和出切线的角度。该值必须介于 -90.0 和 90.0 之间。如果更改了其中任一切线的值,则该切线的切线类型将变为“fixed”。这样可以确保为关键帧指定的新切线值保持该值。
切线值旁边有一个切线锁定按钮。单击此按钮将锁定入切线和出切线之间的当前角度,这样,如果修改了其中一个角度,将根据补偿量修改另一个角度。
例如,如果入切线是 10 度,出切线是 30 度,则入切线和出切线之间的角度是 (90 - 30) + (90 - 10) = 140 度。如果启用了切线锁定,并且将入切线的值更改为 -20 度(减小 30),则出切线的值将更改为 60 度(增大 30),从而保持入切线和出切线之间的角度是 140 度。
切线锁定按钮仅适用于“Keyframe Stats”窗口中的更改。若要在使用“Transform”>“Move” 更改切线时保持切线关系,请使用 。
有关切线类型的详细信息,请参见有关切线类型的描述。
显示入切线和出切线的当前类型。切线类型控制在移动关键帧时或在关键帧旁边添加或删除关键帧时,如何重新计算切线。单击当前显示的切线类型,使用菜单来选择其他切线类型。(当前切线类型在该菜单中亮显。)
在“Keyframe stats”窗口打开时,还可以选择多个关键帧。如果对于拾取的所有关键帧,有任一位置或切线值相同,则相应的值将显示为黑色。
如果值并非全部相同,“Keyframe stats”窗口中的值将显示为灰色。如果选择此值并输入一个新值,则所有拾取的关键帧都将采用该新值。
例如,如果拾取两个关键帧,其中一个帧的值是 5,另一个值为 10,则“Keyframe stats”窗口会将其中一个关键帧的值显示为灰色,表明并非所有拾取的关键帧均具有相同的值。如果选择这个灰色的值并键入 7,那么两个关键帧的值现在均指定为 7 并且显示为黑色。
如果拾取了多个关键帧,并且全部采用同一切线类型,将显示此切线类型。如果并非所有关键帧均采用同一切线类型,则“Tan’ Type”参数将显示“Unknown”。可以先选择“Unknown”切线类型,然后选择另一个切线类型;这样,所有关键帧都将采用该切线类型。
(还可以使用“Edit”>“Copy” 和“Edit”>“Paste” 将切线角度和切线类型从一个关键帧复制到另一个关键帧。)
使用“CurveTools”菜单可以创建和修改动作曲线。
向现有动作中添加关键帧,或为当前未设置动画的参数创建新动作。
使用“Append keyframes”:
选择未设置动画的参数或参数曲线动作。
执行下列操作之一:
新关键帧的切线类型取决于当前的切线类型模式。有关更多详细信息,请参见“切线类型”。
向现有动作中添加关键帧。
使用“Insert keyframes”:
在动作列表器中选择动作,或在图形编辑器中拾取动作(使用“Pick”>“Object”)。
选择“CurveTools”>“Insert Keyframes”,然后单击并拖动到要插入关键帧的帧。
此时将使用此动作原来在该帧处的值插入关键帧。系统将调整新关键帧的切线,保持该动作的原始形状。
“Insert keyframes”仅将关键帧添加到曲线上第一个关键帧和最后一个关键帧之间。如果希望将现有曲线延伸到第一个关键帧之前或最后一个关键帧之后,请使用“Append keyframes”。
将应用于某个通道的所有动作收拢成一条参数曲线,保持与该通道的原始动画的形状相同。
如果使用多个时间扭曲为某个通道设置动画,并且希望将该通道作为整体而不是单个动作进行编辑,此功能将非常有用。
使用“Use result”:
沿着运动路径为项设置动画,或将一个或多个时间扭曲应用于通道。
包含运动路径和时间扭曲的通道将以虚线显示,因为这些通道不可编辑。收拢这些不可编辑的通道将使其可以编辑,因为通道将仅使用单个参数曲线动作。
选择要收拢的不可编辑的通道。
选择“CurveTools”>“Use result”。系统将提示您输入“start”、“end”和“by”值,用于对通道进行采样。
(如果不指定“start”、“end”或“by”,将使用默认值。默认的“start”值和“end”值是所收拢的通道范围。“by”的默认值是 1。)
例如,如果输入 0、10 和 2,将在时间 0、2、4、6、8 和 10 创建关键帧。
使用较大的“by”值时速度更快,但生成的曲线可能不够精确,尤其是在动画的值发生很多突变和动态变化的情况下。如果发生这种情况,请选择“Edit”>“Undo”恢复原始曲线,然后使用较小的“by”值重试。
如果通道包含一个或多个时间扭曲,则通道范围未明确定义。显式指定通道的“start”和“end”值,而不是使用默认值。
通过减少曲线中的关键帧数来简化曲线,同时使曲线的形状仍保持在某个公差以内。
选择“Simplify”时,系统将提示:
Select actions to simplify. Enter range & tolerance ([start], [end], [by], [0.050]):
如果只是按 键,将使用默认的公差和范围来简化所选动作。
“start”和“end”的默认值是所选动作的完整范围。“by”的默认值是 1,“tolerance”的默认值是 0.05。
或者:
使用键盘键入“start”值和“end”值,以指定要简化动作的帧范围。
使用“by”选项可简化帧公差。简化的动作相当于采用此帧公差的原始动作(在值公差内)。
要输入的第四个数字是值公差。此值指定在简化动作与原始动作之间,采用该帧公差的每个帧所允许的差异程度。
选择“Simplify”时,可以按 键,只键入一个数字或键入四个数字。如果键入一个数字,此数字将用作值公差。如果键入四个数字,这些数字将分别解释为“start”、“end”、“by”和“value”公差。
切换关键帧的锁定状态。
如果关键帧已锁定,则在执行 时不能更改其位置或值。如果希望确保在特定的时间出现特定的关键帧,并且希望避免意外地移动关键帧,此功能将很有用。在图形编辑器和时间视图中,锁定的关键帧均显示为实体方形。
使用“Pick”菜单可在动作编辑器中拾取项。用于动作的“Pick”与标准的 Alias“Pick”类似,但是适用于动作、通道和关键帧。可以通过单击该菜单项来拾取项。
若要拾取多个项,请进行单击并拖动。在动作列表器中,这样做可拾取多个相邻的项。在图形编辑器和时间视图中,将拖出一个拾取框;松开鼠标键后,拾取框内部的每个项都将处于激活状态。
图形编辑器的“Pick”功能增加了在其他功能中进行拾取的功能。如果按住 键,无论当前是哪个菜单项,系统都会自动处于“Pick”模式下。
还可以通过在提示行中键入曲线名称来拾取曲线。可以使用通配符(例如 *
、?
)来选择具有类似名称的曲线。例如:
sphere.*Translate
将拾取所有球体的“Translate”动画曲线。选择“DispTools”>“Show curve names”可显示该曲线的名称。
取消拾取“Graph Editor”、“Action Lister”或“Timeview”中所有处于激活状态的项。
拾取在拾取框内包含的所有项。将拾取动作的通道或任何组件:关键帧、切线和动作。
由于无法同时拾取关键帧、切线和动作,因此可使用拾取优先级来定义当这三种动作组件同时位于拾取框中时所拾取的项:关键帧、切线,然后是动作本身。
拾取动作的关键帧。
可以使用键盘键入特定时间范围的开始时间和结束时间,拾取该范围内的关键帧。确保光标在“Action Window”中,以便键盘输入可以进入“Action Window”。可以使用“DispTools”>“Show Keyframes”显示或隐藏关键帧。
拾取动作或通道。如果在图形编辑器中拾取了某条曲线,则在动作列表器中也将选择该曲线。
拾取关键帧的入切线和出切线。
仅拾取关键帧的入切线。入切线是从左侧进入关键帧的切线。
仅拾取关键帧的出切线。出切线是曲线离开关键帧的切线。
拾取模板曲线。可以使用“DispTools”>“Tgl Template”使曲线成为模板。
如果“拾取”类型设置为“Keyframes”,则在列表器中选择某个动作(或单动作通道)时将切换该动作上每个关键帧的拾取状态,这意味着未拾取的关键帧将变为拾取的关键帧,拾取的关键帧将变为未拾取的关键帧。
同样,如果“拾取”类型设置为“Any Tangents”、“In Tangents”或“Out Tangents”,将会切换曲线上所有切线的拾取状态,或仅切换入切线或出切线的拾取状态。
通过按住 键并使用箭头键,可以循环拾取各个关键帧和切线。
循环拾取允许您拾取关键帧或切线,然后使用键盘箭头,继续拾取另一个关键帧或切线,同时取消拾取之前拾取的项。
“Transform”菜单对动作列表器、时间视图和图形编辑器中所选的项执行操作。
允许您移动关键帧、切线或整条曲线。
若要使用“Move”,请使用“Pick”选择任意数目的组件,然后选择“Move”。在图形编辑器窗口中拖动光标。拾取的对象将随光标而移动。
通常,在移动切线时,将忽略鼠标的水平运动,切线的移动将与鼠标的垂直运动成等比。因此,如果鼠标在“Action Window”中向上移动四分之一,则所有选定切线将向上移动 45 度,即其总移动范围的四分之一。
如果按住 键并移动切线,则切线将不按比例移动,而是直接移动,移动时切线直接指向选择箭头的当前位置:
使用 将使所有处于活动状态的切线立即改变位置,从而直接指向选择箭头。
如果切线与选择箭头分别位于关键帧的两侧,则无法直接指向该指针,而是锁定为指向正上方(如果指针高于关键帧)或指向正下方(如果指针低于关键帧)。因此,如果在同一个关键帧上同时选择入切线和出切线,使用此形式的切线移动的用处不大。
使用 将锁定关键帧的入切线和出切线,使其保持 180 度的夹角(即在一条直线上),然后移动每个切线对中最近的切线,使其直接指向选择箭头。最近意味着切线与选择箭头位于关键帧的同一侧。例如,如果选择箭头位于关键帧的左侧,其入切线将直接指向指针,出切线将直接指向相反方向。如果之后选择箭头移至该关键帧的右侧,切线将互换角色,使出切线指向选择箭头,入切线指向相反方向。
使用 将锁定入切线和出切线,使其保持当前夹角不变。之后每对切线中最近的切线(即与选择箭头位于关键帧同一侧的切线)将移动从而直接指向选择箭头,直至两条切线之间的固定角度允许的度数。
移动切线时,其类型将变为固定。
可以使用键盘输入指定要将曲线或关键帧移动到的位置并提供切线值。如果在键盘输入内容之前加上 A,则输入的值将解释为要移动到的绝对位置。如果在键盘输入内容之前加上 R,则输入的值将解释为相对于当前值。
例如,如果键入 A 10 5,则会将关键帧移至时间 10 和值 5 位置。如果键入 R 2 1,则会将关键帧放置在时间 12 和值 6 位置。可以输入正数或负数。
如果拾取了某条曲线,“Move”将相对于曲线上的第一个关键帧移动整条曲线。
如果拾取了某条切线,则只需要使用键盘输入一个值。此值是介于 -90 和 90 度之间的某个角度。如果角度为 0 度,则表示切线是水平的。不能为切线指定 -90 或 90 这两个值,因为这样可能会在曲线中生成一条垂直线;但是,可以指定接近 -90 或 90 的切线值。
加快或减慢动作的某个范围中的动画,而不影响动画的其他部分的计时。
只能通过键盘输入“Scale time”,而不能交互输入。
选择曲线或从要缩放的曲线中选择关键帧,并选择“Move”>“Scale Time”。
系统将提示:
Enter (start, end, new start, [new end]):
输入要缩放的动作的原范围(“start”和“end”),然后输入应映射到的范围(“new start”和“new end”)。可以选择不输入“new end”时间,此时将默认使用“end”时间。
“start”和“end”之间指定的动画范围将缩放为新范围。如果在“start”或“end”没有任何关键帧,将会在缩放该范围之前插入关键帧,用于定义要缩放的曲线段。
缩放拾取的关键帧的值。
如果已设置了固定切线,可能无法保持曲线的形状。
只能通过键盘输入“Scale value”,而不能交互输入。
选择“Scale value”时,系统将提示:
Enter y-axis pivot value, scale factor:
输入缩放时要围绕的值(轴心点值)以及要缩放的量。
新关键帧值的计算方法是:从原关键帧值中减去轴心点值以确定当前缩放比例,将该缩放比例乘以缩放系数,然后再将得到的值与轴心点值相加,得出新关键帧值。
例如,如果当前的关键帧值是 80,并且指定了轴心点值 70,缩放系数 2,则当前缩放比例是 80 - 70 = 10。将此值乘以缩放系数,可以得出新缩放比例值 20。因此,生成的关键帧值是轴心点值 70 加上新缩放比例值 20,等于 90。
为关键帧指定随机值。“Randomize”对于设置具有不同但相似行为的移动(比如,一群在相同的总体方向上游动,但有它们自己单独的移动的鱼)的动画很有用。可以在其帧和/或值中随机化关键帧。
拾取要随机化的关键帧。
从“Transform”菜单中选择“Randomize”功能。系统将提示您拖出一个框,定义随机化的关键帧所处的范围。
单击希望该框的第一个角所在的位置,然后通过拖动定义框的大小。此外,也可以为该框的两个相对角键入帧和值。
现在,单击该框的内部并移动鼠标。
随着鼠标在水平方向上逐渐远离单击位置,关键帧在时间上将更加随机化。随着鼠标在垂直方向上逐渐远离单击位置,关键帧在值上将更加随机化。
使用 将只在时间上随机化关键帧。使用 将只在值上随机化关键帧。
使用“Views”菜单可以更改图形编辑器和时间视图中的视图。
更改图形编辑器中的视图,以便可以看到动作列表器中的所有选定曲线、关键帧和切线。
图形编辑器中显示的时间和位置的范围受所有选定项的最小和最大时间以及位置值的限制。
放大或缩小特定视图。
在图形编辑器或时间视图中单击希望作为新视图中心的点。拖出推拉框,然后松开鼠标。
沿着水平方向和垂直方向平移视图。
在图形编辑器或时间视图中单击,然后四处拖动鼠标以更改视图:
水平和垂直地平移。
仅水平平移。
仅垂直平移。
如果在按住 和 键的同时按 ,可以进行直接平移,视图随着鼠标的运动而移动。这与执行不受约束的普通平移相同,只是始终可以进行直接平移,而不必从“Views”菜单中选择“Track”功能。
撤消先前对视图所做的操作,例如平移、推拉或观察。“Undo View”会保留变换的历史,这样,如果重复执行“Undo View”,即可撤消历史中更早的操作。
重新创建通过“Undo”撤消的操作。使用“Redo View”可恢复通过“Undo View”撤消的上一项操作。可以重做使用“Undo View”撤消的所有操作。
使用“DispTools”菜单可以更改图形编辑器中各个项的显示。该菜单的所有选项均为开关。
使曲线处于模板模式。曲线显示为灰色,没有任何关键帧或切线。(此行为与 Alias 主窗口中的“ObjectDisplay”>“Template” 功能类似。)
若要对曲线进行模板化,请拾取该曲线(在动作列表器中或使用“Pick”>“curve”),然后选择“DispTools”>“Tgl template”。如果曲线已经模板化,可使用“Pick”>“Template” 拾取曲线,并选择“DispTools”>“Tgl template”取消模板化。不能在图形编辑器中拾取已模板化的曲线,但是仍可以在动作列表器中拾取。
显示或隐藏曲线切线。默认情况下不会显示切线。
显示或隐藏超出动作的已定义时间范围的曲线。
显示或隐藏参数曲线动作上的关键帧。如果关键帧已锁定,将显示一个小框,如果关键帧未锁定,将显示一个小 X。
启用或禁用关键帧和切线的统计信息。
如果启用了“Tgl stats”并且拾取了某个关键帧,将显示该关键帧的 (X, Y) 坐标。如果拾取了某条切线,将显示该切线的角度。
显示或隐藏通道。
如果通过单个动作为通道设置了动画,那么即使您隐藏了结果曲线,该动作仍会显示。
如果通过多个动作为通道设置了动画,则禁用结果曲线仍会显示通道的各个动作,但是会隐藏生成的通道动画。
如果通过单个动作为通道设置了动画,则启用“Tgl curve names”后,将在动作列表器中通道名称的旁边显示该动作的名称。如果通过表达式为通道设置了动画,则将在通道名称的旁边显示该表达式。
使用“ActionTools”菜单可以更改超出所定义范围的曲线的行为。还可以为动作添加注释。
动作是在特定时间范围内定义的:
可以通过选择“DispTools”>“Tgl Infinity”,显示如何计算超出范围的动作。
“ActionTools”菜单可用于指定应如何计算超出定义的第一个时间和最后一个时间之间范围的曲线。“Before”类型指定应如何计算曲线在定义的第一个时间之前的部分;“After”类型指定应如何计算曲线在定义的最后一个时间之后的部分。
“Constant Before”表示对于第一个关键帧(对于运动路径动作为时间 0)之前的所有时间值,曲线将保留与该关键帧相同的值。
“Constant After”表示对于最后一个关键帧(对于运动路径动作为时间 100)之后的所有时间值,将使用该关键帧的值。此类型是参数曲线动作默认的超出范围类型。
“Cycle Before”表示曲线在第一个关键帧之前重复自身。此选项与在第一个关键帧之前重复复制和粘贴曲线类似。
“Cycle After”表示曲线在最后一个关键帧之后重复自身。此选项与在最后一个关键帧之后重复复制和粘贴曲线类似。
“Cycle Before with offset”与“Cycle Before”相同,只是将从上一个周期结束的位置沿垂直方向继续向后重复自身。(不是每次都从相同的垂直位置开始。)
“Cycle After with offset”与“Cycle After”相同,只是将从上一个周期结束的位置沿垂直方向继续重复自身。
“Oscillate Before”和“Oscillate After”意味着曲线依次沿着以下方向重复自身:反向,正向,再反向,依此类推。这就好比获取了曲线的副本,先按相反(或镜像)方向粘贴到曲线上,再按同向粘贴,然后再按镜像方向粘贴,依此类推。
“Linear Before”表示曲线沿着第一个关键帧的入切线以直线继续延伸。
“Linear After”表示曲线沿着最后一个关键帧的出切线以直线继续延伸。因为运动路径动作没有可编辑的切线,所以,线性意味着曲线沿着曲线的实际切线继续延伸。
“Identity Before”和“Identity After”表示曲线沿着 45 度的斜度(即从第一个/最后一个帧开始与直线 y = x 平行)继续以直线延伸。对于使用“Anim”>“Time tools”创建的时间扭曲动作,此类型是默认的超范围类型。
可用于为动作添加注释,提醒您与该动作有关的信息。此选项与“Object Edit”>“Edit Comment” 类似,后者允许您在建模环境中为对象添加注释。
在图形编辑器中拾取一条曲线,然后选择“Edit Comment”。此时将打开运行编辑器的 shell 窗口,可以为该动作添加新注释或编辑以前的注释。在退出编辑器时,该窗口将关闭,您可以继续工作。
“TangentType”菜单既是一种模式,又是一项功能,作用于当前拾取的关键帧。
切线控制曲线在离开一个关键帧并进入下一个关键帧时的行为。可以使用“DispTools”>“Tgl Tangents”启用或禁用切线的显示。
关键帧切线具有切线类型。除了“Fixed”之外的所有切线类型都会在关键帧移动时重新计算切线,以便保持对应切线类型的特征。例如,如果某个关键帧的入切线是“Linear seg in”,则该关键帧的入切线将始终指向上一个关键帧。如果该关键帧移动,则入切线将更新,以便继续指向上一个关键帧。如果切线类型是“Fixed”,则在您移动关键帧时切线不会改变角度。必须明确移动“Fixed”切线,才能改变其角度。
为了更精确地控制关键帧的切线,请使用“Pick”>“Any Tangents”、“Pick”>“In Tangents”或“Pick”>“Out Tangents”拾取切线,然后选择“Transform”>“Move”调整该切线。这样将使修改后的切线的类型变为“Fixed”。
在所选关键帧的前一个关键帧和后一个关键帧之间进行平滑过渡,其切线是共线性的(即它们的角度相同)。这样可确保在关键帧处不会发生突变。
切线的角度是新关键帧两侧的两个关键帧之间斜度的加权平均值。将关键帧设置为“Smooth”可以将关键帧的入切线和出切线的切线类型设置为“Smooth”。
此类型出现在所选关键帧与其上一个关键帧之间的直线上。上一个关键帧的出切线和所选关键帧的入切线与此直线平行。
将关键帧的切线类型设置为“Linear seg in”会将拾取的关键帧的入切线类型和上一个关键帧的出切线类型更改为“linear”。
此类型出现在所选关键帧与其下一个关键帧之间的直线上。所选关键帧的出切线和其下一个关键帧的入切线与此直线平行。
将关键帧的切线类型设置为“Linear seg out”会将拾取的关键帧的出切线类型和下一个关键帧的入切线类型更改为“linear”。
进入关键帧时,移动会减慢。当关键帧的切线类型设置为“Slow seg in”时,会将其入切线类型更改为“平缓”,同时将上一个关键帧的出切线类型更改为“快速”。
在关键帧后面的曲线段的开始,移动比较缓慢。当关键帧的切线类型设置为“Slow seg out”时,会将其出切线类型更改为“平缓”,同时将下一个关键帧的入切线类型更改为“快速”。
移动时将平缓离开新的关键帧,并平缓进入下一个关键帧。当关键帧的切线类型设置为“In/Out”时,会将拾取的关键帧的出切线类型和下一个关键帧的入切线类型更改为“内凹/外凸”。
移动在进入所选关键帧时速度会加快。例如,汽车加速。当关键帧的切线类型设置为“Fast seg in”时,会将拾取的关键帧的入切线类型更改为“快速”,同时将上一个关键帧的出切线类型设置为“平缓”。
移动在离开所选关键帧后速度会加快,如,投掷球。当关键帧的切线类型设置为“Fast seg out”时,会将拾取的关键帧的出切线类型更改为“快速”,同时将下一个关键帧的入切线类型更改为“平缓”。
新关键帧的入切线和出切线均是水平的(即斜度为 0)。当关键帧的切线类型设置为“Flat”时,会将拾取的关键帧的入切线类型和出切线类型更改为“平直”。
新关键帧的出切线是平直的。曲线段在下一个关键帧之前也是平直的(水平),然后突然上升或下降到该关键帧的值。
“Step”切线类型可用于为布尔(“ON/OFF”)值设置动画,如 DAG 节点可见性或灯光阴影显示与否。值大于 0.5 则表示“ON”,小于 0.5 则表示“OFF”。将关键帧的切线类型设置为“Step”会将此关键帧的出切线类型更改为“step”。
如果关键帧的出切线类型为“Step”,则将忽略下一个关键帧的入切线类型。
所选关键帧的切线可以固定为当前角度。如果切线类型是“Fixed”,则表明角度值不会更改,除非明确对该切线进行修改。这种类型尤其适用于将某个切线设置为特定角度,并希望即使修改了该关键帧周围的关键帧或曲线段也使该切线角度保持不变的情况。
可用于自定义标记菜单工具架。
选择“Preferences”>“Interface”>“Marking Menus”。此时将出现含标记菜单中当前工具的工具架窗口:
若要更改标记菜单中使用的项,请通过拖放相应的工具来修改文件夹的内容。
若要删除单个工具,请使用 单击该工具并将其拖到回收站中。若要删除某个文件夹,请使用 单击该文件夹选项卡并将其拖到回收站中。
可以将鼠标键指定给文件夹。例如,您可能希望将 指定给“pick tools”文件夹,将 指定给“Transform tools”文件夹。文件夹选项卡边角上的鼠标图标指示为相应项指定的鼠标键。
可用于指定在“Action Window”内变换关键帧或曲线是否也会更新建模窗口。如果选择了“Tgl update model”,菜单中将显示“Tgl update model during Transform”选项。
若要在变换期间进行更新,请选择该选项;若要仅在变换之后进行更新,请取消选择该选项。
警告!更新通过 viewframe 操作完成,这样可能会使性能很低。始终可以禁用此功能,并通过单击“Action Window”中的帧指示器来查看帧。
关闭“Action Window”并返回建模视图。
可用于在正常显示表达式和显示缩写表达式之间进行切换。
例如,sphere:x_Translate 缩写为 sphere:xt,您可以键入以下任一形式:
sphere: xt sphere: t sphere: T sphere: t_ sphere: x_t sphere:x_Translate
缩写表达式不区分大小写。系统可识别任何字母与下划线“_”的组合。
本节介绍在输入表达式时需要遵循的语法或规则,并讨论有效的数学运算。
通过表达式,可以在可设置动画的参数间建立动态链接,这样,在一个参数(如关节旋转)中所做的更改可以自动更新另一参数(如曲面变形)。表达式系统提供简单的数学运算 (+ - * /),提供 SDL 支持的大多数函数,并且允许引用 DAG 节点和 CV 参数以及当前帧值。任何可设置动画的参数都可以定义表达式来计算其值。
可在“Action Window”中使用“Timeview”窗口创建表达式。任何当前未设置动画的参数都可以附加表达式。(选择“Edit”>“Clear”可以将现有动画从动画参数中移除)。若要键入表达式,请在某个参数旁边的列表区域中双击。也可以选择“Action Window”的“Edit”>“Edit Expression”功能,使用外部文本编辑器来编辑或创建表达式。
可以通过定义表达式,在不同参数之间建立关系。例如,一个对象的 X 平移可与另一个对象的 X 平移相关联。
表达式只能引用 DAG 节点(及其 CV)。例如,不支持引用材质球和灯光参数。
参数引用的定义如下所示:
ObjectName[.CVreference]:Parameter
在 DAG 层次内,可以使用相对引用来引用在层次中位置“更高”的 DAG 节点。使用单个句点 (.
) 指定当前 DAG 节点。两个句点 (..
) 表示当前 DAG 节点上方的 DAG 节点。引用开头的反斜线 (\
) 表示当前 DAG 节点上方最高层次的 DAG 节点。反斜杠也可以用于分隔向上的引用。
例如,假定定义了以下层次(按照降序):
BaseLevel:SubLevel1:SubLevel2:object
For example:
Fluffy:Shoulder:Paw:mySphere
此时,对于 mySphere
对象的相对引用可按如下方式创建:
|
|
|
|
|
|
|
|
|
|
如果添加或移除了中间级别,将重新计算相对引用。因此,如果删除 Paw
,则“..”表示 Shoulder
。
相对引用很有用,因为从一个对象复制到另一个对象的表达式将引用新对象的 DAG 层次,而明确的非相对引用将继续引用旧对象的层次。
曲面内任何 CV 的参数可能会如下表中所示进行引用:
对象 | 引用(其中 # 表示一个数字) | 示例 |
---|---|---|
曲面 | u#v# | plane.u3v0 |
曲线 | u# | curve.u1 |
面内曲线 | c#u# | curve#3.c2u3 |
对于 DAG 节点引用,可以使用下列参数:
X_Translate 或 tx | DAG 节点的局部 X 平移 |
Y_Translate 或 ty | DAG 节点的局部 Y 平移 |
Z_Translate 或 tz | DAG 节点的局部 Z 平移 |
X_Rotate 或 rx | DAG 节点的局部 X 旋转(以度为单位) |
Y_Rotate 或 ry | DAG 节点的局部 Y 旋转(以度为单位) |
Z_Rotate 或 rz | DAG 节点的局部 Z 旋转(以度为单位) |
X_Scale 或 sx | DAG 节点的局部 X 缩放系数 |
Y_Scale 或 sy | DAG 节点的局部 Y 缩放系数 |
Z_Scale 或 sz | DAG 节点的局部 Z 缩放系数 |
Visibility | 指定此 DAG 是否可见的布尔值 |
对于 CV 引用,可以使用下列参数:
X_Position 或 px | CV 的局部 X 位置 |
Y_Position 或 py | CV 的局部 Y 位置 |
Z_Position 或 zp | CV 的局部 Z 位置 |
Weight | 此 CV 的权重系数 |
缩写的表达式参数名,例如“tx
”、“ty
”、“sx
”和“rX
”可以展开为全名。还可以“TX
”形式显示名称。
sphere:X_Translate | 球体对象的 X 平移 |
sphere.u2v3:X_Position | 球体对象内 u2v3 CV 的 X 位置 |
..\..:X_Translate | “高”两个级别的 DAG 节点的 X 平移 |
除了普通的数学运算符(+、-、*、/)之外,还可以使用任何 SDL 函数,此类函数的计算结果为“SCALAR”。
下表提供了对每个函数的简要描述以及应使用的参数。
acos(radians) | acosd(degrees) |
asin(radians) | asind(degrees) |
atan(radians) | atand(degrees) |
atan2(value, value) | atan2d(value, value) |
cos(radians) | cosd(degrees) |
cosh(value) | |
sin(radians) | sind(degrees) |
sinh(value) | |
tan(radians) | tand(degrees) |
tanh(value) |
besselj0(value) | besselj1(value) |
besseljn(order,value) | besselyn(order, value) |
大于 value 的最小整数:
ceil (value)
限制 value,使其介于 start
和 end
之间,是 by 的整数倍数:
constrain (start, end, by, value)
错误函数:
erf (value) erfc (value)
value
的绝对值:
fabs (value)
小于 value
的最大整数:
floor (value)
value/divisor 的浮点余数:
fmod (value, divisor)
Gamma 函数:
gamma (value)
使用标准 Gaussian 分布返回随机数字:
gauss ()
边长为 x
和 y
的矩形的对角线长度
value
的基数为 10 的对数:
log10 (value)
value
的 power
次幂值:
pow (value, power)
使用伪随机分布返回 -1.0 到 1.0 范围内的某个随机数字:
rand ()
使用参数 seed
作为伪随机数新序列的种子:
srand (seed)
如果 value 是 0.0,则返回 0.0,如果 value 是正数,则返回 1.0,如果 value 是负数,则返回 -1.0:
sign (value)
value
的平方根:
sqrt (value)
评估动作曲线:
animate (action curve, expression)
animate 函数的值是通过 expression 指定的帧处的 action curve 曲线值。例如,animate (curve, frame - 2)
将返回比当前帧小两帧位置的动画曲线的值。
可以在“Action Window”中查看任何动作的名称(请参见“Action Window”中的“DispTools”>“Tgl Curve Names”)。
animate
函数以动作曲线而不是通道作为其第一个参数。因此,该函数不引用诸如 sphere:X_Translate
之类的参数,而是引用可能针对某个此类参数(例如 sphere.X_Translate
或 my_curve
)设置动画的动作曲线。
作为一种简便方式,在表达式中输入 animate 函数时,可通过在括号中包含引用来指定参数引用或通道引用,例如 ({sphere:X_Translate}, frame)
。但是请注意,此引用将立即转换为当前针对该参数设置动画的动作曲线的引用,所以,仍不是真正的通道引用。
animate 函数提供了两项非常有用的功能:
逻辑运算符包括:
==
、!=
、>
、<
、>=
、<=
)&&
、|| !)
)只要允许包含值,就可以使用这些运算符。如果逻辑运算结果是 TRUE,则计算为 1.0,如果逻辑运算结果是 FALSE,则计算为 0.0。
基于决策设置对象位置即属于逻辑运算。其算法如下所述:
此算法的输入如下所示:
((fabs (cube:X_Translate - cone:X_Translate) < 3) * (pyramid.X_Translate - 4)) +
((fabs (cube:X_Translate - cone:X_Translate) >= 3) * (cube:X_Translate - 5))
下面是如何使用表达式的几个不同示例。在这些示例中,表达式采用以下格式输入:
parameter = some expression
例如,sphere:X_Translate = sin (frame)
表示表达式 sin (frame)
将应用于对象球体的 X_Translate
通道。
所有示例均沿着 Y-Up 方向构建。
若要确保移动鼠标时表达式随之更新,请启用“Expression updates during Transform”。(请参见“Preferences”>“Performance Options”。)
可以通过在每个手指关节之间创建简单的表达式关系,实现某个逼真的手指运动。对于具有五个关节(命名为 joint
、joint#2
、joint#3
、joint#4
和 joint#5
,其中 joint#5
是指尖)的手指,如果将每个关节的旋转设置为指尖的旋转,则运动自如。将下列表达式应用于手指:
|
|
|
|
|
|
|
|
|
|
|
|
这样,将在手指关节之间建立旋转关系。现在随着指尖 (joint#5
) 围绕 Z 轴旋转(使用“Transform”>“Rotate”),其他关节也等量旋转,从而产生非常逼真的手指运动效果。
与任何其他动画通道一样,可以在“Action Window”内复制和粘贴表达式(请参见“Action Window”中的“Edit”>“Copy”和“Edit”>“Paste”)。
表达式还可以用于创建机械设备,例如齿轮。可使用以下表达式建立四个齿轮对象(gear
、smallGear
、link#1
和 link#2
)的机械关系,以齿轮作为控制对象:
|
|
|
|
|
|
|
|
|
请注意,smallGear
的尺寸为 gear
的一半,因此旋转速度是 gear
的两倍。每个引用前面的负号将使齿轮反向旋转。
在各种对象之间建立关系是表达式的一种主要用途。您还可以创建仅用于控制(或影响)其他对象的运动的对象。
下列表达式提供了缩放和对象关系的示例:
|
|
|
|
|
|
|
|
|
|
|
|
下列表达式在对象大小和对象的旋转量之间建立关系:
|
|
|
|
|
|
若要为对象设置动画,请在控制对象本身所在的位置设置关键帧。(选择“Animation”>“Show”>“Playback” 可观看示例动画)。
尽管表达式只能引用 DAG 节点参数,但是,也可以将其应用于任何可设置动画的参数。以下特定示例说明当对象在地面上弹跳时,如何产生一小股灰尘(使用粒子)。通常,我们将为小的替代对象调整粒子发射的速率,以便在对象接触地面时发射粒子。替代对象将位于对象与地面之间的接触点。
应用于灰尘材质球的表达式(尽管非常简单)是:
|
|
|
请注意该表达式如何使用逻辑运算来比较 ballObject 的位置,然后相应地设置粒子发射。表达式可以应用于任何材质球参数,此处选择粒子发射的原因在于它会立即产生可视效果。
可以使用 animate
函数在任何帧计算动画曲线。可通过使各对象共享同一条动画曲线的评估,使其相互跟随。
对于此示例,包含三个球体,这些球体相互跟随。前导球体 (sphere
) 通过关键帧动画来设置其动画。该球体有两条动画曲线(Y_Translate
通道的 yTrans
和 Y_Rotate
通道的 yRotate
)。另外两个球体分别在前导球体之后 5 个帧和 10 个帧处跟随。
定义此动画的表达式如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
添加最后一个表达式只是为了使第三个球体的行为略有不同。
任何标量值都可用于要设置动画的第二个参数,包括另一个 animate 函数。第二个参数只是一个表达式,其值用作要计算动作曲线的帧。如果要评估在其定义范围之外的动作曲线,则会对该曲线采用推断类型的设置(请参见“Action Window”中的“ActionTools”)。
还可以使用 animate 函数随时间推移调整动画曲线的评估。此示例演示随着时间推移而减慢的钟摆。基本的钟摆摆动作为关键帧动画在 0 到 60 帧完成。然后钟摆表达式使用 animate 函数评估当前帧处的曲线,再根据序列的总长度调整结果。
构成动画的表达式为:
|
|
|
|
|
|
animate 函数的第二个参数设置为 0 到 60 的范围(关键帧的原始范围)。使用 animate``(animNode.Z_Rotate, frame)
,然后将 animNode.Z_Rotate
曲线的推断更改为“cycle after”,也可以实现类似效果。
请注意如何将 animNode:X_Rotate
用作一个简单的变量。这样,如果需要更改序列的计时,则只需更改 animNode:X_Rotate
的值。然后所有其他表达式将根据新值进行评估。
对于此示例,使用了“apply Function”插件创建一条动画曲线,表示在 0 到 100 的范围内对 noise 函数的评估。然后,使用 animate 函数在结果动画曲线中创建索引(实际上就是“评估”该函数)。sphere 使用普通的关键帧动画实现旋转,并使用以下表达式:
|
|
|
还可以使用 noise“函数”来调整其他动画曲线的评估,实际上就是为跟随型表达式提供有些随机但又可控制的行为。
在同一示例中,使用关键帧动画对 sphere#2
设置动画,之后 sphere#3
具有“跟随”类型的表达式序列,其中 Noise“函数”用于向 X_Translate
的跟随添加一些随机性:
|
|
|
|
|
|
对于 X_Translate
,Noise“函数”在 60 到 75 的范围进行计算。