查看: 826|回复: 13

[引擎各个功能] 【场景查询系统用户指南 | Unreal Engine】

[复制链接]

1

主题

342

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
75866
发表于 2016-6-25 18:43:28 | 显示全部楼层 |阅读模式


启用环境查询系统
Edit Menu -> Editor Preferences

Experimental

向下滚屏到 AI

启用 环境查询系统
场景查询的部分
场景查询 实际上由诸多不同部分组成。必须从行为树调用一个场景查询,之后实际的场景查询将使用其生成器、引用其 Context、并通过其测试为行为树提供最高的加权结果。

行为树
通过 Run EQS Query Task 节点即可在行为树中使用场景查询。

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



在行为树中将其选中即可设置 Query Template 属性(场景查询资源)、设置其 Query Params 属性(即为传入场景查询资源的命名数值)、以及设置最高加权结果返回的黑板键(对象或矢量)。

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



如需了解其使用的详细内容,请查阅 行为树 文档。

场景查询
使用 Run EQS Query 节点在行为树中调用的便是场景查询(Environment Query)资源,以便对多个 Actors 或位置进行测试,找到“最佳”的选择。而“最佳”的定义取决于测试在场景查询中的构成方式。

场景查询可在蓝图和 C++ 中进行创建。

生成器
生成器(Generator) 生成位置或 Actors(统称为 项目(Items))。它们将被测试和加权,最高加权的位置或 Actor 将被返回到行为树。

生成器可在蓝图和 C++ 中进行创建。

Contexts
Contexts 是诸多测试和生成器的参考框架。它们可能如 查询器 一样简单,也可能如 一种类型的所有 Actors 那样复杂。

需要注意的是生成器(如 Simple Grid 生成器)可使用返回多个位置或 Actors 的 Context。这将在每个 Context 的位置创建一个拥有特定尺寸和密度的简单网格。

Context 可在蓝图和 C++ 中进行创建。

测试
场景查询通过测试来确定生成器中的哪个项目为“最佳”。默认测试包含较大比例的使用情况,如项目是否能追踪至另一个位置,或项目和 context 之间的距离是否在特定范围之内。

当前版本中,测试 必须在 C++ 中进行创建,无法在蓝图中进行创建。
创建查询
【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



在内容浏览器中 左键单击 Create 按钮

选择 Miscellaneous -> Environment Query
创建蓝图 Context
在内容浏览器中 左键单击 Create 按钮

选择 Blueprint

点开 All Classes

搜索 EnvQueryContext

选择 EnvQueryContext_BlueprintBase
创建蓝图生成器
在内容浏览器中 左键单击 Create 按钮

选择 Blueprint

点开 All Classes

搜索 EnvQueryGenerator

选择 EnvQueryGenerator_BlueprintBase
将 Root 和 Generator 连接起来
【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



从 Root 节点下方的深色条 左键单击 并 拖动 至 Generator 节点上方的深色条构成连接。

此外,左键单击 并 拖动 进图表区中也可获得新建 Generator 节点的选项。

虽然可以在 Root 节点上连接多个 Generator 节点,但只有最左边的有效 Generator 才用于查询中。
为行为树添加一个查询
通过 Run EQS Query Task 节点即可在行为树中使用场景查询。




在行为树图表区中 单击右键。

创建一个 Task -> Run EQSQuery 节点。

选择新建的 Run EQSQuery 节点,将 Query Template 属性改为您的场景查询资源(或从下拉菜单中新建一个资源)。

可根据需求选择性地设置场景查询寻找的 Query Params。

最后,选择场景查询设置的黑板键,此处仅限使用对象和矢量黑板键。
编辑查询
添加生成器
在查询的图表区中单击右键,选择一个生成器。

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



添加测试
右键单击生成器并选择添加一个测试。

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



修改测试
在生成器上选择一个测试,并在 Details 面板中进行修改

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



参考 场景查询系统节点参考 部分的个体测试使用信息。

预览查询结果
在 场景查询系统测试 Pawn 文档中可查阅到如何预览查询结果。

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]


编辑 Context
新建的 EnvQueryContext 蓝图拥有 4 个可应用函数:

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



Provide Single Location

Provide Single Actor

Provide Locations Set

Provide Actors Set

应用一个(或多个)函数可创建您的自定义 Context,以便在查询的测试中使用。右键单击需要应用的函数,选择 Implement Function。

提供单一位置
返回一个单一位置(矢量)。如何生成位置,则由您决定。例如此函数将返回查询器 1500 厘米内随机 Actor(DesiredObjectType 阵列中的类型,如 Pawn、载具等...)的追踪命中位置。

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]




