装配手指弯曲

可以通过各种方式装配角色的手部。本教程将介绍如何装配手部,以便可以分别弯曲各个手指,并为手部创建可信的动画。

手部可以实现许多复杂的运动,在设置需要适应各种运动的手部装备时,一定要加以注意。本教程使用一种脚本,该脚本除提供内置工具外,还提供用于创建自定义属性并为其设置动画的其他选项。

本教程还使用修改器脚本,以便自定义属性可以保存在修改器中,而不必以对象的基础级别保存。这样,可以存储自定义属性的预设值,以便在动画过程中可以容易地随时反复使用手部姿势。

虽然没有脚本的帮助也可以装配手部,但如果使用本教程中的脚本,则可以更快、更容易地获得最终结果。通过使用 MAXScript 工具装配角色,可以提供其他选项,同时生成更适合用户使用的角色,供动画师使用。

安装自定义修改器:

本教程将从安装自定义修改器开始。

  1. 将文件 PEN_Attribute_Holder_2.ms 复制到 3dsmax8\scripts\startup 文件夹。

    将 PEN 属性固定器 2 脚本化修改器设计为为自定义属性的固定器,为动画师提供扩展工具集。对于手部制作来说,该修改器非常有用,因为它可以存储自定义属性的预设值,并通过保存、加载和合并功能,与其他 PEN 属性固定器 2 修改器共享。使用该修改器还可以对修改器应用自定义属性,而不必以对象的基础级别应用自定义属性。在本课程中,将学习如何使用此修改器。

  2. 如果 3ds Max 正在运行,则退出程序。

  3. 启动 3ds Max。

    因为脚本在启动文件夹中,所以在启动 3ds Max 时它会自动加载。接下来,将检查脚本是否已正确安装。

  4. 在任意视口中创建一个球体。

  5. 在“修改”面板上,在修改器列表中查找 PEN_Attribute_Holder_2 修改器。

    如果该修改器没有在列表中出现,检查脚本是否在正确的文件夹中,然后重新启动 3ds Max。

将该修改器添加到控制对象:

  1. 打开 \tutorials\character_animation\character_rigging 文件夹中的文件 tut_handrig_start.max

    此文件中包含一个名为 Gonzo 的角色。除手部外,已经对他全身进行了装配。Gonzo 只有两个手指和一个拇指。对此类手部使用的方法可以扩展到用于包含两个以上手指的手部。

  2. 隐藏除右手骨骼和右手控制对象以外的所有对象。控制对象是包含“Hand”一词的图形。

  3. 选择名称为 Gonzo_CNT_Rhand 的右手控制对象。

  4. 对控制对象应用修改器 PEN_Attribute_Holder_2。

    为了进行装配,将角色手部的手指称为食指、小指和拇指。除了手指数目较少外,该手部的使用很像人类的手部。为了最充分了解装备的工作原理,可以将旋转限制与您自己的手进行比较,看一下您自己的食指、小指和拇指。

    食指有三个关节。基础关节有两个旋转轴,上下和左右。中间关节和末端关节只有一个旋转轴。小指的关节也非常相似,但是其基础关节开始旋转的位置在手部以内较远的位置。

    拇指有可能的运动的最复杂组合。其基础关节有三个旋转轴,这样拇指的运动范围比其他手指要大。拇指的另外两个关节均只有一个旋转轴。

    若要创建一个可以适应手部大多数运动范围的界面,将需要两个微调器用于食指的旋转,三个微调器用于小指的旋转,一个微调器用于张开食指和小指,三个微调器用于拇指的运动。

通过运行脚本创建一个界面:

  1. 选择控制对象 Gonzo_CNT_Rhand

  2. 选择“MAXScript”菜单 >“打开脚本”,然后打开 handDef.ms

  3. 在 MAXScript 窗口上,选择“文件”菜单 >“另存为”,将文件另存为 my_handDef.ms

  4. 在 MAXScript 窗口上,选择“文件”菜单 >“全部求值”。

    此操作将为称作 Index 01 的 PEN_Attribute_Holder_2 修改器添加自定义属性。

    将需要编辑此脚本,以为该修改器再添加八个自定义属性。

