UE EQS学习
目录
配置EQS
核心作用:根据条件,帮助AI筛选当前环境中的最优点
原理:EQS启用后会生成候选点/对象,由评分系统为每个符合条件的候选打分,由AI根据打分进行选择
评分系统绑定在测试条件(Tests)




---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
候选项生成器(Generators)
确定候选类型(位置/Actor),确定候选范围/形状,绑定候选来源
1.Actor of Class(候选Actor)
从场景中提取所有属于指定类的Actor作为原始候选,通过Tests和评分系统选择AI需要的最优Actor

===细节面板===

-Searched Actor Class-
指定要搜索的目标Actor类别
-Generate Only Actors in Radius-
如为true,其只返回SearchCenter情境SearchRadius中指定类的actor。如为false,其将返回场景中指定类的所有actor。
-Search Radius-
搜索半径
-Search Center-
指定搜索中心
---------------------------------------------------------------------------------------------------------------------------------
2.Composite(组合器)
合并其他生成器的候选结果,让EQS同时获取不同来源/类型的候选对象
如同时筛选出友军Actor以及安全位置

===细节面板===

-Generators-
添加要组合的子生成器列表

-Allow Different Item Types-
是否允许合并不同类型候选
勾选:可同时组合Actor生成器和位置生成器
不勾选:只能组合同类型候选
-Forced Item Types-
强制将所有子生成器的候选转换为指定类型

---------------------------------------------------------------------------------------------------------------------------------
3.Current Location(候选位置)
生成发起EQS查询的对象当前所在位置的候选点(即查询者所在位置)

===细节面板===

-Query Context-
指定哪个对象的当前位置作为候选点
---------------------------------------------------------------------------------------------------------------------------------
4.Perceived Actors(候选Actor)
(使用此生成器需启用AI感知组件)
直接复用AI感知组件的结果,生成AI已感知到的Actor作为候选

===细节面板===

-AllowedActorClass-
限制只保留特定类的感知Actor
-SearchRadius-
额外限制感知Actor的范围
(默认-1代表不额外限制,直接使用AI感知组件的范围)
-ListenerContext-
指定哪个对象的感知组件
-SenseToUse-
只保留特定感知类型
(None则包含所有感知类型)

-IncludeKnownActors-
是否包含曾感知到,现刺激消失但未遗忘Actor
勾选:包含已感知但当前无刺激Actor
不勾选:仅包含当前有感知刺激的Actor
---------------------------------------------------------------------------------------------------------------------------------
5.Points:Circle(候选位置)
以指定中心为圆心,生成圆形区域内均匀分布的候选点


===细节面板===


--基础圆形参数--
-Circle Radius-
圆心到候选点的半径
-Space Between-(二选一)
候选点之间的间距
-Number Of Points-(二选一)
生成候选点的总数
-Point on Circle Spacing Method-
上面两种点分布方案的选择器
--扇形范围参数--(*与Arc相关的功能必须启用ArcDirection)
启用后此区域参数才会生效
启用后,此生成器将改为生成指定大小的扇形区域候选点

-Arc Direction-
-Mode-
1.TwoPoints
以LineFrom和LineTo两点连线,作为扇形中心线方向,向两侧扩展ArcAngle/2的扇形范围

2.Rotation
通过某个对象的面朝方向作为扇形的中心线基准

-Arc Angle-(启用ArcDirection后生效)
候选点的扇形角度范围
--中心与偏移参数--
-Circle Center-
圆形的中心位置
-Ignore Any Context Actors when Generating Circle-
生成点时是否避开上下文Actor
-Circle Center ZOffset-
圆心的Z轴偏移量
--有效性检测参数--(Trace Data)
-Trace Mode-
候选点有效性检查

-None-
不执行有效性检测(不推荐)
-Navigation-
检测候选点是否在NavMesh上,确保可达
-Geometry by Channel-
按碰撞通道检测,确保候选点在有对应碰撞的实体上
(忽略NavMesh)
-Geometry by Profile-
按碰撞配置文件检测,如用Pawn的碰撞配置文件
-Navigation Over Ledges-
检测是否在NavMesh上同时允许点处于NavMesh的边缘/台阶区域(普通Navigation会过滤边缘点)
-Navigation Filter-
导航过滤

