基于导航网格的A星寻路(Navigation mesh)
Posted on 2010-09-26 13:00 Zhiyett 阅读(7024) 评论(14) 编辑 收藏
最近花了几个月的时间实现了导航网格寻路和导航网格自动生成。
□导航网格数据结构定义
由于数据之间有着层级关系,所以采用XML进行定义。
navmesh基本元素:顶点(Verts)+可走边(Edges)+凸多边形(Polys)
□导航网格寻路
1.以凸多边形为节点,以可走边为relation,进行A星寻路。
2.寻路结果使用LOS算法进行路径平滑,其中视线采用Z轴横切面而不是直线来实现。
3.寻找凸多边形。先使用八叉树进行空间划分,然后根据点跟AABB盒相交进行查找。
□导航网格自动生成
主要是提供
1.Cleaner:合并重复的顶点(即焊接顶点)、删除共线情况、删除没有用到的顶点、删除没有的poly(即删除不规范、删除面积过小)、重置顶点ID和Poly ID。
2.MergingPolys:合并多边形,包含对相同边进行合并和32合并。
3.PolygonClipping:多边形剪切,地形数据必须是三角网格(若不是,可以使用Triangulate三角化)。输入障碍物后,使用包裹法(Jarvis步进法)进行构造凸多边形,然后再对各个三角网格进行剪切操作。
4.Triangulate:三角化。
5.GeneratingEdges:生成边操作。
6.Deleter:删除指定顶点、删除指定poly、删除指定Edge
7.BoudingBoxCreater:障碍物的输入可以使用AABB盒,但只对有连接关系的三角网格进行生成包围盒,如一座桥上的两个栅栏,必须为它生成2个AABB盒,而不能只生成一个。
8、NavMesh:导入、导出、遍历操作等
9、Poly:遍历操作、顶点删除操作等
参考资料:
1. 焊接顶点,《3d数学基础:图形与游戏开发》14.4.2节
2. 32合并, 《人工智能游戏编程真言》里面有一篇 “4.3 建立接近最优的导航网格”专门介绍如何建立 基于导航网格的3d寻路,4.3.6节。
3. http://www.ai-blog.net/archives/000152.html
4.生成边: http://www.terathon.com/code/edges.php
5.根据点生成三角网格,delaunay算法, http://www.travellermap.com/tmp/delaunay.htm
http://local.wasp.uwa.edu.au/~pbourke/papers/triangulate/
6.几何操作:《计算机图形学几何工具算法详解》
7. 。。。。。
分享到:
相关推荐
其中,“导航网格”(Navigation Mesh,简称NavMesh)是Unity内置的一种高级寻路系统,它允许游戏中的AI角色根据环境动态计算出最优路径。本文将详细介绍Unity中的NavMesh系统,包括其原理、设置方法以及如何利用该...
导航网格(Navigation Mesh,简称NavMesh)是一种数据结构,它将复杂场景的可行走区域抽象成一个网格,每个网格称为一个节点。通过这个网格系统,AI可以快速找到从起点到终点的最短路径,而无需考虑实际环境中的每个...
Unity3D实现NavMesh导航网格寻路 NavMesh导航网格寻路是 Unity3D 中的一种自动寻路技术,主要用于游戏世界中动态物体的自动寻路。NavMesh系统使用一个名为“导航网格代理”(NavMeshAgent)的组件来控制游戏对象...
NavMesh(Navigation Mesh,导航网格)技术应运而生,它是一种高效、灵活的路径规划解决方案。本文将深入探讨NavMesh寻路算法的核心原理,并通过`navMeshTest-master`项目中的源码分析其具体实现。 NavMesh,...
4. **寻路算法**:Unity的导航系统使用A*(A-Star)寻路算法,这是一种高效的路径搜索算法,适用于有障碍的网格环境。A*算法结合了启发式信息,使得角色能够快速找到从起点到终点的最短路径。 5. **路径规划**:当...
A星寻路(A* Search)算法是一种在图形或网格中寻找从起点到终点最短路径的高效搜索算法。它结合了Dijkstra算法的全局最优性和 Greedy Best-First Search的局部优先性,通过引入启发式函数来指导搜索,使得在有限...
Unity 游戏引擎中的导航网格(Navigation Mesh,简称 NavMesh)系统是实现游戏对象自动寻路的重要工具。它允许开发者创建复杂的游戏环境,并让角色能够智能地在其间移动。本篇将详细介绍Unity导航网格寻路的相关参数...
Unity中的导航网格(NavMesh)系统是游戏开发中用于实现智能角色自动寻路的重要工具。它允许游戏对象在复杂环境中自动生成并跟随合理的路径。以下是对Unity导航网格寻路相关参数的详细解释: 1. **Object(物体)...
它使用A star和Funnel算法计算导航网格上的路径。 用法 将npm包到您的项目中: npm install babylon-navigation-mesh --save 或克隆: git clone git@github.com:wanadev/babylon-navigation-mesh.git npm ...
sudo apt install ros-melodic-mesh-navigation 从源安装可以使用rosdep安装所有依赖项rosdep install mesh_navigation 作为显式依赖项,我们指的是以下由我们开发的ROS程序包: 将pluto_robot软件包用于
谷歌的开源导航网格寻路算法源码,用于游戏寻路非常合适。
导航网格(Navigation Mesh,简称 NavMesh)是一种用于表示环境中可行走区域的数据结构。它通过一组二维区域来描绘出一个复杂的环境中可以行走的空间,这对于游戏和模拟场景中的路径规划非常重要。传统上,大多数...
在IT行业中,导航寻路(Navigation Pathfinding)是游戏开发、机器人学以及自动化系统中的一个核心概念。它涉及如何让虚拟角色或实体在复杂环境中自动找到从起点到目标点的最佳路径。本文将深入探讨导航寻路的相关...
uesvon是一款专为Unreal Engine设计的3D导航网格(Navmesh)生成和寻路插件,它在游戏开发中扮演着至关重要的角色。Unreal Engine是一个强大的游戏开发平台,以其高质量的图形渲染和实时编辑能力闻名。在这个环境中...
在本主题中,“mfc vc c++ navmesh自动寻路(改)”着重讨论的是如何在C++环境下,结合Microsoft Foundation Classes (MFC)和Visual C++(VC)来实现基于NavMesh的自动寻路算法。NavMesh,即导航网格,是一种用于表示...
在Unity引擎中,RTS(Real-Time Strategy)游戏开发中,导航网格(Navigation Mesh,简称NavMesh)系统是一个至关重要的部分。它允许游戏中的AI角色(例如,士兵、单位等)能够自主移动并找到从一个位置到另一个位置...
在游戏开发领域,导航寻路(Navigation Mesh,简称NavMesh)是一种常见的技术,用于实现游戏角色在复杂场景中的智能移动。PatrolJS是一个基于JavaScript的库,用于创建NavMesh,而将其转换为ActionScript 3(AS3)...
NavMesh 系统可以自动生成游戏世界中的导航网格,并提供了强大的寻路功能。 NavMesh 系统的组件包括: * NavMesh Agent:用于导航网格代理的组件。 * NavMesh Static:用于标记静态对象的组件。 * NavMesh Baking...