返回介绍

3ds Max 帮助

3ds Max 帮助归档

两足动物群组

发布于 2022-07-23 00:47:23 字数 13107 浏览 0 评论 0 收藏 0

两足动物群组是特性复杂的有腿动物运动所必需的群组模拟的特例。Biped 运动显示了复杂的动态处理和准确的 IK 脚部约束。例如,通过代理运动参数计算得到的光滑曲线轨迹适于鸟类、鱼类、昆虫和蛇。这些参数不够丰富,无法用于制作 Biped 微型结构的动画。因此,群组的几项功能主要用于满足 Biped 的特殊要求。

为了生成必需的微妙差异级别,动画运动剪辑可以成为 Biped 整体运动的基础。换而言之,在制作 Biped/群组的动画期间,代理不会对 Biped 的运动产生任何影响。这些代理只会使用“运动流”图形中的剪辑设置所要实现的目标。使用这种所谓的运动合成方法,动画程序可以精确地控制运动中的各个细节。具体方法是,使用手调动画或运动捕获,生成描述群组中成员行为方式的系列剪辑。

例如,如果希望设置这样的动画:一群沿城市街道跑动的马拉松运动员,则需要下列各种动作的运动剪辑:行走、跑动、慢跑、休息、喝水以及喝彩等。实际上,您期望在马拉松比赛中看到的各种运动都可以用剪辑来表示。但是,运动并非仅仅是收集的剪辑片断。另外,必须考虑运动的排序方式。哪些运动变换可能来自指定的运动剪辑呢?

为了更好地了解这个过程,请研究这个主题,然后按照步骤在群组模拟中使用 Biped 执行操作。

运动流网络和可能的脚本

Biped 的运动流功能可以提供一种机制,用于定义各个运动如何共同适于流体动画。事实上,运动流网络说明了其它运动之后可以追随的运动。一旦定义了运动流网络,网络中不同路径之后可以跟各种动画动作。在“Biped”中,网络中的路径称作运动流脚本。

例如,下面显示的是一个运动流网络。

这是一个相对简单的运动网络,因为各个角色只能在 90 度角的左侧或右侧(walk_L90walk_R90)开始、停止和转动,然后发生倒转 (walk_180)。但是,要想获得更加自然的群组交互,建议对运动流网络进行扩展,使其包括更加短的微调变量,如以 45 度角的增量旋转、向不同方向移动的同时面对相同的方向、闲逛运动以及以不同速度移动。“Biped 运动库”拥有剪辑的综合列表,可供您测试时使用。

提示通过对直线运动剪辑应用 Biped 的足迹弯曲操作,可以创建略微向左右弯曲的运动剪辑。如果剪辑是捕获的运动,则应该在导入期间使用足迹提取,以备弯曲操作使用。添加略微转动的剪辑时,如果模拟 Biped 群组,则会使方向发生细微的变动,以便更加精确地实现目标位置。

切实可行的运动流图形包括微调的变换。检查运动流变换的最佳方法是,采用构建图形的方式构建测试脚本:向图形添加剪辑,然后添加所需的变换,并优化变换。优化变换与起始点的作用一样令人满意。通常,优化变换会生成最光滑的变换。其次,制作使用变换的新脚本,并使用该脚本调整运动流,直到双脚不会滑动为止。

通过“共享运动流网络”功能,很多 Biped 可以使用单个运动流网络。因此,无需消耗计算机的内存,即可扩展运动流网络。

代理定向行为目标

您可以为 Biped 提供行为目标,方法是使其与群组系统中的代理关联,然后为该代理指定行为。

例如,在上面所示的示例中,每个 Biped 代理的行为目标是:

  • 使用“查找”行为向球体移动。
  • 使用“避免”行为避免相互碰撞。

在模拟 Biped 群组过程中,character studio 尝试计算群组中每个 Biped 成员的最佳运动流脚本,该脚本可以满足与其关联的代理的行为目标。换而言之:

  • Biped 的群组代理可以定义 Biped 的行为目标。
  • 实现这些目标的可能运动是由 Biped 的运动流网络定义的。
  • 群组对象的求解操作可以计算脚本或运动流网络中的路径。该操作最能满足 Biped 代理的目标。

因此,在该示例中,模拟将始终会选择网络中最适合的走动剪辑。该剪辑可以将 Biped 的代理定向到球体。随着群组求解操作对脚本的计算,便应运而生了每个 Biped 的脚本。这就好像是一个实时的“游戏引擎”。在其中,群组解算器为指定 Biped 选择的下一个最佳剪辑会受到该 Biped 的活动剪辑的限制。

Biped 群组的回避、优先级和回溯

