在本课程中,您将学习如何根据汽车模型的行驶距离将车轮旋转一定量。
让我们从计算车轮旋转中涉及的三角学开始。
在任意圆形对象中,旋转量 (α) 是由圆的半径和 α 角度围绕的弧长所定义的。以弧度表示的旋转量 (α) 等于弧长除以圆的半径(弧长/R),其中:
- 车轮的半径为常数,在此示例中等于 13 个单位。
- 弧长在展平时表示汽车及其车轮行驶的距离。
因此,车轮旋转计算(弧长/R)变为距离/13。然而,车轮半径为常数且等于 13,而行驶距离为可变的。
设置课程:
- 从上一节课继续或
打开
car_rig_02.max
。
旋转车轮(在世界 X 坐标中):
- 在“透视”视口中,选择“底盘”。
当前已在世界 X 轴上设置了汽车的方向:您将在此坐标系中开始工作。
- 右键单击车身对象,然后从四元菜单中选择“连线参数”。
- 从弹出菜单中选择“变换”
“位置”
(第二个)“位置 XYZ”
“X 位置”。
注: 重要的是始终将列表顶部的第一个动画控制器(在此例中为“位置 XYZ 控制器”)置于未启用状态,因为其作用相当于父/子关系的“锁”。选择要操作的控制器时,请始终从控制器列表顶部的第二个控制器开始向下操作。
一条橡皮筋显示了您要在两个选中对象之间建立的链接。
- 单击汽车的左前轮 (Wheel-FL)。
- 从弹出菜单中选择“变换”
“旋转”
(第二个)“Euler XYZ”
“Z 轴旋转”。
将打开“参数关联 #1”对话框。您使用此对话框设置对象之间的单向和双向控制关系。将高亮显示您刚选中以彼此作用的两个对象的位置和旋转。
- 在“参数关联”对话框上,单击“控制方向”上的向右箭头。
这将确保 Chassis X 位置控制 Wheel-FL Z 旋转而不是采用其他方法。
“参数关联”对话框的右下角将显示车轮对象“表达式”面板。该面板将行驶的距离表示为 X_Position。
- 在 X_Position 旁边,键入 /13。
表达式现在应为 X_Position/13,即距离除以车轮的半径。
- 单击“连接”,但不要关闭此对话框。
- 通过沿车身的 X 轴移动车身以测试您的工作。
请注意左前车轮为何不旋转。即使您向汽车和车轮添加一个列表控制器,列表中的第一个控制器(确保父/子“锁定”的控制器)仍处于活动状态。您需要将第二个位置控制器(关联过程中使用的控制器)设置为活动控制器。
- 如果先前移动过汽车模型,请按 Ctrl+Z 撤消移动。
- 选中车身后,在
“运动”面板
“PRS 参数”卷展栏上单击卷展栏底部的“位置”按钮。
- 在“位置列表”卷展栏上,高亮显示第二个“位置 XYZ”控制器并单击“设置激活”。
- 尝试重新沿汽车的 X 轴移动汽车。
提示: 为了更好地查看车轮旋转,请使用“前”视口,并将其显示模式更改为“明暗处理”(如果使用的是传统视口驱动程序,则更改为“平滑 + 高光”)。
车轮现在会以正确的速率旋转,但运动方向是向后的。
- 在“参数关联”对话框中,请在“表达式”面板上向表达式的前面添加一个减号 (-),然后单击“更新”。
- 再次沿汽车的 X 轴移动汽车并注意车轮是如何沿正确方向旋转的。
- 为剩余三个车轮的每个车轮都重复前面的步骤。
提示: 若要选择汽车右侧的车轮,您可以在选择车身的 X 位置后按 H 键,然后使用“拾取对象”对话框拾取车轮。
因为车轮为镜像关系,因此汽车右侧的车轮不需要对其表达式添加负号,而左侧车轮则需要。
-
关闭所有“参数关联”对话框。
为 Y 轴旋转添加子控制器:
在上一过程中,您学习了如何添加控制器,该控制器确定了模型沿世界 X 轴行驶距离长度的车轮旋转量。 然而,如果您尝试沿任何方向旋转汽车,车轮旋转都将会减少或完全停止。因此,您需要添加对汽车沿 Y 轴方向的位移进行计数的控制器。
- 在“顶”视口中,选择“底盘”对象,并将其顺时针旋转 –90 度以使其前保险杠指向 12 点钟方向。
现在已在世界 Y 轴上设置汽车的方向,因此您将在此坐标系中开始工作。
-
环绕“透视”视口,直到可以看到汽车的左前方。
-
沿 Y 轴前后移动汽车。请注意,车轮不会旋转。 要使车轮旋转,您需要其他动画控制器,即控制汽车沿 Y 轴方向的位移的控制器。您将这些控制器添加为子控制器,这样便不会覆盖已经放置好的控制器。
- 转至 3ds Max 窗口的左下角,右键单击 MAXScript 区域,然后选择“打开侦听器窗口”。
- 在宏录制器面板上,高亮显示以下行:
$.rotation.controller.Available.controller = Euler_XYZ ()
确保您在做出选择时不包括行后的回车符。按 Ctrl+C 将此行复制到内存。
如果您不是接着上一课继续操作的,并且该行不显示在“打开侦听器”窗口中,请从此教程文本中复制该行。
-
关闭“MAXScript 侦听器”窗口,然后
选择左前轮 (Wheel-FL)。
- 单击 MAXScript 项字段(3ds Max 窗口左下角的白色框),按 Ctrl+V 以粘贴代码行,然后按 Enter 键。
- 在
“运动”面板
“PRS 参数”卷展栏中,确保“旋转”按钮处于活动状态,然后在“旋转列表”卷展栏上,验证是否已将新的子控制器(总共应该有三个)添加到旋转列表中。
- 重复步骤 7 以添加第四个旋转子控制器。您在本教程中稍后将需要此控制器。
现在左前轮应具有四条 Euler XYZ 轨迹。
-
选择另一个车轮并重复步骤 7 至 9,直到全部四个车轮在其各自旋转列表中均具有四条 Euler XYZ 轨迹。
在世界 Y 坐标中旋转车轮:
- 选择“底盘”并右键单击,然后从四元菜单中选择“连线参数”。
- 从菜单中选择“变换”
“位置”
(第二个)“位置 XYZ”
“Y 位置”。
- 单击左前轮 (Wheel-FL)。
- 从菜单中选择“变换”
“旋转”
(第三个)“Euler XYZ”
“Z 轴旋转”。
- 在“参数关联”对话框上,单击“控制方向”上的向右箭头以确保 Chassis Y 位置控制 Wheel-FL Z 轴旋转。
- 在右侧的“表达式”面板上,键入 /13,然后单击“连接”。
左侧车轮的表达式应为 Y_Position/13
- 单击“连接”。
- 对其他三个车轮的每个车轮重复步骤 2 至 7。
注: 右侧车轮的表达式应为 -Y_Position/13。
-
关闭“参数关联”对话框。
- 在“顶”视口中,
旋转汽车以便它不水平或垂直指向。
- 在主工具栏上,单击
(选择并移动),然后将坐标系设置为“局部”。
- 如果需要,请调整“透视”视口,以便可以看到汽车的侧面。
- 沿汽车的局部 X 轴移动汽车。请注意车轮是如何正确旋转的。
- 在“顶”视口中,将汽车旋转到前保险杠指向左侧为止。
- 将文件另存为 mycar_rig_03.max。
在路径约束下旋转车轮:
在前面的过程中,您学会了如何在世界 X 和 Y 空间中添加控制器使车轮旋转以行驶任意距离。因此,当您沿任意方向在场景中手动移动汽车时,车轮都将正确旋转。
不过,您通常要通过将汽车放在使用“路径”约束预定义的路径上来设置汽车的动画部分。此类型的动画需要不同的表达式。
此新的表达式使用您前面使用过的相同公式(距离除以半径),不过尽管车轮的半径保持不变,但行驶距离的计算方式却不同。
- 从上一步骤中继续或
打开文件
car_rig_03.max
。
- 从主菜单
“选择集”列表中,然后选择“汽车路径”。
将显示一条警告消息。
- 单击“是”以显示您将用于设置汽车动画的路径。
- 从主菜单中,选择“创建”
“辅助对象”
“点”。
- 在“参数”卷展栏上,启用“长方体”并将“大小”设置为 100.0。
这将增加辅助对象 Gizmo 的大小并使其在场景中更易于选择。
注: 许多动画师使用“虚拟对象”辅助对象而不是“点”。使用点辅助对象的优点在于您可以调整其大小而不必缩放它。缩放层次结构中的辅助对象会影响其子对象:您通常想要避免此效果。
- 在“顶”视口中,单击汽车附近的一个点来放置点辅助对象。
- 在“点”辅助对象仍处于选中状态的情况下,在主工具栏上单击
(对齐),然后在任意视口中单击“底盘”对象。
- 在“对齐当前选择”对话框
“对齐位置”组,确保 X 位置和 Y 位置处于启用状态,而 Z 位置则处于禁用状态。
- 在“当前对象”和“目标对象”组中,确保选中“轴点”,然后单击“确定”。
- 在“前”视口中,将点辅助对象沿其 X 轴向右移动,直至其刚好移动至汽车后轴的左侧。

