【UE5 Mass AI】UE5技术演示视频中的MassAI笔记

这篇具有很好参考价值的文章主要介绍了【UE5 Mass AI】UE5技术演示视频中的MassAI笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在虚幻引擎中,Mass Framework是面向数据的一种框架设计,而MassAI则是一个具体的用例。
Mass Framework可以分为三部分:MassEntity,MassGameplay,MassAI。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记

1. Mass Entity

MassEntity是一种面向数据的框架,该框架有两部分,一为片段(Fragment),非常小的数据结构,会连续的储存在内存中;另为实体(Entity),则是由片段构成集合的实例。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记
该框架中将所有处理逻辑与数据构成进行解除联系,所有的数据构成均在片段中。为了了解要在哪些实体中执行某些逻辑,需要通过实体查询(EntityQuery)的方式来过滤实体,将其分割为特定逻辑需要的片段,然后再由处理器(Processors)对所有逻辑进行批量更新。例如,要更新所有实体的位置,就是通过处理器来一次性执行。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记

这种处理逻辑与数据构成分离的方式,可以增强数据和代码的一致性,减少高速缓存缺失,简化未来的并行执行,可以有效的限制一次性模拟实体数据的基础。

2. Mass GamePlay

Mass GamePlay能够将大量的实体正式带入游戏世界中。我们可以在Mass GamePlay中定义生成可视化、LOD等机制。
MassSpawner是Mass GamePlay中管理实体生成的部分,其为一个需要放置在关卡中的常规Actor。

2.1. 获取生成位置

MassSpawner通过区域图(ZoneGraph)来确定实体的生成位置。
区域图(ZoneGraph)可以取代AI导航网格体的作用。它是一个由交叉点连接在一起的逐点廊道结构生态系统,并存储了可操作的标签,这些标签可以是静态的,如识别车道中的行人;也可以是动态的,如一条开放或封闭的车道、指定AI行为。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记

在《黑客帝国》中,MassSpawner通过区域图对行动中的人群与交通工具实现了基于密度的实体分布,对于停在路边的车辆使用了根据静态点云的分布方式,这些实体分布方式可以在Mass Spawner的属性中选择。
以人群举例,MassSpawner合并了行人密度和人行道网络的数据表示,为人群创建了一个相互连接,且带有正确注释的区域图。区域图中的注释会说明它们的功能,如:人行横道、人行道、十字路口道等。此外,这些注释还包含预期密度,当前是否处于封闭状态,是否开启调试信息等选项。MassSpawner会在这些线路上,根据密度数据,在不同距离上创建一个生成位置。交通系统也是如此操作的。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记
对于停放的车辆,通过点云的方式直接在每个位置生成一辆载具。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记

2.2. 具体生成实例

具体生成实例不仅需要完成视觉效果,还得生成AI的行为。
MassSpawner通过Mass Entity Definition来确定具体生成的实例。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记
Mass Entity Definition是一种新的资产类型,通过该资产,可以轻松处理不同实例使用的片段列表。该定义最重要之处在于视觉效果,如在不同LOD级别中显示什么?截距距离是多少?可视角有哪些?每级LOD的预算最高是多少?
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记
如上图所示,框架中会存在四个不同的LOD级别,分别为红色10m(带有面部动画的Actor),黄色20m(无面部动画Actor),绿色500m(轻量级的顶点动画网格体),无显示。

在Mass Entity Definition中,人群与交通系统存在着一定的区别。
人群使用的是状态树,一个可扩展的通用型状态机。通过状态树,可以描述当前实例可能出现的所有状态,即控制AI的行为,如漫步、闲逛、奔跑等。状态是通过自上而下评估入口条件和运行相关参数化任务来确定的,确定后状态树会默认转换到该状态,除非满足了另外的转换条件。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记
此外,为了完成人群的相互避让,虚幻官方开发了一个基于力的避让机制,可以高效的处理动态和静态障碍,且会对身体碰撞做出反应,如在恢复原本行为前播放一段一次性动画。这些动画的数据来自于Mass动画处理器,而Mass动画处理器的相关数据来自于实体的片段。

交通系统中,则没有使用状态树。所有行为都在Mass Processor以编程的方式生成。
如沿着车道陆续前进,会沿着车道排列车辆。为避免车辆相撞,车辆会知道他与另外一辆车的距离,并根据距离调整车速,
且车辆采用人群中使用的避让系统,会对障碍物进行避让。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记
此外,交通系统需支持车道变更与车道合并。当检测邻近车道为空车道时,通过创建一个幽灵实体来模拟车辆出现在这条车道上,然后就可以进行变道了,且在变道完成后,会移除原车辆实体。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记
交通系统中的车辆也具有LOD系统,操作与人群的基本一致。红色10(可形变,可摧毁,可交互的Actor),黄色150(有物理效果,但只是在Mass Framework中模拟的Actor),绿色5000(仅有简单曲线和位置的实例化静态网格体),与无可视化。
交通系统的移动矢量生成,随时都可以发生,所以官方通过矢量拉动的方式来降低开销。

