WP构建及常规构建操作
WP构建方式 :https://docs.unrealengine.com/5.0/zh-CN/world-partitioned-navigation-mesh/
常规构建方式
针对WP的构建方式特殊配置项关闭就好:
取消勾选RecastNavMesh-XXX下的IsWorldPartitioned
执行n.bNavMeshAllowPartitionedBuildingFromEditor 0取消编辑器下构建WP NavMesh
以上两种都取消掉自动构建,规避每次打开编辑器自动刷新导航数据
编辑器配置中关闭Update Navigation Automatically
项目管理配置中Navigation System中取消勾选Auto Create Navigation Data
项目管理配置Navigation Mesh
根据需要勾选Display配置
Draw Filled Polys 用于生成的导航网格显示
Draw Nav Mesh Edges 显示导航Mesh边界
其他的如有调试需要开启,平时关闭即可
瓦片生成调试配置
勾选Enable
勾选Enable Drawing
Generation配置
属性 |
配置数据 |
特殊说明 |
Fixed Tile Pool Size |
WP勾选、常规方式不勾选 |
用于瓦片数据的流式加载 |
Tile Pool Size |
瓦片池Size大小 |
如果开启流加载的情况下保持1024的值即可(该值充足) |
Tile Size UU |
设置参数大小: 4096, 4096, 4096 |
这里设置可设置三个分段值,和Cell Size对应 |
Cell Size |
设置参数大小: 32, 64, 64 |
这是给出的示例与TileSizeUU对应,都是默认TileSize为64 |
Cell Height |
这里暂时设置为10 |
该值调大后内存占用会上升,但影响幅度不像Cell Size那么明显 |
Agent Radius |
推荐默认值35 |
单个导航代理配置下没有问题 |
Agent Height |
推荐默认值144 |
单个导航代理配置下没有问题 |
AgentMaxSlope |
默认值70.344009即可 |
这个参数根据功能需要调整即可,不会影响整体的内存占用 |
AgentMaxStepHeight |
调整该值为80-100 |
该值可以影响AI的导航攀爬,数值调整的越大,内存占用会约低 |
Min Region Area |
该数值可微调为50-100 |
为了优化内存占用,该值微调可以降低整个内存占用,但是过大会造成孤立的导航数据区域丢弃,所以不宜过大 |
Merge Region Size |
默认值400即可 |
区域合并值影响导航区域的合并,整体对内存影响比最小区域值还要小,默认值即可 |
Max Simplification Error |
该数值默认保持1.3即可 |
越低占用内存越多,越大越少;相对应的是该值越低最终生成的导航数据与物体碰撞误差越小,越大误差越大 |
Sort Navigation Areas by Const |
默认勾选即可 |
如果动态导航模式下,为了节省构建消耗可以取消勾选 |
IsWorldPartitionNavMesh |
不勾选 |
这个开启WP构建模式时使用,这里不勾选 |
Do Fully Async Nav Data Gathering |
默认不够选 |
该值在开启修改导航模式的情况下开启,把模型数据导出放到异步线程里去做,目前不知道对构建导航Task造不造成影响 |
其他未提及数值暂时按照默认值处理
项目管理配置Navigation System
属性 |
配置数据 |
特殊说明 |
Default Agent Name |
可以为None |
如果不填写默认支持的第一个代理配置为默认配置 |
Auto Create Navigation Data |
取消勾选 |
不启动自动勾选 |
Spawn Nav Data in Nav Bounds Level |
取消勾选 |
不在子关卡里生成导航配置 |
Allow Client Side Navigation |
取消勾选 |
不在客户端生成导航 |
Should Discard Sub Level Nav Data |
勾选该选项 |
丢弃子关卡中的导航数据 |
Supported Agents |
根据需要配置 |
多配制的情况下会有导航数据匹配问题,如果没有特殊的情况下建议使用单个代理配置 |
其他未提及的配置按照默认值即可
Tile Size UU && CellSize大小在测试地图中的表现
TileSizeUU |
TileSize |
CellSize |
RecastMemory |
PERM_TILE_DATA |
DetourTileMemory |
TileCacheMemory |
TileNavLinksMemory |
1024 |
32 |
32 |
475.23 |
228.28 |
142.74 |
66.90 |
45.32 |
2048 |
64 |
32 |
239.01 |
165 |
105.55 |
52.13 |
44.34 |
4096 |
128 |
32 |
166.60 |
145.69 |
96.07 |
36.74 |
27.04 |
2048 |
32 |
64 |
162.28 |
93.75 |
66.80 |
18.53 |
18.51 |
4096 |
64 |
64 |
96.38 |
77.78 |
57.28 |
13.57 |
15.07 |
8192 |
128 |
64 |
79.69 |
73.71 |
55.16 |
12.08 |
14.15 |
4096 |
32 |
128 |
37.56 |
20.94 |
15.87 |
3.25 |
3.72 |
8192 |
64 |
128 |
23.86 |
18.78 |
14.54 |
2.57 |
3.16 |
如果不要求精细的情况下建议:Tile Size UU : 4096 CellSize : 64
要求精细导航的数据下最佳: Tile Size UU : 4096 CellSize : 32
体积摆放多少对导航数据的影响不大,只和体积中包含的碰撞模型数据多少有关
如果有必要把不影响导航的组件及Actor中Collision的CanEverAffectNavigation取消勾选,可以影响Nav Tree Memory占用
静态导航情况下按照以上配置最终得到的测试地图导航数据(64 * 32)
各部分相关占用 |
占用量 |
Recast Memory |
140.64M |
Detour PERM_TILE_DATA |
119.23M |
Detour Tile Memory |
68.11M |
Detour PERM_TILES |
13.M |
Tile Cache Memory |
40.36M |
Detour Tile Nav Links Memory |
17.88 |
Detour Tile Nav Verts Memory |
12.11 |