-None-
不启用过滤
-NavFilter_AIControllerDefault-
UE默认的AI Controller导航过滤器
自动被标记为不可通向的区域
-RecastFilter_UseDefaultArea-
基于Recast导航系统的默认区域过滤器
-Extent X-
检测范围扩展量
稍微扩大检测范围,避免因为点的位置稍微偏移NavMesh而被误判为无效
--投影数据--(Projection Data)
-Trace Mode-
控制候选点的垂直投影逻辑,把生成的候选点(可能处于空中)“投射”到场景的有效表面(比如地面、NavMesh),避免点悬空,确保AI能实际站在点上

---------------------------------------------------------------------------------------------------------------------------------
6.Points:Cone(候选位置)
专门用于生成某方向锥形区域内的位置点


===细节面板===

-Aligned Points Distance-
锥形内同一条射线方向上候选点的间距
-Cone Degress-
锥形的张角角度(单位:度)
-Angle Step-
锥形内相邻射线的角度间隔,控制点的分布密度
(填10度=每10度生成一条射线)
-Range-
锥形的最大距离
-Center Actor-
锥形的顶点位置(起点)
-Include Context Location-
是否把起点(CenterActor)也加入候选点
-Projection Data-
-Trace Mode-
检测点是否投射到有效表面
-Navigation Down-
筛选投射的NavMesh区域
-Extent X-
微调投影检测的横向范围
-Project Down-
向下投影的最大距离
-Project Up-
向上投影的最大距离
-Post Projection Vertical Offset-
投影后的垂直偏移量
--------------------------------------------------------------------------------------------------------------------------------
7.Points:Donut(候选位置)
生成内半径到外半径之间的环形区域内的候选位置点


===细节面板===

-Inner Radius-
环形区域的内圈最小距离
-Outer Radius-
环形区域的外圈最大距离
-Number Of Rings-
环形区域的层数
-Points Per Ring-
每层环形的候选点数量
-Arc Direction-(扇形环形模块)
-Mode-
-Line From-
-Line To-
-Arc Angle-
-Use Spiral Pattern-
点分布方式
勾选:点按螺旋线分布
不勾选:点按分层环形分布
-Center-
环形中心点
--------------------------------------------------------------------------------------------------------------------------------
8.Points:Grid(候选位置)
以指定中心为原点,矩形网格状均匀分布的候选点


===细节面板===

-Gird Half Size-
矩形的半尺寸
(填100,则向X/Y轴个延伸100,即矩形长为200)
-Space Between-
相邻候选点间距
-Generate Around-
中心位置
--------------------------------------------------------------------------------------------------------------------------------
9.Points:Pathing Grid(候选位置)
沿AI到目标的寻路路径周围、矩形网格区域内的候选点
(忽略导航以外的候选点,限制点在导航内部)



===细节面板===

-Path to Item-
是否启用沿寻路路径生成网格
勾选:网格围绕AI到目标的寻路路径生成
不勾选:与普通Points:Gird一致
-Navigation Filter-
筛选AI到目标的寻路路径允许的NavMesh区域
选None则默认允许所有可导航区域
-GirdHalfSize-
网格区域的半尺寸
-Space Between-
网格相邻候选点的间距
-Generate Around-
寻路路径的起点
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
添加测试(Tests)
负责筛选候选对象(如排除不在NavMesh上的点、过滤无遮挡的掩体)
1.Distance
评估候选点与发起EQS的对象之间的距离,并基于距离筛选/打分候选点

===细节面板===