因为群组中的 Biped 之前始终是运动流脚本,所以对于各种 Biped,回避行为的工作方式不尽相同。与常见代理不同的是,Biped 代理只能沿着运动流脚本路径移动,所以,如果发生冲突,则 character studio 会回溯到当前脚本的上一个剪辑中,并查找另一个路径。如果存在复杂的群组交互,则计算时可能需要花费一些时间,因为一个回溯可能不够。此后,计算将会在指定的回溯剪辑中搜索所有的路径。如果失败,将会回溯到上一个剪辑,依此类推,直到找到合适的解决方法为止。

在本示例中,如果当前的 Biped 脚本是:

walk_start
walk 
walk_L90

且在 walk_L90 剪辑中遇到碰撞,则 Biped 将会回溯到 walk 剪辑的末尾处,然后尝试代替失败的左旋运动以试验不同的剪辑。如果失败,将会试验下一个最佳的选择,依此类推。

提示防止回溯过度时,在运动流网络中包含停止和闲逛运动有时是很有用的,因为停止一直是回避紧张情况下碰撞的有效方法。一般而言,速度和方向的变化越大,回溯功能找到解决方法的速度就越快。

为了便于通过计算机管理回溯,一次只能计算一个 Biped 的群组成员,其顺序同“优先级”卷展栏。为此,可以使用添加到动画中的每个后续 Biped,对群组的交互进行累积。换而言之,每个成员都要等待轮到自己计算完整动画。这样做可以回避已经在其之前计算的 Biped。接着,具有最低优先级的 Biped 一般会遇到最多的碰撞,因为它们必须回避具有较高优先级的所有 Biped。

为 Biped 群组准备角色

要创建 Biped 群组模拟,需要若干个 Biped。因为对 Biped 应用剪辑时,群组模拟包含每个 Biped 的腿部长度,所以,如果 Biped 的大小从一开始就是正确的,则模拟将会更加精确。

一个简单的工作流程应该是:

  • 在单个文件中,为场景创建或获取几个角色模型。
  • 通过 Physique 或其他方法(例如 3ds Max“蒙皮”修改器)为角色进行蒙皮。
  • 克隆角色并更改与每个角色有关的对象,如衣服或头发的颜色和角色的重量。请参见缩放角色
  • 为每个角色指定唯一的名称。使用这个名称,可以在一定程度上识别模拟中的角色。示例:BigMan02 和 LittleGirl03。请参见命名 Biped
  • 对于每个角色,禁用添加多边形的 Physique 上方的“网格平滑”修改器或其它修改器。
  • 隐藏角色模型,并使 Biped 可见。

通过这种设置,可以轻松地将角色合并到群组场景中。合并角色时,模型自身将会隐藏,进而会提高系统的性能。

为 Biped 群组准备运动

Biped 群组模拟所使用的剪辑可以从 3ds Max 附带的示例中加载、从运动捕获文件中导入或者从头创建。

创建 Biped 群组模拟时,各个剪辑之间变换的完整性在运动流网络中起着非常重要的作用。为单个 Biped 创建变换时,在创建完运动流脚本之后纠正各个变换并非是件难事。有了群组,完成模拟之后,必须为每个 Biped 执行的纠正转换是极其费时。对模拟进行求解之前,确保变换正确无误是更加切实可行的方法。

一种简化此过程的方法是设置所有运动,这样每个运动都将具有相同帧数的理想过渡,如 10 或 15 帧。然后,可以优化此长度的过渡,从而使所有或大多数过渡的效果达到完美。

要检查变换,可以使用图形中的几个变换为一个 Biped 创建简单的脚本。分别检查运动和工作的变换,直到它们正确为止。使用这种方法,可能无法捕捉到所有的错误变换,但可以捕捉到大部分错误变换。“错误”变换可能是应该为走动但是双脚跳跃或单脚跳跃的变换,或是变换过程中发生的其它意外更改。请参见自定义变换

在前几次对 Biped 群组进行求解之后,请重新检查错误的变换,以便了解是否在首次检查时有所遗漏。经过几次模拟之后,您很有可能找到所有或近乎全部的错误变换。

限制

经设计,群组系统的某些功能不能用于 Biped 的群组。如果将 Biped 与模拟结合使用,这些行为和参数不会对群组的运动产生任何影响。

  • 向量场
  • 回避行为中的预处理参数

步骤:在群组模拟中使用 Biped

下面一系列过程说明了执行下列操作的基本步骤:创建和保存运动流图形,为代理指定几个 Biped,然后在 Biped 之间共享运动流图形,使 character studio 可以根据指定给其代理的行为,为每个 Biped 自动创建单独的运动流脚本。

注意:这些步骤假设您知道如何使用足迹和关键帧方法制作 Biped 的动画,并将动画另存为 BIP 文件。为了准备使用“共享运动流”,必须创建和保存各种 Biped 运动,如起跑、走动、右转、左转、停止和等待。请参见加载和保存 BIP 动画

