Recast细节网格:找回丢失的高度

张开发
2026/5/6 1:44:00 15 分钟阅读

分享文章

Recast细节网格:找回丢失的高度
从一个尴尬的场景说起导航网格生成完了。你兴冲冲地把NPC放进去测试。NPC从村口出发,沿着小路走向山顶的瞭望塔。路径规划完美——他选了最短的路线,绕过了所有障碍物,每一步都走在可行走区域内。但你盯着屏幕看了三秒钟,觉得哪里不对。NPC在爬坡的时候,脚下的地面是一个大三角形。这个三角形从山脚一直延伸到山顶,跨越了30米的高度差。三角形只有三个顶点。三个顶点的高度分别是0米、15米、30米。NPC走到三角形中间的时候,导航网格告诉他:你现在的高度应该是15米。但实际的地形在这个位置有一个平台,高度只有8米。NPC悬浮在空中。脚下7米处才是真正的地面。他像踩着隐形的玻璃地板一样,在空中飘过了整个山坡。一、问题出在哪?问题出在前面几步的"简化"上。回忆一下Recast的流程:体素化的时候,地形被切成了小方块。每个方块的高度精度是cellHeight,比如0.2米。这个精度是够的。但后面的每一步都在扔信息。轮廓提取的时候,大量的中间顶点被Douglas-Peucker算法删掉了。一条有50个顶点的锯齿边界,可能被简化成只有5个顶点的折线。那45个被删掉的顶点,每个都带着自己的高度信息。删掉之后,高度信息就没了。多边形生成的时候,三角形被合并成更大的凸多边形。合并的过程中,共享边上的顶点被去掉了。又丢了一批高度信

更多文章