返回介绍

3ds Max 帮助

3ds Max 帮助归档

认知控制器

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

在模拟过程中,可以根据环境使用认知控制器功能来使群组成员改变行为。例如,一个角色可以随机漫步,直到它移动到和一目标相距一定距离时开始朝那个目标直行。

在技术术语中,认知控制器使用条件脚本来影响群组模拟,这可以有效的实现一系列的人工智能。可以使用认知控制器编辑器 ,这是一个流程图样式编辑器(很像“运动流图”对话框),来设置行为网络和行为组合,我们将其称之为状态。然后,可以应用基于 MAXScript 脚本的变化来指定代理何时从一个状态移动到另一个状态。即便使用相对简单的设置,也可以创建模拟,以使角色栩栩如生、具有意识、在场景中移动时能作出决定。

可以在“状态”对话框主题中找到介绍认知控制器变换的各种示例的步骤:

测试粒子系统参数

测试对象位置

测试大气效果属性

测试两个对象之间距离

测试修改器参数

测试另一对象行为

过程

要设置并使用认知控制器,请执行以下操作:

此步骤是创建和使用认知控制器的典型设置过程。此步骤假设您已具备群组模拟设置的基本知识。为获得更多关于群组设置的信息,请参阅群组辅助对象“设置”卷展栏

  1. 创建一个包含群组对象和一个或多个代理的场景。请参见创建群组辅助对象
  2. 至少创建两个行为。请参见指定行为
  3. 打开认知控制器编辑器
  4. 单击“新建”按钮来创建认知控制器。

    character studio 将此控制器命名为默认名称“认知控制器”。推荐为此认知控制器命名一个描述性的名称,例如:“查找/漫步”。单击文本框中的名称并从键盘进行编辑。

    创建一个认知控制器会自动转到“创建状态”模式中。

  5. 单击编辑器窗口来创建并放置一个状态。在不同位置继续单击来添加任意多的状态。
  6. 右键单击状态以打开“状态”对话框
  7. 推荐为状态命名更具描述性的名称,这可以在“状态”对话框中设置。在文本框中单击名称(状态或状态号码)并从键盘进行编辑。

    下一步,给每一状态定义一个或多个行为。

  8. 单击“添加”按钮。
  9. 在“选择行为”对话框中,选择一个或多个行为。

    如果选中了多个行为,那么可以在“状态”编辑器中给每个行为指定不同权重。例如,可以把二分之一权重的“漫步”行为合并到全权重的“查找”行为中,以便在代理查找目标时会轻盈地漫步。

  10. 关闭“选择行为”对话框,然后关闭“状态”编辑器。
  11. 根据需要重复步骤 6-10,来为控制器中的其它状态定义行为。

    下一步,使用“创建变换”来定义在模拟过程中的状态序列。

  12. 决定状态发生的顺序。
  13. 单击 (创建过渡)。
  14. 在一个状态到下一状态间拖动一条直线以便执行它们。单击某个状态来创建从状态自身到自身的变换。

    显示一个变换箭头,它从“源”状态指向“目标”状态。

    每一状态可以拥有任意数目的传入和外出变换。可以根据需要给每一状态指定不同的状态变换条件来创建复杂状态图表。

    下一步,使用“状态变换”对话框给每一变换定义一个条件。

  15. 右键单击变换线条。
  16. “状态变换”对话框中,为变换条件输入一个名称,然后单击“编辑 MAXScript”按钮。
  17. 使用 MAXScript 编辑器窗口来输入或加载脚本,这些脚本定义了变换发生的一个条件或多个条件。

    通常,它是一个用来测试条件的函数,并返回 1(如果为真)或 0(如果为假)。

    • fn - 以下是 MAXScript 函数。
    • test1 - 函数名应该作为变换条件显示在“变换”对话框中。当变换通过测试时,首先执行此函数。此脚本可能包含任意数目的条件函数,它们被脚本内部函数所调用。
    • del - 指当前正应用该脚本的代理。每个认知控制器指向的代理/组成员的每帧中都执行一次变换脚本。因此,如果在脚本中使用“del”而不是指定的代理名称,那么将测试指定到认知控制器的所有代理。
    • t - 模拟中的当前时间(帧编号)。
    • del.simpos.x - X 轴上代理的的当前位置。特殊函数“simpos”确定代理在模拟过程中的位置。这是必要的,因为在模拟过程中使用标准函数“[node].pos”导致 MAXScrip 不可使用代理位置。
    • del.duration - 代理位于当前状态的帧数。

      通过打开 MAXScript 监听窗口(按 F11 键)并输入以下字符,能够看到可以检入脚本的特定于代理的参数的完整列表:

      显示属性 $delegate01

      因为代理是一个节点,除了上面提到的“simpos”之外,它也能对标准的 MAXScript 节点相关函数作出反应。此外,为获得关于如何访问变换属性的信息,例如,持续时间和优先级,请参阅 MAXScript 帮助

      要了解可以与认知控制器一起使用的 MAXScript 条件的更多示例,请参见“状态变换”对话框

  18. 使用“状态变换”对话框来设置其它参数,例如,优先级和持续时间。
  19. 使用“行为指定和组合”对话框给代理或组合指定认知控制器。 注意:群组不允许在代理中使用多个认知控制器。可以指定多个控制器,但在解算时,character studio 将通知您它将只使用第一个指定的认知控制器。

请参见

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

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

发布评论

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