当前位置: 首页 > news >正文

寻路网格简介

寻路网格

寻路网格是对地图用于寻路的简化描述,将地图简化表示成一个个网格区域,每个区域是寻路算法中的一个点,寻路算法负责找到如何从一个点到达另外一个点。

栅形网格

最常见的是寻路网格,也即建立一个二维数组,每个坐标表示长宽都为n米的区域可通行的情况,可以用0表示可通行,1表示有障碍不可通行,n的大小根据项目情况确定,一般可以为1,其大小影响内存。需要在内存占用量与寻路细节间做权衡。

更进一步的,为表示角色在不同区域行走的快慢,可以基于不同区域不同的权重。此时,可用0表示有障碍,1-10等表示区域权重。

网格通常需要在导出场景数据时做数据导出,同时还需要做可视化、扩展编辑支持,以便可以动态调整。因为地形是多样的,没有一个统一的规则可以确保生成的导航网格与地图完全一致。

导出的数据可以是一个bytes文件,也可以是类似地形贴图的一张RGB图片,例如(255,255,255)表示可通行,(0,0,0)表示不可通行,(100,100,100)表示沼泽区域等,图片有更多的数据位,能表示更多丰富的情况。

路点网格

在地图上设置特定的点,点与点之间的连线就是需要行走的路径。

寻路时找到与起始点最近的路点,与目标点最近的路点,根据路点间的连线即可找到一条路径,注意两个路点的连线不一定要是直接,可以做曲线编辑。

路点需要支持可视化的编辑,通常需要专门的地图编辑器,用于增删路点、调整连线、读写数据等。

路点是人工设置的,可以很轻易找到合理的路径,但为应对各种不同的情况,设置大范围可行走区域时,编辑路点的工作量会越来越大。

三角网格

三角网格可以看作对路点网格的优化,可以通过模型Mesh计算出障碍区域的边界,得到可行走和不可行走的区域,可行走的区域是一系列线段连接构成的平面多边形。三角网格中需要将其分解为一系列不相交的三角形。

这涉及平面多边形的三角剖分问题。常见的算法包括耳切法、单调多边形剖分、动态规划方法、Delaunay三角剖分等。

在栅形网格中,一个点表示一个正方形区域;在路点网格中,一个点表示一个路点;在三角网格中,一个点表示一个三角形区域。

其邻近点即为邻近的三个三角形区域,相邻距离可以用两个三角形的中心点距离表示,与目的地的距离可以通过三角形中心点和目标所在三角心的中心点距离来表示

可以结合地形特点划分不同的三角形区域,给予不同权重。

如此,自然也可以利用A*寻路。

体素网格

栅形、路点、三角网格都是2D网格,对高度做了简化的处理,即低洼或凸起不超过一定高度,默认角色可以通行。

如果地形是多层次的,构建多层级2D网格依然无法实现在3D高度上的自由寻路,此时会用到体素网格。

RecastNavigation NavMesh

Unity和UE使用的寻路网格方案,也是目前主流的方案,之后单独做介绍,源码地址如下:

https://github.com/recastnavigation/recastnavigation

相关文章:

  • 基于django+vue的购物商城系统
  • Python基础之threading多线程同时运行程序
  • 开源链动2+1模式AI智能名片S2B2C商城小程序在KOC参与门店做透中的应用探索
  • 黑马程序员javaweb案例---初识管理系统(spring-boot)
  • Flutter:进度条封装
  • Python精进系列: isinstance 函数
  • 基于SpringBoot的“考研互助平台”的设计与实现(源码+数据库+文档+PPT)
  • 【Pandas】pandas Series asof
  • python可视化开源库
  • 在windows10系统上搭建npm仓库源
  • uni-app如何发布项目为app_2025
  • AI论文开题报告:分享5款写作软件
  • Linux中的基本指令(上)
  • Vue.js知识总结
  • Vue+Node.js+MySQL+Element-Plus实现一个账号注册与登录功能
  • 动态规划 -第1篇
  • 从青铜到王者:六大排序算法实战解析
  • Docker避坑实战:6大“诡异“问题深度拆解
  • 【GPT入门】第15课 用 prompt生成sql交互页面,创建可视化自然语言转sql生成器
  • PyTorch深度学习框架进阶学习计划 - 第20天:端到端图像生成系统
  • 提供东莞网站制作公司/怎样才能在百度上发布信息
  • 有专门做最佳推荐的网站/seo3的空间构型
  • 网站商品展示页怎么做/代做网页设计平台
  • wordpress文章点开是个新网页/宁波seo推荐推广平台
  • 网站流量超了/优化网站最好的刷排名软件
  • 企业网站建设综合实训心得体会/商品标题seo是什么意思