提供单一 Actor
返回一个单一 Actor。如何找到该 Actor,则由您决定。在此例中,函数将返回玩家 0 的受控(拥有的)Actor:

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]




提供位置集
返回位置的阵列(矢量)。如何生成这些位置,则由您决定。此范例图表将从半径为 1500 个单位的圆上 16 个平均分布的位置进行追踪,返回成功的场景命中。

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]




提供 Actors 集
返回 Actors 的阵列。如何找到这些 Actors,则由您决定。例如,此函数将返回 MyCharacter Actors 的一个阵列,其变量 Team Number 设为 1</code>:

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



编辑生成器
Event Do Item Generation
【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



这是生成器的主要函数。应用此函数时将获得一个位置的阵列,这些位置是从场景查询传入的 Context 位置。这完全取决于 Context,它可能只是查询器位置条目的阵列,也可能是关卡中每个体力回复包的所在位置。

添加生成的 Actor
【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



因为函数只能返回一个值,“Do Item Generation”函数实际拥有两个阵列,可巧妙地把它们传回到场景查询。此节点将添加一个 Actor 到 Actor 返回阵列,也可与 Add Generated Vector 节点共用,返回位置数值。

至于生成器如何定义实际被传回行为树的内容,则基于从 EnvQuery 节点设置的黑板键。

添加生成的矢量
【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



因为函数只能返回一个值,“Do Item Generation”函数实际拥有两个阵列,可巧妙地把它们传回到场景查询。此节点将添加一个矢量到矢量返回阵列,也可与 Add Generated Actor 节点共用,返回 Actor 数值。

至于生成器如何定义实际被传回行为树的内容,则基于从 EnvQuery 节点设置的黑板键。

范例生成器
它从一个圆的边沿开始向查询器追踪,此圆的半径为 Rad。它基于 Number of Spokes 数值将追踪以一定角度分隔开来(为 360/Number of Spokes 数值)。追踪命中场景时才会保存其位置,本质上是寻找一个无法看到调用者的表面。

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]




最终效果如下图:

【虚幻4翻译文档-场景查询系统用户指南 | Unreal Engine】[虚幻4中文文档]



此范例应该执行操作是 :使用从 Do Item Generation 传入的 Context Locations 对圆的生成位置进行修改。由于图像尺寸限制,此操作未能完成。
回复

使用道具 举报

0

主题

853

帖子

2849

积分

vip会员

Rank: 1

积分
2849
发表于 2016-7-2 19:06:25 | 显示全部楼层
看上去不错呀,支持一下
回复 支持 反对

使用道具 举报

0

主题

838

帖子

2726

积分

vip会员

Rank: 1

积分
2726
发表于 2016-7-3 06:51:34 来自手机 | 显示全部楼层
这个怎么用呢
回复 支持 反对

使用道具 举报

0

主题

857

帖子

2816

积分

vip会员

Rank: 1

积分
2816
发表于 2016-7-4 06:26:02 来自手机 | 显示全部楼层
好东西,所噶
回复 支持 反对

使用道具 举报

0

主题

840

帖子

2738

积分

vip会员

Rank: 1

积分
2738
发表于 2016-7-4 17:44:20 | 显示全部楼层
楼主好人!
回复 支持 反对

使用道具 举报

0

主题

825

帖子

2702

积分

vip会员

Rank: 1

积分
2702
发表于 2016-7-5 02:43:56 | 显示全部楼层
搬运工 辛苦了
回复 支持 反对

使用道具 举报

0

主题

858

帖子

2804

积分

vip会员

Rank: 1

积分
2804
发表于 2016-7-7 22:04:36 来自手机 | 显示全部楼层
谢谢分享,顶一个
回复 支持 反对

使用道具 举报

0

主题

833

帖子

2738

积分

vip会员

Rank: 1

积分
2738
发表于 2016-7-8 06:13:35 来自手机 | 显示全部楼层
来看看......
回复 支持 反对

使用道具 举报

0

主题

900

帖子

2982

积分

vip会员

Rank: 1

积分
2982
发表于 2016-7-11 02:51:00 | 显示全部楼层
等会儿下载看看
回复 支持 反对

使用道具 举报

0

主题

837

帖子

2764

积分

vip会员

Rank: 1

积分
2764
发表于 2016-7-16 20:14:07 来自手机 | 显示全部楼层
看一下,谢谢楼主分享
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部