3ds Max教程:用约束和控制器设置太空战斗机的动画
在本课程中,将对执行任务的太空战斗机飞行编队使用多种约束和控制器。
设置课程:
-
打开 flyingspacefighter03.max。
该课程文件在 tutorials\intro_to_animation 文件夹中。
场景已经包含下列内容:
-
由三架太空战斗机 FlightLeader、Wingman01 和 Wingman02 组成的飞行编队。
-
虚拟对象 SpaceshipControl。
-
两条运动路径:flightpath(可见)和 wingmanpath(隐藏)。
-
摄影机(隐藏)SpaceCam。
-
使用虚拟对象控制飞行编队
当设置动画时,虚拟对象是很有用的。通过设置虚拟对象的动画,可以专注于用非常简单的对象设置运动,而不会降低系统的速度。一旦完成了虚拟对象的动画,就可以将对象链接到虚拟对象上。现在将虚拟对象移到哪,对象就移到哪。
将太空战斗机链接到虚拟对象:
-
激活“顶”视口(如果其尚未激活),并从主工具栏中单击“选择并链接”按钮。
-
选择 FlightLeader,并将光标拖动到虚拟对象 SpaceshipControl 上。松开鼠标按钮。
FlightLeader 现在已链接到 SpaceshipControl。无论您将 SpaceshipControl 移动到何处,FlightLeader 都会随之移动。
-
将 Wingman01 和 Wingman02 都链接到 SpaceshipControl。
为虚拟对象添加路径约束:
-
在“顶”视口中,使用“最大化显示”查看场景。
-
选择 SpaceshipControl。
-
从“动画”菜单中,选择“约束”>“路径约束”。拖动光标并单击 flightpath。
SpaceshipControl 会跳到路径的起点。太空战斗机会随之移动,因为它们已经链接到虚拟对象。
-
在“路径参数”卷展栏中,进行下列设置。
-
启用“跟随”、“倾斜”和“恒定速度”。
-
在“轴”组中,启用“Y”和“翻转”。
-
将“倾斜量”设置为 7.0,将“平滑度”设置为 1.0。
-
-
激活“SpaceCam”视口并播放动画。
所有三架太空战斗机都将沿 flightpath 移动。
-
将场景另存为 MyFlight01.max。
使摄影机跟随运动
在本练习中,将使用“链接约束”使摄影机在飞行编队掠过时跟随它们。从上一课继续,或加载 flyingspacefighter04.max
为摄影机添加链接约束:
-
打开“显示”面板,并禁用“按类别隐藏”卷展栏中的“摄影机”。
摄影机 SpaceCam 将出现。
-
在“顶”视口中,使用“最大化显示”查看场景。选择摄影机目标。
同时确保将时间滑块设置为第 0 帧(零)。
-
从主菜单中,选择“动画”>“约束”>“链接约束”。单击 flightpath 以在第 0 帧(零)设置第一个链接参数。
-
将时间滑块移动到第 80 帧,并单击“链接参数”卷展栏中的“添加链接”按钮。单击 SpaceshipControl。
-
单击“添加链接”将其禁用。
-
激活“SpaceCam”视口并播放动画。
摄影机目标从第 0 帧到第 79 帧链接到 flightpath。在第 80 帧,摄影机目标开始专门追踪 SpaceshipControl 对象。
-
将场景另存为 MyFlight02.max。
飞行编队队长过于自信
您的飞行编队队长性格非常大胆。当飞行编队从 SpaceCam 的最佳视点掠过时,他或她觉得应该做一个 V 型滚转。在本练习中,将使用“方向约束”控制飞行编队队长的太空战斗机在表演桶滚的旋转。从上一课继续,或加载 flyingspacefighter05.max。
-
在“顶”视口中,使用“缩放区域”查看三架太空战斗机。
-
在“创建”面板上单击“辅助对象”,然后单击“虚拟对象”。在 FlightLeader 旁边创建一个新的虚拟对象,并将其命名为 barrelroll。
-
单击“选择并链接”,将 barrelroll 链接到 SpaceshipControl。
-
从“工具”菜单中选择“对齐”,然后单击 SpaceshipControl。
“对齐当前选择(SpaceshipControl)”对话框会出现。
-
在“对齐方向(局部)”组中,启用“X 轴”、“Y 轴”和“Z 轴”控件,并单击“确定”。
barrelroll 虚拟对象会与 SpaceshipControl 对齐。
-
在“运动”面板上,打开“指定控制器”卷展栏(如果其未打开),并选择“旋转:Euler XYZ”控制器。
-
单击“指定控制器”按钮,并从“指定旋转控制器”对话框中选择“TCB 旋转”。
注意:这在稍后会变得非常重要,所以不要漏掉这一步。
设置 V 型滚转的动画:
-
在“顶”视口中选择 FlightLeader。
-
打开“动画”菜单,并选择“约束”>“方向约束”。将光标移动到 barrelroll 虚拟对象上并选择它。
您会看到 barrelroll 被添加到“运动”面板上的“方向约束目标”列表中。
-
选择 barrelroll,并确保时间滑块位于第 0 帧(零)。
-
启用“设置关键点”切换,并单击“设置关键点”按钮。
-
将时间滑块移动到第 110 帧,并再次单击“设置关键点”。
您已经添加了两个关键点,它们会使 FlightLeader 正常地从第 0 帧飞行到第 110 帧。
-
激活 SpaceCam 视口,并将时间滑块移动到第 130 帧。
-
单击“选择并旋转”,并将“参考坐标系”更改为“局部”。
-
单击 barrelroll 虚拟对象并将其绕 Y 轴旋转大约 180 度,然后单击“设置关键点”按钮。
注意:如果希望精确一些,则可以在状态栏上的 Y 轴输入字段中输入旋转度数。
-
将时间滑块移动到第 150 帧,并将 barrelroll 虚拟对象绕 Y 轴旋转另一个 180 度,然后单击“设置关键点”按钮。完成后,禁用“设置关键点”切换。
-
将场景另存为 MyFlight03.max,并播放动画。
遇到麻烦的僚机
当 FlightLeader 表演特技时,Wingman01 好像遇到了一些麻烦。他看起来不像其他人飞行得那样平稳。在本练习中,将使用“噪波”控制器为 Wingman01 的飞行动态添加一些湍流。从上一课继续,或加载 flyingspacefighter06.max。
注意:如果从上一课继续,请确保时间滑块已返回到第 0 帧(零)。
添加湍流:
-
在“顶”视口中,使用“缩放区域”查看三架太空战斗机(如果尚未执行该操作)。
您可能必须先使用“最大化显示”,再使用“缩放区域”来查看三架战斗机。
-
选择 Wingman01。
-
在“动画”菜单上,选择“位置控制器”>“噪波”。
执行该操作会为 Wingman01 自动添加“列表”控制器。“位置列表”包含原始的“线性位置”和新的“噪波位置”控制器,它们的默认“权重”设置为 1.0。
-
播放动画,并注意 Wingman01 的无规律飞行。
-
停止播放,并将“噪波位置”控制器的“权重”更改为 25。
现在 Wingman01 太空战斗机的飞行路径会受到轻微战斗损伤的影响。
-
将场景另存为 MyFlight04.max。
调离僚机
现在看起来 Wingman02 好像收到一条信息,并正准备奉命离开编队飞往别处。您将重新访问“链接约束”,以便让 Wingman02 跟随 FlightLeader 飞行一小会儿,然后飞往另一条路径。从上一课继续,或加载 flyingspacefighter07.max。
为 Wingman02 更改路线:
-
将时间滑块重置为第 0 帧(零),并在“顶”视口中缩放到三架太空战斗机。
-
在 Wingman02 旁边创建一个新的虚拟对象,并将其命名为 WingmanControl。
-
右键单击任意视口,并从四元菜单中选择“按名称取消隐藏”。选择 wingmanpath 并单击“取消隐藏”。
在 Wingman02 前面会出现一条黄色的路径。
-
确保新的虚拟对象 WingmanControl 仍处于选定状态,然后从“动画”菜单中选择“约束”>“路径约束”。将光标拖动到 wingmanpath 上并拾取它。
WingmanControl 会跳到 wingmanpath 的起点。
-
在“路径参数”卷展栏中复制先前的设置。
-
启用“跟随”、“倾斜”和“恒定速度”。
-
在“轴”组中,启用“Y”和“翻转”。
-
将“倾斜量”设置为 7.0,将“平滑度”设置为 1.0。
如果播放动画,会看到 WingmanControl 在它自己的路径上。
-
使 Wingman02 更改路径:
-
在“顶”视口中,选择 Wingman02,并单击“断开当前选择链接”按钮。
Wingman02 将不再链接到 SpaceshipControl 虚拟对象上。
-
从“动画”菜单中选择“约束”>“链接约束”,并选择 SpaceshipControl。
Wingman02 会像以前一样飞行,但链接约束为您提供了灵活性,可以让它跟随不同的路径。
-
将时间滑块移动到第 45 帧,并单击“运动”面板上的“链接参数”卷展栏中的“添加链接”按钮。
-
单击 WingmanControl 虚拟对象。
您将看到 WingmanControl 已添加到“目标”列表中,并且当 Wingman02 到达第 45 帧时,太空战斗机开始跟随 WingmanControl 虚拟对象到另一条路径上。
-
将场景另存为 MyFlight05.max,并播放动画。
使 Wingman02 滚转出编队:
若要使 Wingman02 滚转出编队,您将再次使用“方向约束”。
-
如果时间滑块不在第 0 帧,将其移动回第 0 帧(零)。
-
在“顶”视口中的 Wingman02 旁边创建另一个虚拟对象,并将其命名为 wingmanroll。
-
使用“选择并移动”将 wingmanroll 放置在 Wingman02 旁边。
观察“前”和“右”视口以帮助您放置它。这将有助于您在场景中有组织地放置对象。
-
单击“选择并链接”,将 wingmanroll 链接到 WingmanControl。
-
从“工具”菜单中选择“对齐”,然后单击 WingmanControl。
“对齐当前选择(WingmanControl)”对话框会出现。
-
在“对齐方向(局部)”组中,启用“X 轴”、“Y 轴”和“Z 轴”控件,并单击“确定”。
wingmanroll 虚拟对象会与 WingmanControl 对齐。
注意:这是很重要的,因为要确保稍后赋予 wingmanroll 的旋转值将基于 WingmanControl 的初始方向。否则,赋予 wingmanroll 的任何旋转值会导致太空船的翻转失去控制。
-
在“运动”面板上,打开“指定控制器”卷展栏(如果其未打开),并选择“旋转:Euler XYZ”控制器。
-
单击“指定控制器”按钮,并从“指定旋转控制器”对话框中选择“TCB 旋转”。
注意:如果未指定“TCB 旋转”控制器,将无法使 wingmanroll 绕局部轴旋转。
-
在“顶”视口中选择 Wingman02。
-
打开“动画”菜单,并选择“约束”>“方向约束”。将光标移动到 wingmanroll 上并选择它。
您会看到 wingmanroll 被添加到“运动”面板上的“方向约束”卷展栏中的“方向约束”目标列表中。
-
在“顶”视口中选择 wingmanroll。
-
启用“设置关键点”切换,并单击“设置关键点”按钮。
-
将时间滑块移动到第 60 帧,并再次单击“设置关键点”。
您已经添加了两个关键点,它们会使 Wingman02 正常地从第 0 帧飞行到第 60 帧。
-
激活 SpaceCam 视口,并将时间滑块移动到第 85 帧。
-
单击“选择并旋转”,并将“参考坐标系”更改为“局部”。
-
在这一步中要创建两个旋转:
-
在 X 轴坐标显示输入字段中输入 -15,并单击“设置关键点”按钮。
-
在 Y 轴坐标显示输入字段中输入 90,并单击“设置关键点”按钮。
-
-
将时间滑块移动到第 100 帧,以执行下面两个旋转:
-
绕 Z 轴旋转 5 度,并单击“设置关键点”按钮。
-
绕 Y 轴旋转 90 度,并再次单击“设置关键点”按钮。
-
-
将时间滑块移动到第 115 帧,以执行下面两个旋转:
-
绕 Z 轴旋转 10 度,并单击“设置关键点”按钮。
-
绕 Y 轴旋转 90 度,并再次单击“设置关键点”按钮。
-
-
完成后,禁用“设置关键点”切换。将场景另存为 MyFlight06.max,并播放动画。