第一步是创建相应的运动流图形,然后将其保存到磁盘。

要创建共享的运动流,请执行下列操作:

  1. 添加 Biped,然后转到 “运动”面板。
  2. 在“Biped”卷展栏上,单击 (运动流模式)。
  3. 在“运动流”卷展栏上,单击 (显示图形)。
  4. 在“运动流图”工具栏上,单击 “创建多个剪辑”。

    此时,将会显示“打开”对话框。使用该对话框,可以从相同目录中选择任何数目的 BIP 文件,以便同时将其添加到运动流图形中。使用单击+Shift+单击(单击,然后使用 Shift+单击)可以选择几个连续的文件,而使用 Ctrl+单击可以选择非连续的文件。

  5. 选择希望 character studio 用来进行运动合成的 BIP 文件,然后单击“确定”按钮。

    此时,文件便作为剪辑添加到图形中。每个剪辑会自动命名在从其派生剪辑的文件之后。

    注意:为了获得最满意的结果,特别是使用其中以不同角度翻转 Biped 的模拟时,请尽可能多得使用不同的翻转剪辑。最少的设置包括位于 45、90、135 和 180 度角的各个左转和右转走动。

    然后,添加剪辑之间的变换,使 character studio 了解动作之间的因果关系。为了更好地进行控制,可以通过手动方式完成。但在进行初始测试时,可以让 character studio 自动添加和优化变换,以节省时间。

  6. 单击 (合成运动流图)。此时,将会使用每项运动的前面 30% 和后面 30% 创建变换。

    该图形此时会显示每个剪辑的左右指向箭头,以及从每个剪辑指向图形的箭头。如若需要,删除明显不属于的变换,如从停止和起跑剪辑到自身的变换。

    或者,可以使用 (创建过渡)来设置自定义图形。

  7. 优化变换。请参阅“变换优化”对话框

    对模拟求解时,群组会根据此图形为 Biped 自动生成运动流脚本。如果图形包含多个剪辑,在这种情况下,它会从指定为随机开始剪辑的一个或多个剪辑中选择脚本的开始剪辑。

    如果要在继续操作前检查变换的完整性,请立即执行此操作。请参见自定义变换

  8. 单击 (选择随机开始剪辑),然后单击某个剪辑。

    这样将指示 character studio 以此剪辑为起点启动脚本,并使用默认概率 100% 作为选择该剪辑的概率。

    如果要让各种 Biped 以不同剪辑开始,请在单击时按住 Ctrl 键,然后选择多个随机开始剪辑。如果对所有剪辑都使用默认的“随机开始概率”设置 100,则表示 character studio 将会为每个 Biped 的脚本随机选择这些剪辑来作为开始剪辑。

    要更改以特定剪辑开始的概率,右键单击剪辑,然后修改其“随机开始概率”设置。例如说要让每个 Biped 的脚本以下面三个剪辑之一开始:剪辑 A、B 和 C。剪辑 A 和剪辑 B 或 C 的选择频率一样,都是两次。在这种情况下,使用“随机开始剪辑”工具时,首先单击剪辑 A,然后使用 Ctrl+单击对剪辑 B 和 C 执行操作。其次,依次右键单击每个剪辑,将“随机开始概率”60 指定给剪辑 A,而将 30 指定给剪辑 B 和 C。

    注意:概率值是随意的;计算结果是比率。例如,80/40/40 或 20/10/10 值的结果相同。 注意:另外,将 MFE 文件加载到“共享运动流”对话框中之后,可以在“运动流”图形中设置和更改随机开始剪辑和开始概率,见该过程稍后部分所述。 注意:如果 Biped 已经存在运动流脚本,例如已经解算了群组模拟,character studio 可以对后续的解算在脚本中使用第一个剪辑。
  9. 在“运动流”卷展栏上,单击 (保存文件),并以 MFE 格式保存图形。

    在群组模拟中使用 Biped 的第二步是创建模拟。