编辑脚本:

  1. 在 MAXScript 窗口中浏览该脚本。

    第一个函数 fn getDefFn 不需要编辑。该函数用于在添加了自定义属性并希望将其更新时,获取该自定义属性。此函数只返回任何选定对象的第一个修改器上包含“Hand Controls”名称的定义。

    脚本的第二部分是将编辑并添加到对象的属性定义。

  2. 在脚本中查找以下行:

    parameters mainP rollout:mainR
    (
    Index01 type:#float ui:index01
    (
    )
    rollout mainR "Hand Controls"
    	 spinner index01 "Index 01:"range:[-30,100,0] fieldWidth:50
    (
    )

    参数部分添加可以在卷展栏上使用的变量。卷展栏部分创建包含参数 Index 01 的卷展栏。若要添加更多的微调器,将编辑脚本的此部分。对于每个微调器,在 parameters mainP rollout:mainRrollout mainR "Hand Controls" 下添加一行。

  3. Index01 type:#float ui:index01 一行复制并粘贴到下一行。

  4. Index01 更改为 Index02,将 ui:index01 更改为 ui:index02

  5. spinner index01 “Index 01:”range:[-30,100,0] fieldWidth:50 一行复制并粘贴到下一行。

  6. index01 更改为 index02,将 Index 01 更改为 Index 02

  7. 删除 --redefine:handDef 一行开头的两个连字符。此操作将删除注释标记,允许对此行求值。在第一次运行该脚本时,应对此行进行注释,每当再次运行该脚本时,应运行此行。

  8. 选择“文件”菜单 >“全部求值”。

    现在,“修改”面板包含两个微调器 Index 01 和 Index 02。

添加其他自定义属性:

  1. Index02 type:#float ui:index02 一行复制并粘贴七次。

  2. 对于以下列出的每个自定义属性,将 Index 02 更改为自定义属性的名称。在输入新的变量名时,使用的大小写和空格应与要替换的变量相同。例如,对于列出的第一个变量,用 baby01 替换 index02,用 Baby01 替换 Index02,用 Baby 01 替换 Index 02

    • Baby 01

    • Baby 02

    • Thumb 01

    • Thumb 02

    • Thumb Roll

    • Cup

    • Splay

  3. spinner index02 “Index 02:”range:[-30,100,0] fieldWidth:50 一行复制并粘贴 7 次。

  4. 对于上面列出的每个自定义属性,将 Index 02 更改为自定义属性的名称,空格和大小写应匹配。

    此部分脚本看起来应类似与以下代码:

    parameters mainP rollout:mainR
     (
    Index01 type:#float ui:Index01
    Index02 type:#float ui:Index0
    Baby01 type:#float ui:Baby01
    Baby02 type:#float ui:Baby02
    Thumb01 type:#float ui:Thumb01
    Thumb02 type:#float ui:Thumb02
    ThumbRoll type:#float ui:ThumbRoll
    Cup type:#float ui:Cup
    Splay type:#float ui:Splay	
    )
    rollout mainR Hand Controls								
    (
    spinner index01 “Index 01:”range:[-30,100,0] fieldWidth:50
    spinner index02 “Index 02:”range:[-30,100,0] fieldWidth:50
    spinner Baby01 “Baby 01:”range:[-30,100,0] fieldWidth:50
    spinner Baby02 “Baby 02:”range:[-30,100,0] fieldWidth:50
    spinner Thumb01 “Thumb 01:”range:[-30,100,0] fieldWidth:50
    spinner Thumb02 “Thumb 02:”range:[-30,100,0] fieldWidth:50
    spinner ThumbRoll “ThumbRoll:”range:[-30,100,0] fieldWidth:50
    spinner Cup “Cup:”range:[-30,100,0] fieldWidth:50
    spinner Splay “Splay:”range:[-30,100,0] fieldWidth:50
    ) 
  5. 在 MAXScript 窗口上,选择“文件”菜单 >“全部求值”。

    “修改”面板上将出现这九个属性。

  6. 如果在使脚本生效时遇到困难,可以加载并运行 handDefFinal.ms 脚本。

    提示:使用此脚本,所有自定义属性都有相同的值范围 -30 到 100。此范围适合手指弯曲,但是对于 Splay(张开手指)等其他动作则过大。不必花时间计算每个自定义属性的准确范围,将使用表达式限制某些骨骼轴的旋转。例如,在关联属性时,可以将自定义属性乘以 0.5 或 0.4,以减小传递给骨骼旋转轴的值。此方法更加灵活,因为可以很容易地试用不同的表达式为角色的手部获取正确的关联。在此课程后面关联自定义属性时,将看到此方法的工作原理。

  7. 在 MAXScript 窗口上,选择“文件”菜单 >“另存为”,将脚本另存为 my_handDefFinal.ms

    可以将此脚本进行更改以供其他项目使用。第一次运行该脚本时,一定要在 redefine:handDef 一行的前面输入两个连字符,注释掉该行。

    使用脚本创建自定义属性时,可以使用任意 MAXScript 命令和界面项。这在为角色设置复杂控制时提供了更多灵活性,随后可以使用内置的“参数编辑器”工具来实现。

  8. 关闭 MAXScript 窗口。

  9. 将场景另存为 my_handrig_02.max

    在文件 tut_handrig_02.max 中可以找到此场景的一个版本。

将骨骼的旋转归零:

列表控制器是对变换进行分层的一种方法。列表控制器将列表中的所有控制器累加在一起,为对象创建最终的变换。

将列表控制器应用于对象时,列表上的第一个控制器存储变换的初始值。然后可以使用随后的控制器与变换值相加。

例如,应用于旋转变换的第一个控制器包含对象的原始旋转值,例如在为确定对象姿势时应用的旋转。第二个控制器从值 [0,0,0] 开始。此控制器将包含任何与原始姿势不同的动画。

将列表控制器应用于骨骼时,第二个控制器提供了一组值,您可以将参数与这组值关联,而不会影响当前的姿势。若要了解关于列表控制器的详细信息,请学习角色装配简介教程中的使用列表控制器一课。

可以使用“运动”面板上的命令手动为每块骨骼添加列表控制器,但是使用脚本执行此任务速度会更快。

  1. 选择手部的所有骨骼。

  2. 选择“MAXScript”菜单 >“MAXScript 侦听器”,打开侦听器。

    上一次运行脚本的结果将出现在窗口中。接下来,您将输入三行脚本,为每块选定的骨骼设置“旋转列表”控制器。

  3. 在侦听器中输入以下行,然后按 Enter 键。

    for x in selection do (x.rotation.controller = rotation_list())

    此行将“旋转列表”控制器应用于所有选定对象的旋转变换。如果该行正确执行,下一行上将出现“OK”一词。

  4. 在侦听器中输入以下行,然后按 Enter 键。

    for x in selection do (x.rotation.controller.available.controller = euler_xyz())

    此行将生成的可用控制器更改为所有选定对象的 Euler XYZ 控制器。

  5. 在侦听器中输入以下行,然后按 Enter 键。

    for x in selection do (x.rotation.controller.setActive 2)

    此行使第二个 Euler XYZ 控制器成为所有选定对象的活动控制器。这意味着对象的任何动画旋转将添加到该控制器。

  6. 关闭侦听器窗口。

    如果要检查脚本行如何影响骨骼,选择一块骨骼,然后转到“运动”面板。在“指定控制器”卷展栏中,可以看到“旋转列表”控制器已添加到骨骼,下面包含两个控制器,均为 Euler XYZ 控制器。第二个 Euler XYZ 控制器当前处于激活状态。

  7. 将场景另存为 my_handrig_03.max

    在文件 tut_handrig_03.max 中可以找到此场景的一个版本。

关联手指弯曲:

现在将骨骼的旋转值与自定义属性关联。关联会连接场景中的两个参数,以便可以使用一个参数的值控制另一个参数的值。

注意:如果不熟悉该过程或参数关联,请学习角色装配简介教程中的关联自定义属性一课。

当装配角色时,通常需要一段时间确定每个自定义属性最佳的旋转轴。为实现此目的,可以将“参考坐标系”更改为“局部”,然后旋转每块手指骨骼,确定受每个手部姿势影响的轴。

使用 Gonzo 角色后,当围绕 Y 轴旋转时,手指向手掌方向弯曲,围绕 Z 轴旋转时,手指张开。

注意:不需要对 Gonzo 角色执行这些测试;本课程中为您提供了旋转关联。不过,如果愿意,也可以这样做。如果旋转任意骨骼来检查旋转轴,一定要撤消任何创建的旋转,然后再继续此课程,或重新加载 my_handrig_03.maxtut_handrig_03.max

将先关联食指骨骼的旋转。您将使用三个微调器来控制食指:Index 01、Index 02 和 Splay。在每个例子中,可将骨骼的第二个 Euler XYZ 控制器的一个轴与手部控制的一个自定义属性关联。

  1. 选择食指上的基础骨骼 Gonzo_Bone_RIndex02

  2. 右键单击该骨骼,然后从四元菜单中选择“关联参数”。从弹出式菜单中选择“变换”>“旋转”>“Euler_XYZ”(列出的第二项)>“Y 轴旋转”。

  3. 单击 Gonzo_CNT_Rhand(控制对象),然后选择“修改对象”>“Pen_Attribute_Holder 2”>“Hand Controls”>“Index01”。

    “参数关联”对话框的左侧显示骨骼的 Y 轴旋转,右侧显示自定义属性。

  4. 在“参数关联”对话框上,将左侧的 Index01 替换为 degtorad(Index01)

    此表达式将 Index01 由度转换为弧度,弧度是对象用于计算旋转的角度单位。关于 degtorad 函数的用法信息,请参见角色装配简介教程中的关联自定义属性一课。

  5. 单击对话框中心的向左箭头,使自定义属性控制骨骼的 Y 轴旋转,然后单击“连接”。关闭“参数关联”对话框。

  6. 若要测试连接,选择 Gonzo_CNT_Rhand 并转到“修改”面板。更改微调器 Index 01 的值。

    在更改微调器的值时,食指上的基础骨骼应旋转。

    现在将关联食指的其他部分和小指骨骼,以进行弯曲运动。对于指导您关联参数的所有步骤,一定要从骨骼 >“变换”>“旋转”>“Euler_XYZ”(列出的第二项)> 指定的旋转值关联到“Gonzo_CNT_Rhand”>“修改对象”>“Pen_Attribute_Holder 2”>“Hand Controls”> 指定的自定义属性。在每个例子中,将 degtorad 函数添加到“参数关联”对话框左侧的表达式,然后单击向左箭头,并单击“连接”。

  7. 将 Gonzo_Bone_RIndex03 的 Y 轴旋转关联到 Index02。

  8. 将 Gonzo_Bone_RIndex04 的 Y 轴旋转关联到 Index02。

    现在微调器 Index02 控制食指上最后两个关节的旋转。可以创建两个微调器,用于控制手指的最后两个关节,但是通常没有必要这样做。

  9. 对小指骨骼重复上述步骤,将 Gonzo_Bone_RBaby02 的 Y 轴旋转关联到自定义属性 Baby01,将 Gonzo_Bone_RBaby03 和 Gonzo_Bone_RBaby04 的 Y 轴旋转关联到 Baby02。

    通过选择 Gonzo_CNT_Rhand 并更改 Index 01、Index 02、Baby 01 和 Baby 02 的微调器值来测试关联。将所有微调器重置为 0,然后再继续操作。

  10. 将场景另存为 my_handrig_04.max

    在文件 tut_handrig_04.max 中可以找到此场景的一个版本。

关联手指张开:

  1. 将 Gonzo_Bone_RIndex02 的 Z 轴旋转关联到“Splay”参数。将表达式更改为 degToRad(Splay * 0.5)

    此操作将“Splay”参数的旋转值减小一半,然后再传递给小指基础骨骼。使用表达式减小传递给骨骼的值与将范围缩小到 -15 到 50(而不是 -30 到 100)类似。使用表达式减小传递给骨骼的值比明确设置范围要更加灵活,因为如果发现需要手指张开更大的角度,可以很容易地将倍增 0.5 更改为其他值。

  2. 将 Gonzo_Bone_RBaby02 的 Z 轴旋转关联到“Splay”参数。将表达式更改为 -degToRad(Splay * 0.5)

    在表达式前面加上负号将使小指沿着与食指相反的方向旋转。

  3. 通过选择 Gonzo_CNT_Rhand 并更改“Splay”值来测试关联。“Splay”增大时,食指和小指应向相互远离的方向旋转。

  4. 将该微调器重置为 0,然后再继续操作。

关联小指弯成杯状的动作:

使手弯成杯状以便抓住物体时,拇指向手掌旋转,小指下面的手部骨骼稍微旋转,使手掌形成杯状。在此步骤中,将小指的手部骨骼关联到“Cup”微调器,因此当增大“Cup”参数值,手部的此部分可以完成杯状动作。

  1. 选择小指下面的手部骨骼 Gonzo_Bone_RBaby01

  2. 将 Gonzo_Bone_RBaby01 的 X 轴旋转关联到“Cup”,并将表达式更改为 degToRad(Cup * 0.2)

    提示:如果保持“参数关联”对话框打开,可以通过高亮显示左侧的“Y 轴旋转”列表(而不必浏览关联弹出式菜单),来执行下一步。

  3. 将 Gonzo_Bone_RBaby01 的 Y 轴旋转关联到“Cup”,并将表达式更改为 degToRad(Cup * 0.4)

  4. 通过选择 Gonzo_CNT_Rhand 并更改“Cup”值来测试关联。增大“Cup”值时,小指应向手掌内稍微旋转。

  5. 将该微调器重置为 0,然后再继续操作。

  6. 将场景另存为 my_handrig_05.max

    在文件 tut_handrig_05.max 中可以找到此场景的一个版本。

关联拇指控制:

手掌中的拇指骨骼运动范围最大,移动的方式也最复杂。此关节几乎可以伸展到腕部,并且可以围绕所有三个旋转轴进行旋转。因此,拇指可以向手掌旋转以便抓住物体,或向外移动,使手可以完全平展开。

为了实现此运动范围,将关联手掌中的拇指骨骼,使其可以围绕所有三个轴进行旋转。其他拇指骨骼只能围绕 Y 轴旋转。

总共将使用三个不同的自定义属性关联拇指:Thumb 01、Thumb 02 和 ThumbRoll。Thumb 01 将保持手部内拇指骨骼的 Y 轴旋转,而 Thumb 02 将保持最后两块骨骼的 Y 轴旋转。ThumbRoll 自定义属性将保持手部内拇指骨骼的 X 轴旋转和 Z 轴旋转。

  1. 使用表达式 degtorad(Thumb02) 将 Gonzo_Bone_ RThumb03 的 Y 轴旋转关联到 Thumb02。

  2. 使用表达式 degtorad(Thumb02) 将 Gonzo_Bone_ RThumb04 的 Y 轴旋转关联到 Thumb02。

  3. 选择手掌内的拇指骨骼 Gonzo_Bone_ RThumb01

  4. 将 Gonzo_Bone_ RThumb01 的 Y 轴旋转关联到 Thumb01。确保将左下角输入区域中的表达式更改为 degToRad(Thumb01),然后再连接关联。

    可以保持“参数关联”对话框打开,以关联 Gonzo_Bone_ RThumb01 上的其他轴,因为此时这些轴全部显示在“参数关联”对话框上。

  5. 使用表达式 -degToRad(ThumbRoll) 将 Gonzo_Bone_ RThumb01 的 X 轴旋转关联到 ThumbRoll。

    表达式前面的负号将使 X 轴旋转反转到相反方向。

  6. 使用表达式 degtorad(ThumbRoll) 将 Gonzo_Bone_ RThumb01 的 Z 轴旋转关联到 ThumbRoll。

    Gonzo_Bone_ RThumb02 不需要自身进行任何旋转,因此它不会关联到任何自定义属性。只是跟随 Gonzo_Bone_RThumb01 的旋转。

  7. 通过选择 Gonzo_CNT_Rhand 并更改“ThumbRoll”值来测试关联。拇指应围绕其 X 轴和 Z 轴旋转。

  8. 将该微调器重置为 0,然后再继续操作。

  9. 将场景另存为 my_handrig_06.max

    在文件 tut_handrig_06.max 中可以找到此场景的一个版本。

更改拇指的旋转计算顺序:

如果增大 ThumbRoll 和 Thumb01,您会发现,当这两个值增大到超过 30 或 40 时旋转将开始变得不自然。

对于 Euler XYZ 控制器,先计算围绕 X 轴的旋转。然后再按照顺序加上 Y 轴旋转和 Z 轴旋转。如果先计算 Y 轴旋转,基础拇指关节的旋转效果会更好。这样可以确保基础拇指关节始终以可预料的方式向手掌弯曲。

“ThumbRoll”参数只影响 Z 轴旋转和 X 轴旋转。如果 X 轴旋转(将拇指向下方远离手部的方向摆动)在 Z 轴之前进行计算,此参数的效果会更加自然。

通过在“运动”面板上更改参数,可以更改 Euler XYZ 控制器计算轴旋转的顺序。在本例中,将先计算基础拇指关节的 Y 轴旋转,然后再分别计算 Z 轴和 X 轴。

  1. 选择 Gonzo_Bone_ RThumb01

  2. 转到“运动”面板。

  3. 在“PRS 参数”卷展栏上,单击卷展栏底部的“旋转”按钮。

  4. 在“Euler 参数”卷展栏中,将“轴顺序”更改为“YZX”。

  5. 通过选择 Gonzo_CNT_Rhand 并增大 ThumbRoll 和 Thumb01 的值,来测试新的轴计算顺序。拇指的旋转应更加自然。

  6. 将该微调器重置为 0,然后再继续操作。

  7. 将场景另存为 my_handrig_07.max

    在文件 tut_handrig_07.max 中可以找到此场景的一个版本。

创建点指姿势:

使用当前的装备可以使手部创建许多姿势,例如点指、抓取和握拳。

不必在每次要为手部设置动画时都为各个自定义属性设置动画,可以为每个常用的手部姿势设置自定义属性。在选择预设姿势时,相应的自定义属性会自动更改。

首先设置一个点指姿势。

  1. 选择 Gonzo_CNT_Rhand

  2. 在“修改”面板的“Hand Controls”卷展栏中,将自定义属性设置为以下值:

    • Index 01: -17

    • Index 02: -26

    • Baby 01: 68

    • Baby 02: 60

    • Thumb 01: 29

    • Thumb 02: 1

    • ThumbRoll: 35

    • Cup: 54

    • Splay: 15

    手部将采取点指姿势。

  3. 在“预设”卷展栏的“名称”字段中,输入 Point

  4. 单击“添加”按钮。

    “Point”名称现在出现在“预设”下拉列表中。

    若要测试预设如何工作,可将微调器重置为零,然后应用“Point”预设。

  5. 单击“全部重置”按钮。

    此操作将所有微调器重置为 0 值。

  6. 在“预设”下拉列表上,选择“Point”。

    卷展栏上的值会更改,手部将捕捉到预设的姿势。

创建握拳姿势:

  1. 使用以下值创建握拳姿势:

    • Index 01: 79

    • Index 02: 59

    • Baby 01: 67

    • Baby 02: 57

    • Thumb 01: -18

    • Thumb 02: 12

    • ThumbRoll: 55

    • Cup: 54

    • Splay: 15

  2. 在“预设”卷展栏的“名称”字段中,输入 Fist

    “预设”下拉列表中现在有两个预设值。这两个预设值使用 MAX 文件进行存储。

  3. 单击“全部重置”。

  4. 将场景另存为 my_handrig_08.max

    在文件 tut_handrig_08.max 中可以找到此场景的一个版本。

为手部设置动画:

  1. 取消隐藏场景中的所有对象。

    此操作会显示 Gonzo 的蒙皮,因此可以看到手部上的蒙皮如何受骨骼的影响。

  2. 转至第 10 帧。

  3. 启用“自动关键点”。

  4. 选择右手控制对象 Gonzo_CNT_Rhand

  5. 从“预设”下拉菜单中选择“Fist”。

  6. 转至第 20 帧。

  7. 从“预设”下拉菜单中选择“Point”。

  8. 来回滑动时间滑块。

    将播放手部动画,从普通姿势变为握拳,再变为点指姿势。

  9. 禁用“自动关键点”。

  10. 将场景另存为 my_handrig_09.max

    在文件 tut_handrig_09.max 中可以找到此场景的一个版本。

装配左手:

如果愿意,可以使用同样的方式装配左手。

  1. 如果要装配现有骨骼,可以将 PEN_Attribute_Holder 2 修改器从右手控制复制到左手控制,从而节省创建自定义属性的时间。然后可以分别装配每个参数。

  2. 也可以单击“预设”卷展栏上的“保存”,保存预设。可以将预设保存为 CPS 文件,然后选择左手控制,使用“加载”按钮将预设加载到左手。

    另一种方法是将右手手指骨骼和右手控制对象复制并镜像到躯干的另一侧。由于这种方法也将复制自定义属性及其关联,因此无须重新关联所有参数。但是必须重命名骨骼,以与躯干左侧的其他骨骼相匹配,然后将这些骨骼添加到 Gonzo 的“蒙皮”修改器。

    在文件 tut_handrig_10.max 中可以找到两只手都进行了装配的场景。

小结

在本教程中,学习了许多用于专业制作的角色装备的创建方法。现在可以使这些工具适应您自己的角色,并创建自定义的装备。