目录

配置EQS

候选项生成器(Generators)

1.Actor of Class(候选Actor)

===细节面板===

2.Composite(组合器)

===细节面板===

3.Current Location(候选位置)

===细节面板===

4.Perceived Actors(候选Actor)

===细节面板===

5.Points:Circle(候选位置)

===细节面板===

6.Points:Cone(候选位置)

===细节面板===

7.Points:Donut(候选位置)

===细节面板===

8.Points:Grid(候选位置)

===细节面板===

9.Points:Pathing Grid(候选位置)

===细节面板===

添加测试(Tests)

1.Distance

===细节面板===

2.Dot

===细节面板===

3.Gameplay Tags

===细节面板===

4.Overlap

===细节面板===

5.Pathfinding

===细节面板===

6.Pathfinding Batch

===细节面板===

7.Project

===细节面板===

8.Trace

===细节面板===

9.Volume

===细节面板===

TestPawn 测试角色


配置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

--------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