要设置群组模拟,请执行下列操作:

  1. 重置 3ds Max。
  2. 使用与要创建的群组场景对应的行为,设置包含任何数目代理的群组模拟。请不要一开始就使用 Biped,只能使用代理粗略描述群组成员的运动。 提示首先从运动合成着手时,请使用大约有 8 个代理的小型群组。
  3. 对模拟进行求解,然后根据需要调整设置,以便获得所需的运动。
  4. 将 Biped 和角色合并到场景中,然后使用代理的“运动参数”卷展栏 Biped 组设置将每个代理与不同的 Biped 建立关联。

    必须选择 Biped 的重心 (COM) 对象(通常命名为 Bip0#),即将鼠标的光标放置在活动视口中 COM 之上时,它会变成十字准线。

  5. 为每个代理打开使用 Biped。 提示若要将任意数量的代理同时与 Biped 链接,请选择群组辅助对象,并单击“设置”卷展栏 (Biped/代理关联)。使用此对话框连接该对,然后为每个代理打开使用 Biped。请参见将对象链接到代理
  6. 对 Biped/代理进行设置,使其将随机开始剪辑用作第一个剪辑。通过“编辑多个代理”对话框,可以为多个代理同时设置此 Biped/代理。

要应用共享的运动流,请执行下列操作:

其次,使用“共享运动流”功能,将保存的运动流图形应用于 Biped。

  1. 选择任何 Biped,并转到 “运动”面板。
  2. 在“Biped”卷展栏上,单击 (运动流模式)。
  3. 在“运动流”卷展栏上,单击 (共享运动流)。
  4. 在“共享运动流”对话框中,单击“新建”按钮。

    此时,将会创建新的共享运动流,并为其指定默认的名称。您可以根据需要更改名称。

    再次,加载运动流文件。

  5. 单击“参数”组 “加载 .mfe”按钮,并使用“打开”对话框来加载运动流文件。通常,此文件是以前在过程中保存的文件。

    接着,指定要共享此运动流的 Biped。

  6. 在“参数”组中,单击“添加”按钮,然后使用“选择”对话框指定要共享运动流的 Biped。

    为方便起见,“选择”对话框只会显示场景中 Biped 的重心对象。

    单击“选择”按钮之后,Biped 会显示在该对话框中。该对话框位于“Biped 共享此运动流”下面的列表中。

  7. 要正确共享运动流,Biped 腿部的缩放比例必须相同。如果任何 Biped 的缩放比例与开始使用的 Biped 不同,则会显示一则警告。此后,单击警告框中的“确定”按钮时,比例错误的 Biped 便会这样记录在列表中。此时,可以在该列表中选择 Biped,然后单击“设置共享运动流比例”按钮,使其它 Biped 和该 Biped 的比例匹配。否则,可以单击其中一个“重置错误比例”按钮,重缩放比例错误的 Biped 或只是重缩放其腿部。请确保继续操作之前采取下列措施之一。

    在“共享运动流”对话框中,必须执行下列多项操作:必须为所有共享运动流的 Biped 激活“运动流”模式。此时,可以使用该对话框中的特殊按钮执行这一步骤中的操作。

  8. 单击 (在运动流中放置多个 Biped)。

    此时,便为所有共享运动流的 Biped 激活“运动流”模式。

  9. 单击“确定”退出该对话框。

要偏移代理并测试模拟,请执行下列操作:

代理控制的 Biped 动画可以运动流脚本的第一个剪辑(如果存在)或随机运动编辑开始。但是,将运动流文件加载到“共享运动流”对话框中时,将会忽略文件中所有的脚本。因此,与代理关联的 Biped(使用未求解的群组模拟中的运动流)当前没有脚本,进而必须说明这些 Biped 使用的是在运动流中设置的随机开始剪辑。通过代理,可以完成上述操作。

  1. 使用“编辑多个代理”对话框 “Biped”组为所有代理指定“随机开始剪辑”。

    求解模拟。

  2. 选择群组对象,并转到 “修改”面板。
  3. 在“求解”卷展栏中,设置所需的“结束求解”帧。
  4. 单击“求解”即可运行模拟。

    此时,群组可以对模拟进行求解。

  5. 拖动帧滑块和/或重放动画,以便对求解后的模拟进行检查。

要微调模拟,请执行下列操作:

需要调整的机率很大。所以,可以采用下面很多不同的方法解决问题:更改行为和/或运动流设置,更改代理参数等。

如果发现 Biped 碰撞和互相贯穿,可以利用群组的特殊“优先级”和“回溯”功能。事实上,强烈建议您对大多数群组/ Biped 模拟同时使用这两个选项。

  1. 使用“优先级”卷展栏控件为代理指定不同的优先级。通常,群组前面的代理应该具有最高的优先级(即,最低的“优先级”设置)。
  2. 在“解算”卷展栏 “Biped”组中,启用“仅 Biped/代理”,然后启用“使用优先级”,然后启用“回溯”。如果以前已经求解过,则最好也打开“在求解之前删除关键点”。

    此时,如果对模拟进行求解,群组一次只能对一个 Biped/代理进行求解,所以将会从优先级最低的 Biped/代理开始。对每个后续的 Biped/代理求解之后,将会查找碰撞。如果发生碰撞,则会将解决方法备份到上一个剪辑的结尾处。此后,前面的剪辑会根据需要尝试运动流图形中的不同路径。使用这种方法可能会花费较长时间,这就是为什么“回溯”在默认情况下处于关闭状态的原因之所在。但是,这种方法通常是解决 Biped 碰撞问题的理想方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文