移至后轴左侧的点辅助对象
您指定的点辅助对象位置在前轮转动时将成为汽车的轴点。
- 在“命令”面板
“名称和颜色”卷展栏上,重命名辅助对象 Dummy_CAR。
- 在任意视口中选择“底盘”。
- 在主工具栏上,单击
(选择并链接),然后在“前”视口中,单击“底盘”并将其拖动至“点”辅助对象。这使得车身成为点辅助对象的子对象。
- 在主工具栏上,单击
(选择对象)以退出链接模式。
- 从主工具栏“选择集”列表中,选择 Garage_All。单击“是”退出警告并取消隐藏场景几何体的其余部分。
- 在“顶”视口中,使用
(最大化显示)查看整个停车场。
- 在“透视”视口中,单击“透视”标签,然后从菜单中选择“摄影机”
“Camera_Wall-E”。
通过将虚拟对象约束至某个路径来设置其动画:
- 在任意视口中,选择 Dummy_CAR 辅助对象。
- 从主菜单中,选择“动画”
“约束”
“路径约束”。
- 在“顶”视口中,单击绿色路径 (CarPath)。
辅助对象和链接的汽车将重新定位在该路径的起始处。
注: 作为替代方案,您也可以将此汽车直接约束到路径。然而,在此情况下,最好约束作为此汽车父对象的辅助对象,这样您可以保持对汽车行为的额外控制(如在急转弯周围定义打滑)。
该路径是 NURBS 曲线。
提示: 当使用 NURBS 曲线作为动画路径时,将提供比普通样条线更平滑的“行驶”。
- 移动动画。
在整个动画期间汽车方向保持不变。
- 在
“运动”面板
“路径参数”卷展栏
“路径选项”组中,启用“跟随”。
- 向下滚动以显示“轴”组并启用“翻转”。
“翻转”选项可防止汽车反向行驶。
- 再次拖动动画。
汽车将在路径上指向正确方向,但车轮却不再旋转。这是因为您以前编写的用来定义车轮旋转的表达式不再适用。汽车的行驶距离取决于在世界坐标系中的 X 和 Y 位移。位移现在与路径长度及汽车行驶路径的百分比有关。必须添加反映此更改的关联。
将车轮旋转与路径连线起来:
- 在任意视口中,选择动画路径 (CarPath),然后转至
“工具”面板。
- 单击“测量”,然后在“图形”组中,记下路径长度。
- 选择并右键单击点辅助对象,然后从菜单中选择“连线参数”。
- 从菜单中选择“变换”
“位置”
“路径约束”
“百分比”。
- 单击其中一个车轮,然后选择“变换”
“旋转”
(第四个)“Euler 旋转”
“Z 轴旋转”。
- 在“参数关联”对话框上,将控制方向设置为右,这样将使用“百分比”参数控制车轮旋转。
- 在右侧“表达式”面板上,键入 (2365*Percent)/13。
注: 值 2365 为您先前测量的动画路径的长度。乘以百分比变量后,将计算出汽车在某一时间内的任意给定时刻沿路径行驶的距离。除以车轮半径 (13) 后,将得出车轮需旋转的圈数。
- 单击“连接”。
- 拖动动画查看车轮旋转。
- 要更好地查看动画,请单击
(时间配置)并在“时间配置”对话框
“时间显示”组中,选择“FRAME:TICKS”。
- 重复步骤 3 至 8 以将点辅助对象链接到其余三个车轮中的每个车轮。
请记住向模型右侧车轮的表达式添加减号 (-) 运算符,以便这些车轮不会反方向旋转。
- 将文件另存为 mycar_rig_04.max。