From 999505efdab0ff9b72f715e2593103263507fc40 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 17 Aug 2020 20:22:04 +0800 Subject: [PATCH] 1 --- server/gameserver/navmeshhelper.h | 39 ++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/server/gameserver/navmeshhelper.h b/server/gameserver/navmeshhelper.h index 65d53c9..f99cb14 100644 --- a/server/gameserver/navmeshhelper.h +++ b/server/gameserver/navmeshhelper.h @@ -235,24 +235,38 @@ class InputGeom struct BuilderParams { - const float kCellSize = 64; - const float kCellHeight = 64; - const float kAgentMaxSlope = 90; - const float kAgentHeight = 1; - const float kAgentMaxClimb = 1; - const float kAgentRadius = 40; + const float kCellSize = 1; //体素大小 + const float kCellHeight = 1; //体素高度 + const float kAgentMaxSlope = 90; //角色可走的最大坡度 + const float kAgentHeight = 1; //角色高 + const float kAgentMaxClimb = 1; //角色能爬的最大高度 + const float kAgentRadius = 40; //角色半径 - const float kEdgeMaxLen = 6; - const float kEdgeMaxError = 6; + const float kEdgeMaxLen = 6; //简化列表中相邻两点间的距离 + const float kEdgeMaxError = 6; //从简化边到实边的最大距离 - const float kRegionMinSize = 6; + const float kRegionMinSize = 6; //最小区域的大小, 网格面积小于该值的地方,将不生成导航网格 + /* + 限制: >= 0 + 当一些区域的尺寸小于此参数时,如果可以,会和较大区域合并. + 取值以体素为单位 + 该参数可以帮助减少一些尺寸较小的区域 + 由于区域生成算法的固有错误,会产生一些不期望的小区域.这在三角路径区域划分时,更为明显. + 如果小区域无法被合并到临近的区域,则这些小区域会被保留,不会改变.比如合并后会导致非简单多边形等原因导致无法合并. + [该参数取值过小,产生了一些细长三角形] + [该参数取值足够大,一些细长三角形被合并,网格有更少的细长三角形] + */ const float kRegionMergeSize = 6; - const int kVertsPerPoly = 1; + /* + 限制: >= 3 在体素到多边形转换过程中生成的多边形中每个多边形的最大顶点数 + 较大的取值会导致较高的处理耗时,但是会在寻路网格上生成较好的多边形. + 一般取6左右的值即可,更高的取值,收效递减*/ + const int kVertsPerPoly = 6; - const int kTileSize = 48; + const int kTileSize = 64; //单个瓦片大小 - const float kDetailSampleDist = 1; + const float kDetailSampleDist = 6; const float kDetailSampleMaxError = 1; const int kMaxTiles = 0; @@ -274,4 +288,3 @@ struct BuilderParams rcContext* ctx = nullptr; dtTileCache* tile_cache = nullptr; }; -