-Test Purpose-
定义测试用途
-Filter Only-
只筛选(保留/排除符合距离的点)
-Score Only-
只给点打分(不筛选)
-Filter and Score-
既筛选又打分
-Test Comment-
备注
-Test Mode-
距离计算方式
-Distance To-
距离的计算目标(候选点与谁计算距离)
-Filter Type-
筛选的规则类型
-Range-
按距离范围筛选
-Min-
只保留大于某距离的点
-Max-
只保留小于某距离的点
-Float Value Min-
距离最小阈值
-Float Value Max-
距离最大阈值
-Multiple Context Filter Op-
当测试关联多个上下文目标时,筛选的逻辑
-All Pass- 所有上下文的距离条件都满足,点才会通过
-Any Pass- 任意距离条件满足即通过
-Clamping-
限制分数的上下限
-Clamp Min Type- 分数最小限制
-Clamp Max Type- 分数最大限制
-Scoring Equation-
分数的计算公式
-Constant- 常量
无论距离,通过筛选则所有点得分一致
(如10米内的点任选一个)
-Linear- 线性
距离和分数为线性关系
距离越近,分数越高(或越低)
-Sqare- 平方
分数与距离的平方正相关/负相关
放大距离影响,寻找有强烈偏好的点
-Inverse Linear- 反线性
与Linear相反的线性关系
-Square Root- 平方根
分数与距离的平方根正相关/负相关
弱化距离影响,距离对分数影响不极端
-Scoring Factor-
分数的放大/缩小系数
-Normalization Type-
分数的归一化方式(把距离值转成0-1的分数)
-Absolute- 绝对归一化
基于固定参考值进行归一化
配合-Reference Value-使用
明确某个距离的得分为1,则超过这个距离的得分会被钳制到1,低于这个距离的得分按比例计算
-Relative to Scores- 相对归一化
基于当前候选点的实际距离范围进行归一化
自动取最远点得分为1,最近点得分为0
适用于距离情况未知,自动匹配不同场景
-Reference Value-
配合-Normalization Type-下的-Absolute-使用
通常填写目标距离
-Multiple Context Score Op-
当测试关联多个上下文目标时,评分的运作方式
-Average Score- 平均分
把所有上下文目标分数取平均值作为最终分数
多个目标的重要性接近
(如AI寻找掩体时,与玩家距离和与自身距离的权重同样重要时,取平均分)
-Min Score- 最低分
从所有上下文目标分数中选择最低分
-Max Score- 最高分
从上下文目标分数中选择最高分
-Multiply- 相乘
把所有上下文目标分数相乘
需要所有目标均高分,若某个目标分数低,则相乘后总分数将大幅降低
(适用于每个目标要求都很高时)

--点乘--
定义LineA和LineB,并通过点积判断两个方向的夹角关系
-Line A-
定义点乘测试中第一个向量的来源
-Rotaiton-
基于某个对象的旋转方向生成向量
即该对象的面朝方向向量(单位向量)
-Two Points-
基于两个点连线生成向量
选择后需配置-Line From-和-Line To-
用于确定向量的生成方向
-Line B-
配置方式与A相同
-Test Mode-
点积的计算维度
-Dot(3D)-
基于三维空间的完整向量(X、Y、Z轴)
-Dot2D-
将向量投影到X-Y水平面(忽略Z轴),再计算水平平面内的点积,只反映水平朝向关系
-Absolute Mode-
绝对值开关,对点积结果进行二次处理
不勾选:保留原始结果,能区分方向
勾选:只保留夹角大小,忽略方向
--过滤器--
-Filter Type-
-Minimum-最小值过滤
只保留结果小于预设最小值的候选点,小于该值的点会被过滤
-Maximum-最大值过滤
只保留结果大于预设最大值的候选点,大于该值的点会被过滤
-Range-范围过滤
只保留在范围内的候选点,不在这个范围内的点会被过滤
-Multiple Context Op-
当测试关联了多个上下文目标时,满足的通过逻辑
-Any Pass- 满足任意上下文条件
-All Pass- 满足所有上下问条件
--分数--
-Clamping- 分数上下限
-Clamp Min Type-
-Clamp Max Type-
-Scoring Equation-
将点积结果[-1,1]转化为候选点最终得分的规则
-Constant- 常量
候选点只要通过筛选 得分一致
不考虑优先级,满足条件即可
-Linear- 线性
点积与得分呈线性正相关
朝向越前的点,得分越高
如AI正前方为1分,左侧/右侧45度为0.5分
-Square- 平方
点积结果的平方
强烈偏好朝向前的点
-Inverse Linear- 反线性
点积与得分呈线性负相关
朝向越后的点,得分越高
-Square Root- 平方根
点积结果的平方根
朝向对得分的影响不要太极端
不同朝向的点得分分差更平缓
-Scoring Factor-
得分系数
-Normalization Type-
-Reference Value-
-Absolute-
绝对归一化
归一化分数=候选点点积结果/Reference Value
-Relative to Scores-
相对归一化
基于当前所有候选点的实际点积范围进行归一化
最大点积为1,最小点积为0
无需设置Reference Value
-Multiple Context Op-
关联多个上下文目标时,将每个目标对应的得分合并
-Average Score- 平均分
适用于多个目标重要性差不多,均衡得分
-Min Score- 最低分
所有目标都满足最低要求
-Max Score- 最高分
满足一个目标要求即可
-Multiply- 相乘
要求每个得分都是优异,否则得分会大幅下降(范围0~1)
2.Dot
候选点是否在发起者的朝向位置