3、Mass AI

Mass AI主要分为Mass人群与Mass交通系统。具体实现在本文上部分已有讲述。
【UE5 Mass AI】UE5技术演示视频中的MassAI笔记文章来源地址https://www.toymoban.com/news/detail-416295.html

到了这里,关于【UE5 Mass AI】UE5技术演示视频中的MassAI笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE5 MediaPlayer不能正确播放视频问题

    UE5 MediaPlayer不能正确播放视频问题 时间节点:2023/02/01 情况说明:播放有声音,没有是视频。 方案1: 打开插件Electra Player即可: 方案2: 修改项目设置的RHI为Default,修改之后重启项目,默认RHI为DX12: 抑或修改下项目配置文件DefaultEngine.ini: 方案参考网络,具体原因没细深

    2024年02月13日
    浏览(31)
  • UE5中的DataTable说明

            在编辑器中创建         在文件夹空白处右击,选择Miscellaneous/DataTable,如图:         使用代码创建         有了DataTable的结构或者类型定义后,接下来您需要添加数据。以下是示例代码:         UE中的结构体选取是定义DataTable中行数据的非常常

    2024年02月19日
    浏览(26)
  • 【虚幻引擎UE】UE5 实现相机录制视频并导出(C++基于OpenCV生成视频合成exe)

    说明: 该功能暂不支持导出声音。 由于OpenCV3和UE5不太兼容,因此考虑制作外部exe实现视频合成。 1、实现 SavePicToFile 导出图片蓝图函数 .cpp文件

    2024年02月15日
    浏览(71)
  • UE5 CommonUI初学笔记

    跟着油管的一个直播视频学习入门的( https://www.youtube.com/watch?v=TTB5y-03SnEt=7903s https://www.youtube.com/watch?v=TTB5y-03SnEt=7903s ),但是由于是直播所以有些混乱并且有些许错误。在这里修正一下错误并记下笔记以供以后查阅。 在看完教学后,觉得CommonUI的优势主要是跨平台开发,以及

    2024年02月08日
    浏览(31)
  • 解决UE4 UE5 虚幻引擎 关卡内或sequence 播放多个视频卡顿问题

    在项目设置中搜索缓存,修改其中的参数即可解决问题,默认为1G,详细见图 经测试,单个关卡内使用蓝图或在sequence内创建媒体,播放30个mp4视频或者序列帧分辨率为1080p,可流畅播放,实时帧数40fps,使用设备(2080ti,内存64G)

    2024年02月11日
    浏览(40)
  • UE5 日记(人物连招:蒙太奇动画通知(含视频链接))

    教程 https://www.youtube.com/watch?v=sWpENaVGj2Mlist=PLiSlOaRBfgkcPAhYpGps16PT_9f28amXiindex=10pp=iAQB 已搭载战斗系统模块,可以收到输入指令 第一次攻击: 第一次攻击,设置Attacking为真。当连招断开时,设置Attacking未假。 若Attacking为真时,按下攻击键,想要连击,设置save attack为真;若Attacking为

    2024年02月06日
    浏览(34)
  • 【UE5】离线AI聊天-接入LLAMA语言模型 教程

    前言:LLAMA是一种神经网络模型,全称为Language Model with an Average Attention Mechanism(具有平均注意机制的语言模型)。它是一种用于自然语言处理任务的模型,特别适用于生成文本和回答问题。LLAMA模型结合了注意力机制和平均池化,以提高模型对输入文本的理解和生成能力。它

    2024年03月21日
    浏览(36)
  • UE5.2 LyraDemo源码阅读笔记(五)输入系统

    Lyra里使用了增强输入系统,首先知道增强输入系统里的三个类型配置。 一、Input Actions (IA): 输入操作带来的变量,与玩家的输入组件绑定,回调里驱动玩家行为。 二、InputMappingContext(IMC): 表示一套按键输入配置,让按键与IA绑定,从而使用按键携带的变量驱动IA生效。

    2024年02月12日
    浏览(23)
  • UE5内置浏览器插件WebUI简易使用笔记

    之前的项目中为了提高效率,避免使用UE功能不完善的UMG系统,使用了WebUI插件,在UI中内嵌浏览器来展示网页。用Vue框架配合插件制作网页还是比UMG要快很多的,毕竟UE的UI制作插件比较少。 首先在UMG中创建一个新UI,拉一个新的面板,然后在里面加一个WebInterface组件。 之后

    2024年02月04日
    浏览(43)
  • UE5 C++学习笔记 常用宏的再次理解

    1.随意创建一个类,他都有UCLASS()。GENERATED_BODY()这样的默认的宏。 UCLASS() 告知虚幻引擎生成类的反射数据。类必须派生自UObject. (告诉引擎我是从远古大帝UObject中,继承而来,我们是一家人,只是我进化了其他功能) GENERATED_BODY()表示我们不直接使用父类的构造函数,如果我

    2024年01月20日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包