服务器3D场景建模(六):RecastNavigation介绍

本文详细介绍RecastNavigation寻路系统,包括其核心概念NavMesh及其实现原理,对比体素概念,阐述Recast与Detour两大模块功能,并提供实际应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RecastNavigation

RecastNavigation是一款非常强大的寻路系统,被广泛的应用于各大游戏引擎中。如Unreal, Unity等。

github网址:https://github.com/recastnavigation/recastnavigation

与体素的关系

在前面章节,介绍过《天涯明月刀》中,使用了体素的概念,来实现服务器端3D场景。

理解了RecastNavigation的实现后,对比下,前者太简单粗暴了!

RecastNavigation在体素概念的基础上,进一步提炼,最终使用NavMesh的概念来表达3D场景。

提炼过程如下:

3D场景 => 多层体素 集合 => 邻接凸多边形 集合

RecastNavigation最终输出的,也是基于运作的数据是:邻接的凸多边形集合

即使用了邻接的凸多边形集合描述了一个3D场景。

加之A*寻路算法,使3D场景的可达性得到保证。

NavMesh中文名称:导航网格

A*寻路算法即为导航;凸多边形即为网格。

因此 NavMesh = A* + Convex Polygon

RecastNavigation有哪些内容

主要包含2大类:

  1. Recast,用于生成邻接的凸多边形集合数据
  2. Detour,基于邻接的凸多边形集合的A*寻路算法

细分Recast生成的数据,又有3类:

  1. Solo Mesh,纯粹的邻接凸多边形集合
  2. Tile Mesh,基于tile划分的N个邻接凸多边形集合
  3. Temp Obstacles,支持动态障碍物的,基于tile划分的N个邻接凸多边形集合

以上3种各有各的适合场景,按业务需求选择,或结合之。

RecastNavigation能做啥

  • 能表达一个3D场景
  • 能接近精确的赋予游戏对象(x、y、z)属性
  • 能判断3D场景表面2个点的可达性
  • 能动态改变3D场景地形

RecastNavigation不足

RecastNavigation所有操作都基于地表面。

因此,对空中的对象的交互,用它是无法完成的。

通常这时会结合其他引擎,如physx。

下面是引用作者的原话

Recast raycast checks “walkability” along the navmesh. You will need a starting point on the navmesh for that. To raycast against level geometry, you should use some other system, i.e. physics or roll your own.

RecastNavigation使用例子

本人的RecastNavigation封装库:

github地址:https://github.com/fananchong/NavMeshScene

欢迎指正错误与不足

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fananchong2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值