===细节面板===



--点乘--
定义LineA和LineB,并通过点积判断两个方向的夹角关系
-Line A-
定义点乘测试中第一个向量的来源
-Rotaiton-
基于某个对象的旋转方向生成向量
即该对象的面朝方向向量(单位向量)
-Two Points-
基于两个点连线生成向量
选择后需配置-Line From-和-Line To-
用于确定向量的生成方向
-Line B-
配置方式与A相同
-Test Mode-
点积的计算维度
-Dot(3D)-
基于三维空间的完整向量(X、Y、Z轴)
-Dot2D-
将向量投影到X-Y水平面(忽略Z轴),再计算水平平面内的点积,只反映水平朝向关系
-Absolute Mode-
绝对值开关,对点积结果进行二次处理
不勾选:保留原始结果,能区分方向
勾选:只保留夹角大小,忽略方向
--过滤器--
-Filter Type-
-Minimum-最小值过滤
只保留结果小于预设最小值的候选点,小于该值的点会被过滤
-Maximum-最大值过滤
只保留结果大于预设最大值的候选点,大于该值的点会被过滤
-Range-范围过滤
只保留在范围内的候选点,不在这个范围内的点会被过滤
-Multiple Context Op-
当测试关联了多个上下文目标时,满足的通过逻辑
-Any Pass- 满足任意上下文条件
-All Pass- 满足所有上下问条件
--分数--
-Clamping- 分数上下限
-Clamp Min Type-
-Clamp Max Type-
-Scoring Equation-
将点积结果[-1,1]转化为候选点最终得分的规则
-Constant- 常量
候选点只要通过筛选 得分一致
不考虑优先级,满足条件即可
-Linear- 线性
点积与得分呈线性正相关
朝向越前的点,得分越高
如AI正前方为1分,左侧/右侧45度为0.5分
-Square- 平方
点积结果的平方
强烈偏好朝向前的点
-Inverse Linear- 反线性
点积与得分呈线性负相关
朝向越后的点,得分越高
-Square Root- 平方根
点积结果的平方根
朝向对得分的影响不要太极端
不同朝向的点得分分差更平缓
-Scoring Factor-
得分系数
-Normalization Type-
-Reference Value-
-Absolute-
绝对归一化
归一化分数=候选点点积结果/Reference Value
-Relative to Scores-
相对归一化
基于当前所有候选点的实际点积范围进行归一化
最大点积为1,最小点积为0
无需设置Reference Value
-Multiple Context Op-
关联多个上下文目标时,将每个目标对应的得分合并
-Average Score- 平均分
适用于多个目标重要性差不多,均衡得分
-Min Score- 最低分
所有目标都满足最低要求
-Max Score- 最高分
满足一个目标要求即可
-Multiply- 相乘
要求每个得分都是优异,否则得分会大幅下降(范围0~1)
3.Gameplay Tags
筛选候选点所关联的对象是否带有指定的GamplayTag

===细节面板===

-Tag Query to Match-
配置要匹配的Tag
-Reject Incompatible Items-
勾选:不符合标签规则的候选点会被直接过滤
不勾选:不符合的点不过滤,但得分极低
-布尔匹配-
勾选后基于标签是否匹配成功的布尔结果进行候选点筛选
4.Overlap
在候选点的位置生成一个指定尺寸的box碰撞体,检测box是否与指定碰撞通道的对象发生重叠,从而判断候选点是否处于目标区域/对象

===细节面板===

--重叠--
-Overlay Data-
-Extent X/Y/Z-
设置碰撞体的半尺寸
-Shape Offset-
碰撞体相当于候选点的偏移量
-Overlay Channel-
选择重叠检测的碰撞通道
-Overlay Shape-
选择碰撞体的形状
-Only Blocking Hits-
勾选后仅检测具有Blocking属性的对象
-Overlay Complex-
勾选后启用复杂碰撞检测
-Skip Overlay Querier-
忽略查询发起者
5.Pathfinding
判断从查询发起者到候选点之间是否存在有效导航路径

===细节面板===

--寻路--
-Test Mode-
-Path Exist- 路径存在
仅检测从起点到候选点是否存在有效导航路径
-Path Length- 路径长度
在路径存在的基础上计算路径长度,并根据长度打分
-Path Cost-
在路径存在的基础上计算路径成本并打分
-Path from Context-
确认路径起点来自Context配置的对象
取消勾选需手动指定起点
-Filter Class-
细化路径的允许范围,过滤掉不符合区域规则的路径
-None-
不启用过滤器
-NavFilter_AIControllerDefault-
默认AI控制器的控制器过滤器,内置了基础的区域过滤规则
-RecastFilter_UseDefaultArea-
强制限定路径只使用默认导航区域
-Skip Unreachable-
勾选后直接丢弃不可达的候选点
6.Pathfinding Batch
与Pathfinding功能相同,适用于候选点数量多的场景
将所有候选点路径查询打包成一个批量请求,一次性提交
(区别于Pathfinding的每个候选点单独查询)

===细节面板===

-Scan Range Multiplier- 扫描范围系数
扩大导航系统在批量查询时的扫描区域范围
7.Project
将空间候选点(可能处于空中/非地面区域)投影到指定的有效表面
确保候选点是实际可站立/到达的位置

===细节面板===

--Projection Data--
-Trace Mode [Navigation]-
投影模式 [寻路网格体检测]
仅投影到导航网格体表面,确保投影后的点必是AI可行走的位置
-Navigation Filter- 导航过滤器
筛选导航的区域类型
-Extent X- 投影范围尺寸
-Project Down/Up- 投影上下范围
-Post Projection Vertical Offset- 投影后垂直偏移
需要候选点离地面一定高度时调整
默认0.0为贴地

--Projection Data--
-Trace Mode [Geometry by Profile]-
投影模式 [按描述文件进行几何体追踪]
-Trace Profile Name-
碰撞描述文件
-Project Down/Up- 投影上下范围
-Post Projection Vertical Offset- 投影后垂直偏移
-Trace Complex- 是否检测物体的精确形状

--Projection Data--
-Trace Mode [Geometry by Channel]-
投影模式 [按通道进行几何体追踪]
-Trace Channel- 要检测的碰撞通道
-Visibility-
投影到开启Visibility碰撞通道的几何体表面
即所有能挡实现的实体物体表面
需要候选点落在实体障碍物/场景物体表面时使用
-Camera-
投影到开启了Camera碰撞通道的几何体表面
即相机不会穿模的实体物体表面
需要候选点落在符合相机碰撞规则的表面时使用
-Trace Shape- 投影形态
-Project Down/Up- 投影上下范围
-Post Projection Vertical Offset- 投影后垂直偏移
-Trace Complex- 是否检测物体的精确形状
8.Trace
从候选点到查询发起者的直线路径,视线是否被阻挡
常用于AI找隐蔽点/藏身处

===细节面板===

--Trace Data--
-Trace Mode [Geometry by Profile]-
按预设的碰撞描述文件执行几何体追踪
-Trace Profile Name- 碰撞描述文件名称
-Trace Complex- 是否精细网格碰撞检测
-Item Height Offset- 给候选点的起点增加高度偏移
-Context Height Offset- 给追踪终点增加高度偏移

--Trace Data--
-Trace Mode [Geometry by Channel]-
按通道执行几何体追踪
-Trace Channel- 通道类型
-Trace Shape- 碰撞体形状
-Item Height Offset- 给候选点的起点增加高度偏移
-Context Height Offset- 给追踪终点增加高度偏移
9.Volume
检测候选点是否处于指定体积区域内部
按区域范围筛选候选点

===细节面板===

--体积--
-Volume Context-
指定目标体积的上下文来源
-Volume Class-
目标体积对应的类
-Do Complex Volume Test-
勾选后按Volume的精确形状检测候选点是否在内部
不勾选则按Volume的简化包围盒检测
-Skip Test if No Volumes-
勾选后若未找到任何目标Volume则跳过此测试
不勾选若无目标Volume会导致失效
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
TestPawn 测试角色
仅用于创建后放入场景展示EQS效果,不参与Gameplay





--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
更多推荐


所有评论(0)